Purpose
Nothing reaches main without passing the same checks, every time.
Required on every PR (web)
lint(ESLint + Prettier check),typecheck(tsc --noEmit),test(Vitest),build(Next build via Vercel).Supabase migrations validated:
supabase db lint/ dry-run against a throwaway db in CI ([TEAM: enable when migrations exist]).
Python
ruff check, ruff format --check, mypy, pytest.
C# plugins
dotnet build for every target configuration, dotnet test, dotnet format --verify-no-changes. Runs on a Windows runner.
Rules
CI config lives in .github/workflows/ci.yml from the template. Keep CI under ~5 minutes; cache dependencies. A flaky test is fixed or deleted the day it's noticed, never re-run into green.
Owner: Matt · Last reviewed: 2026-09