git clone <repo-url>
cd create-arcade-agent
npm install| Command | Description |
|---|---|
npm run build |
Compile TypeScript CLI to dist/ |
npm run dev |
Watch mode (tsc --watch) |
npm run lint |
ESLint check (src/ + templates/ TS) |
npm run lint:fix |
ESLint auto-fix |
npm run format |
Prettier format all files |
npm run format:check |
Prettier check (CI mode) |
npm run typecheck |
Type check without emitting (tsc --noEmit) |
- TypeScript/JS -- ESLint v9 (flat config) + Prettier. Covers
src/(CLI source) andtemplates/(TS/JS template files). Config:eslint.config.mjs,.prettierrc. - Python -- Ruff for
templates/langchain/. Config:templates/langchain/ruff.toml. Run withruff check templates/langchain/andruff format templates/langchain/. - Ignored --
dist/,templates/_shared/nextjs-ui/(has its own ESLint config for generated projects),.hbsfiles, and*.lockfiles are excluded from linting/formatting.
Always run npm run lint and npm run format:check before committing.
GitHub Actions runs on PRs to main and pushes to main:
- lint-and-build -- ESLint + Prettier + typecheck + build (Node 22)
- lint-python -- Ruff lint + format check on Python templates
- smoke-test-templates -- Scaffolds each template and verifies the generated project builds and lints
# Build the CLI
npm run build
# Scaffold a template
node dist/index.js test-project --template ai-sdk
# Verify the generated project
cd test-project
cp .env.example .env
bun run build
bun run lint- Template files are copied to a new directory named after your project
- Handlebars templates (
.hbsfiles) are rendered with your project name and template config - Dependencies are installed (
npm installfor TypeScript,python3 -m venv+pip installfor Python) - Database migrations run automatically (Drizzle Kit for TypeScript, Alembic for Python)
Releases are automatic — bump the version in
package.json, merge tomain, and the workflow handles the rest.
- Bump
versioninpackage.jsonon your branch (patch / minor / major) - Merge the PR to
main
The release workflow (.github/workflows/release.yml) automatically:
- Creates a
v*git tag - Builds the CLI and publishes to npm with provenance
- Creates a GitHub Release with auto-generated notes
Verify:
npm view @arcadeai/create-agent version # confirm version is live
npm audit signatures # verify provenance attestationBefore the workflow can publish, the package must exist on npm and npm Trusted Publishers must be configured.
-
Bootstrap the package on npm — the package must exist before Trusted Publishers can be configured:
npm run build npm publish --access public
(Requires being logged in as an org member:
npm login) -
Configure Trusted Publisher on npmjs.com:
- Go to
npmjs.com→@arcadeai/create-agent→ Settings → Publishing access - Add Trusted Publisher → GitHub Actions:
- Owner:
ArcadeAI - Repository:
create-arcade-agent - Workflow filename:
release.yml - Environment:
npm
- Owner:
- Go to
-
Create a GitHub Environment (optional, adds an approval gate):
- Repo Settings → Environments → New environment → name it
npm - Add required reviewers if desired
- Repo Settings → Environments → New environment → name it