Setup CI (GitHub Actions)
Use this skill when the user asks to set up CI, continuous integration, a build pipeline, or GitHub Actions.
Steps
Detect the project structure — check for
package.json(Node.js),requirements.txt/pyproject.toml(Python),go.mod(Go), or monorepo tools like Turborepo.Create
.github/workflows/ci.ymlFor a Node.js project:
name: CI on: push: branches: [main] pull_request: branches: [main] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 cache: npm - run: npm ci - run: npm run lint - run: npm run typecheck - run: npm test - run: npm run buildAdd type-checking — if
typecheckscript doesn't exist inpackage.json, add"typecheck": "tsc --noEmit".Add caching — the
actions/setup-nodecacheoption handlesnode_modules. For monorepos with Turborepo, add remote caching oractions/cachefor.turbo.Add matrix testing (optional) — if the user needs to test across Node versions or OS:
strategy: matrix: node-version: [18, 20, 22]Add deployment step (optional) — if requested, add a deploy job that runs only on
mainpushes, gated by the build job succeeding:deploy: needs: build if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm ci && npm run build - run: npx vercel deploy --prod --token=${{ secrets.VERCEL_TOKEN }}Add status badge — add the workflow status badge to the project README:

Notes
- Keep CI fast — run lint and typecheck in parallel using separate jobs if the pipeline is slow.
- Use
npm ci(notnpm install) for deterministic installs. - Store secrets (API keys, deploy tokens) in GitHub repository settings, never in the workflow file.