ck-fix

Fix a bug using Scout → Diagnose → Fix → Review → Finalize. Use when the user pastes an error message, stack trace, or test failure, or says "fix this bug", "something's broken", "tests are failing",

SKILL.md

GitHub

ck:fix — Structured Bug-Fix Pipeline

Modes — mutually exclusive, pick one (default = Standard: auto-approve on code-reviewer's own APPROVED verdict):

  • --fast — trivial issues (lint, type errors, build errors); skip scout, review, docs
  • --hard — mandatory review, no auto-approve

Report-scoped input (either replaces Step 0's free-text description):

  • --from-quality <report-path> — the target is exactly the blocking findings in a ck:quality report (plans/{slug}/quality/{phase}-quality-report.json).
  • --from-test <report-path> — the target is exactly the failures in a ck:test failure report.

With either flag, fix strictly what the report lists — no expanding scope to adjacent code the report doesn't cite, even if it looks related.


Step 0 — Prerequisites + Scope

--from-quality/--from-test: read the report; its findings/failures are the scope. Skip straight to Step 2 (report evidence replaces Scout).

Otherwise, if no error message, stack trace, or concrete description provided: → "Paste the error message or stack trace." Wait before continuing.

# Scope:
#   Description: {what the user said, or "from {report-path}"}
#   Quick?      → {yes/no — reason}
#   Mode:       {Standard | Quick | Hard}

If --fast or clearly a build/compiler/lint error: skip Step 1 → go directly to Step 2.


Step 1 — Scout

Skip if --from-quality/--from-test (the report already is the evidence).

Spawn scout with the bug description:

  • Greps for error patterns in logs and stack traces
  • Reads affected source files and maps dependencies
  • Checks recent git changes for related commits
// Evidence:
//   Error pattern: NullReferenceException at auth.ts:45
//   Affected files: auth.ts, session.ts
//   Recent change: commit a3f2b1 modified auth.ts (2h ago)

Step 2 — Diagnose

Spawn debugger with the scout evidence report, or with the report's findings/failures directly for --from-quality/--from-test:

  • Forms 2–3 hypotheses from the evidence (or takes the report's required_action/expected vs actual directly — it's already a confirmed root cause, not a hypothesis)
  • Confirms or rejects each against the codebase
  • Applies the minimal fix at the confirmed root cause, scoped to exactly what the report/evidence names
// Hypothesis A: null check missing in auth.ts:45 → CONFIRMED ✓
// Hypothesis B: race condition in session init   → REJECTED ✗
//
// Root cause: missing null guard on req.user before .validate()
// Fix applied: auth.ts:45
// Severity: HIGH | Scope: 1 file

Step 2.5 — Quality Re-verification (when applicable)

If the fix touched any file already covered by an issued quality receipt (plans/{slug}/quality/{phase}-receipt.json), that receipt is now stale — its fingerprint no longer matches the file's bytes. Run ck:quality --verify plans/{slug}/quality/{phase}-quality-report.json before Step 3. CHANGES_REQUIRED sends the fix back to Step 2; do not proceed to Review or Finalize on a stale or rejected receipt.

Skip this step only when the fix touched no file with an existing receipt.


Step 3 — Review

--fast: skip → Step 4.

Spawn code-reviewer: correctness, security, regressions. code-reviewer does not re-score maintainability that ck:quality already approved in Step 2.5 — it checks the bug fix itself, not architecture.

Standard: auto-approve on code-reviewer's APPROVED verdict. Up to 3 fix/re-review cycles (different approach each), then escalate. --hard: no auto-approve — human must explicitly approve before Step 4.


Step 4 — Finalize (MANDATORY)

project-manager (skip --fast): sync plan progress if bug was tracked. docs-manager (skip --fast): update docs if fix changes a public contract. git-manager (always): conventional commit + ask to push.

// git-manager → fix(auth): add null guard on req.user before validate
//            → Push to remote? [y/N]

Agents

Agent Step Modes
scout 1 Standard, --hard (skip if --fast or --from-quality/--from-test)
debugger 2 All
ck:quality --verify 2.5 All (only when a touched file has an existing receipt)
code-reviewer 3 Standard, --hard (skip for --fast)
project-manager 4 Standard, --hard (skip for --fast)
docs-manager 4 Standard, --hard (skip for --fast)
git-manager 4 Always (mandatory)