SuperAPI AI Directory

setting-up-ci

General & other

View repository

Updated 10-15 21:05

About this skill

Setup CI (GitHub Actions)

Use this skill when the user asks to set up CI, continuous integration, a build pipeline, or GitHub Actions.

Steps

  1. Detect the project structure — check for package.json (Node.js), requirements.txt / pyproject.toml (Python), go.mod (Go), or monorepo tools like Turborepo.

  2. Create .github/workflows/ci.yml

    For 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 build


3. **Add type-checking** — if `typecheck` script doesn't exist in `package.json`, add `"typecheck": "tsc --noEmit"`.

4. **Add caching** — the `actions/setup-node` `cache` option handles `node_modules`. For monorepos with Turborepo, add remote caching or `actions/cache` for `.turbo`.

5. **Add matrix testing (optional)** — if the user needs to test across Node versions or OS:

```yaml
strategy:
  matrix:
    node-version: [18, 20, 22]
  1. Add deployment step (optional) — if requested, add a deploy job that runs only on main pushes, 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 }}
    
  2. Add status badge — add the workflow status badge to the project README:

    ![CI](https://github.com/OWNER/REPO/actions/workflows/ci.yml/badge.svg)
    

Notes

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