Add CI pipeline with linting, formatting, and smoke tests#2
Merged
teallarson merged 15 commits intomainfrom Feb 25, 2026
Merged
Add CI pipeline with linting, formatting, and smoke tests#2teallarson merged 15 commits intomainfrom
teallarson merged 15 commits intomainfrom
Conversation
- ESLint v9 + Prettier for TypeScript/JS across src/ and templates/ - Ruff for Python linting/formatting in templates/langchain/ - GitHub Actions CI with 3 jobs: lint-and-build (Node 18/22), lint-python (Ruff), and smoke-test-templates (scaffold + build) - Generated TS projects now ship with Prettier config - Fix existing lint issues (unused imports, empty catch blocks) - Apply consistent formatting across all source files Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add Development section to README with scripts, linting/formatting details, CI overview, and local testing instructions - Create root CLAUDE.md with project structure, commands, and CI info - Update template CLAUDE.md files with format/ruff commands Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Key on both the root lockfile and template package.json so that scaffolded project deps (Next.js, React, etc.) are cached across runs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Next.js requires useSearchParams() to be wrapped in a <Suspense> boundary for static generation. Extracted dashboard content into a DashboardContent component wrapped by the default export. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace bare `Function` type with typed signature in plan-route-body.hbs - Remove setState-in-useEffect pattern in chat-panel.tsx (derive error instead) - Add fail-fast: false to smoke test matrix so all templates report independently - Fix stale "Node 18 & 22" reference in README Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add `typecheck` script (`tsc --noEmit`) to ai-sdk and mastra template package.json - Add explicit type check step in smoke test CI (runs before build for clearer errors) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add ty.toml for Python type checking (matches Arcade monorepo tooling) - Enhance ruff.toml with bugbear, bandit, comprehensions, simplify, pyupgrade rules - Fix all new Ruff violations (contextlib.suppress, raise-from, set comprehension, etc.) - Replace py_compile with ruff + ty in CI smoke tests for langchain template - Update langchain CLAUDE.md with ty command Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Ruff isort requires sqlalchemy (third-party) to be grouped before alembic/app (first-party) when running from the project directory. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ty doesn't yet understand Pydantic field aliases or SQLAlchemy Column types, causing false positives with ChatAnthropic/ChatOpenAI and ORM fields. Ignore these rules until ty matures. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ty doesn't narrow through hasattr() or isinstance+continue patterns, causing false positives with FastAPI route inspection and asyncio gather results. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Align CLAUDE.md with the current workflow, which runs lint-and-build on Node 22 only. Co-authored-by: Cursor <cursoragent@cursor.com>
Reuse the built CLI artifact across smoke jobs, reduce package manager overhead, add pip caching for langchain, and cancel superseded branch runs. Co-authored-by: Cursor <cursoragent@cursor.com>
Detect changed areas and only run Python linting and per-template smoke checks when relevant, while still running full coverage for shared/core changes. Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ensures CLI, templates, and generated code all lint, format, and build.
Summary
src/andtemplates/templates/langchain/lint-and-build— ESLint + Prettier + typecheck + build on Node 18 & 22lint-python— Ruff check + format on Python template filessmoke-test-templates— Scaffolds each template (ai-sdk, mastra, langchain) and verifies it builds/lintsformat/format:checkscriptsTest plan
npm run lintpassesnpm run format:checkpassesnpm run typecheckpassesnpm run buildpassesruff check templates/langchain/passesruff format --check templates/langchain/passes🤖 Generated with Claude Code