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", "I'm getting an error". Also accepts `--from-quality <report>` or `--from-test <report>` to fix exactly the findings/failures a report lists. Modes (pick one): --fast (trivial errors — lint, type, build — skip scout and review), --hard (mandatory review, no auto-approve).
Installs into .claude/skills of the current project.
Are you the author of Ck Fix?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/dangquangse-ck-fix-23a464cc)
---
name: ck-fix
description: >-
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", "I'm getting an error". Also accepts `--from-quality <report>` or `--from-test <report>` to fix exactly the findings/failures a report lists. Modes (pick one): --fast (trivial errors — lint, type, build — skip scout and review), --hard (mandatory review, no auto-approve).
user-invocable: true
---
# 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) |