.github/workflows/.
CI Pipeline (ci.yml)
Runs on every pull request targeting main. All jobs must pass before merging.
Jobs
The first three jobs (lint, typecheck, test) run in parallel. The build job only runs after all three succeed, catching integration issues early without wasting CI minutes.
Claude Code Review
An AI reviewer checks every PR against the project rules in AGENTS.md. It looks for:- TypeScript violations (
any, non-null assertions, missing types) - Backend layer violations (routes importing from
@folksbase/db) console.logusage (should use the structured logger)process.envusage (should use the typedenvmodule)- OFFSET-based pagination (should use cursor-based)
- Redis calls without TTL
- Inngest jobs without
step.run()wrappers
Concurrency
Storybook Deployment (deploy-storybook.yml)
Deploys the Storybook component documentation to Netlify. Only triggers when relevant files change.
Trigger Paths
Process
- Installs dependencies with
pnpm install - Builds Storybook with
pnpm --filter @folksbase/web build-storybook - Deploys the static output to Netlify
NETLIFY_AUTH_TOKEN and NETLIFY_SITE_ID secrets in the repository settings.
Platform Auto-Deploys
These aren’t GitHub Actions — they’re platform-native deploy hooks:Local Equivalents
The CI pipeline mirrors the local git hooks:
If your code passes the local hooks, it should pass CI. The hooks are configured in
.githooks/ and activated automatically by pnpm install.
Required Secrets
Add these in your GitHub repository under Settings → Secrets and variables → Actions.