| applyTo | .github/workflows/**/*.{yml,yaml} |
|---|
- Pin action versions to at least a named tag (
actions/checkout@v4); prefer full commit SHA for security-critical actions - Set
permissionsexplicitly on any job that needs elevated access (e.g.,pull-requests: write) — do not rely on repository-wide defaults - Never print secret values to logs — use GitHub's secret masking for dynamic secrets
# Prefer explicit permissions scoping
permissions:
pull-requests: write
contents: read- Node 22 is the minimum supported version (
engines.node >= 22.0.0inpackage.json) - The CI matrix must include at least Node 22 and the latest even-numbered LTS — do not drop below 22
node:sqlite(built-in, Node 22.5+) is used by OpenCode and Crush parsers — do not add third-party SQLite packages
- Use
pnpmexclusively — notnpm cioryarn— to stay consistent withpnpm-lock.yaml - Always run
pnpm install --frozen-lockfilein CI to prevent accidental lockfile mutations - Use
pnpm/action-setup@v4for pnpm setup
- Run
pnpm run build(TypeScript compile) beforepnpm test—tscvalidates type correctness; test failures may be caused by type errors caught at build time - The
test-qualityjob posts a PR comment summarizing test counts and flags source-file changes without corresponding test changes — do not remove this job without an equivalent replacement - The
test-qualityjob should only run onpull_requestevents (not push tomain)