{
  "//": "Declare this project's canonical commands ONCE so the quality gate, /ship, and reviewers all run the same thing instead of guessing. Copy to .claude/commands.json and fill in. An absent key means 'not declared — auto-detect'; a key set to \"\" means 'this project has no such check' (reported as skipped, never as passed). Unknown keys and non-string commands are a config error — the gate blocks on them instead of guessing. Use the exact command you'd type (monorepo filters, workspaces, etc.).",
  "//typecheck": "FAST, per edit: the quality gate runs this after every edit to a typed-language file (TypeScript, C#), ahead of lint. Keep it quick.",
  "typecheck": "pnpm -w typecheck",
  "//dotnet": ".NET: point typecheck at the whole solution, e.g. \"dotnet build App.sln -nologo -v q\". A declared command counts for every edited file, so one that builds a single project would record edits in the other projects as verified. Without a declared command the gate builds the nearest .csproj itself (restoring on the first build; 120s limit unless a timeout is set).",
  "//lint": "FAST, per edit: runs for JS/Python/Go/Rust edits, and for typed ones when typecheck is absent or \"\". If it lints the whole repo it runs on every code edit — keep it fast or scope it.",
  "lint": "pnpm -w lint",
  "//test-file": "FAST, per edit: the ONE test covering the edited file. test-run.sh substitutes {file} with the related test path and runs it, so the loop closes at the edit rather than at the stop — and a test that never went red gets called out. Must contain {file}; without it the command would run the whole suite on every edit, and the gate reports it as a config error. \"\" or absent = no per-edit test run.",
  "test-file": "pnpm vitest run {file}",
  "//timeout": "Optional: seconds the per-edit check may run before its process group is killed and the edit is recorded as 'timeout' — e.g. \"timeout\": 90. Default 30 (120 for a .NET build). The CCK_QUALITY_GATE_TIMEOUT env var wins.",
  "//test": "FULL, never per edit: the whole suite. /ship and the qa-reviewer use it as the authoritative gate.",
  "test": "pnpm -w test",
  "//build": "FULL, never per edit: the production build, for /ship.",
  "build": "pnpm -w build",
  "//smoke": "FULL, never per edit: a one-line smoke check (hit an endpoint, run the CLI) that proves real behavior — the manual step CLAUDE.md's Verification mandates. \"\" = none declared: /ship asks for a manual smoke test instead.",
  "smoke": ""
}
