Back to skills
SKILL.md
Collection
ASecurityUse when code-verification fails - analyzes verification failures, identifies root causes, corrects the implementation, and re-verifies. This skill fixes code to meet acceptance criteria, not modifies requirements to match code.
- 24 stars
- 0 votes
- 0 copies
- 1 view
- Added September 8, 2026
Works with
Security analysis
100/100Pro scans all 21 files and shows the line behind each finding
npx -y skills add mattnigh/skills_collection --skill collection --agent claude-codeAre you the author of Collection?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/mattnigh-collection-f3c699f7)---
name: code-correction
description: Use when code-verification fails - analyzes verification failures, identifies root causes, corrects the implementation, and re-verifies. This skill fixes code to meet acceptance criteria, not modifies requirements to match code.
---
# Code Correction - Fix Failed Verification
Correct code that failed verification so it passes acceptance criteria.
> **Critical Distinction:** This corrects **code** to meet **requirements** (stories remain unchanged).
> See `CLAUDE.md` section "Quality Assurance Terminology" for definitions.
**Announce:** On activation, say: "I'm using the code-correction skill to fix the implementation so it passes verification."
**Database:** `.claude/data/story-tree.db`
**Critical:** Use Python sqlite3 module, NOT sqlite3 CLI.
## Purpose
Bridge the gap between failed verification and passing verification by **correcting the code implementation**. Stories and acceptance criteria remain the source of truth - only the code changes.
## When to Use
- After `code-verification` reports FAIL
- When story stage is `verifying` with `hold_reason='broken'`
- When acceptance criteria tests fail
- When user says "fix verification failures", "correct the code", "make tests pass"
## Workflow
### Step 1: Load Verification Failure Report
**Query story with failed verification:**
```python
python -c "
import sqlite3, json
conn = sqlite3.connect('.claude/data/story-tree.db')
conn.row_factory = sqlite3.Row
stories = [dict(row) for row in conn.execute('''
SELECT s.id, s.title, s.description, s.stage, s.hold_reason, s.notes,
(SELECT MIN(depth) FROM story_paths WHERE descendant_id = s.id) as node_depth
FROM story_nodes s
WHERE s.stage = 'verifying'
AND s.hold_reason = 'broken'
AND s.terminus IS NULL
ORDER BY node_depth ASC
''').fetchall()]
print(json.dumps(stories, indent=2))
conn.close()
"
```
**Extract failure details from notes:**
- Parse verification report embedded in notes
- Identify which criteria failed
- Identify which tests failed
- Extract error messages and stack traces
### Step 2: Analyze Failure Root Cause
For each failed criterion/test:
1. **Read the failing test code** to understand expected behavior
2. **Read the implementation code** to understand current behavior
3. **Identify the gap** between expected and actual
**Failure categories:**
| Category | Description | Correction Strategy |
|----------|-------------|---------------------|
| Missing | Feature not implemented | Implement missing code |
| Incorrect | Wrong behavior | Fix logic error |
| Incomplete | Partial implementation | Complete the implementation |
| Broken | Previously worked, now fails | Fix regression |
| Integration | Works alone, fails with siblings | Resolve conflict |
### Step 3: Plan Corrections
Before making changes, create a correction plan:
```markdown
## Correction Plan for Story [ID]
### Failure 1: [Criterion/Test name]
- **Root Cause:** [Description of why it fails]
- **Files to Modify:** [List of files]
- **Changes Required:** [Description of changes]
- **Verification Method:** [How to confirm fix]
### Failure 2: ...
```
**Planning rules:**
- Address failures in dependency order (if A depends on B, fix B first)
- Keep changes minimal - fix only what's broken
- Avoid refactoring - this is correction, not improvement
- Don't change tests - the tests define expected behavior
### Step 4: Implement Corrections
For each failure in the plan:
1. **Make minimal code changes** to fix the specific failure
2. **Run the specific failing test** to verify the fix
3. **Run related tests** to check for regressions
4. **Commit the fix** with a clear message
**Commit message format:**
```
fix: [criterion/test name] - [brief description]
Story: [ID]
Criterion: [number]
```
### Step 5: Re-verify
After all corrections:
```bash
python .claude/skills/code-verification/generate_report.py <story_id>
```
**If verification passes:**
- Update story stage and clear hold
- Report success
**If verification still fails:**
- Analyze new failures
- Return to Step 2 (max 3 iterations)
- If still failing after 3 attempts, escalate to human
### Step 6: Update Story Status
**On successful correction:**
```python
python -c "
import sqlite3
from datetime import datetime
conn = sqlite3.connect('.claude/data/story-tree.db')
conn.execute('''
UPDATE story_nodes
SET hold_reason = NULL,
notes = notes || '\n[Correction ' || datetime('now') || '] Fixed verification failures',
updated_at = datetime('now')
WHERE id = ?
''', ('STORY_ID',))
conn.commit()
conn.close()
"
```
**On correction failure (max attempts reached):**
```python
python -c "
import sqlite3
from datetime import datetime
conn = sqlite3.connect('.claude/data/story-tree.db')
conn.execute('''
UPDATE story_nodes
SET hold_reason = 'escalated',
human_review = 1,
notes = notes || '\n[Correction ' || datetime('now') || '] Unable to fix after 3 attempts - escalating',
updated_at = datetime('now')
WHERE id = ?
''', ('STORY_ID',))
conn.commit()
conn.close()
"
```
## Mode Detection
**CI Mode** activates when:
- Environment variable `CI=true` is set, OR
- Trigger phrase includes "(ci)" like "correct code (ci)"
**CI Mode behavior:**
- No confirmation prompts
- Structured JSON output
- Auto-escalate after max attempts
**Interactive Mode** (default):
- Present correction plan for approval
- Pause between corrections for review
- Allow human to guide approach
## Output Format
### Correction Report (YAML)
```yaml
correction_report:
story_id: "1.2.3"
title: "Feature Title"
corrected_at: "2025-12-29T10:30:00Z"
failures_addressed:
- criterion: "User can export data as CSV"
root_cause: "Missing CSV header row"
files_modified: ["src/exporter.py"]
tests_fixed: ["tests/test_export.py::test_csv_header"]
- criterion: "Export includes timestamps"
root_cause: "Timestamp format incorrect"
files_modified: ["src/exporter.py"]
tests_fixed: ["tests/test_export.py::test_timestamp_format"]
verification_result: pass # pass | fail
attempts: 1
commits: ["abc1234"]
```
### CI Mode Output (JSON)
**Success:**
```json
{
"story_id": "1.7",
"status": "corrected",
"failures_fixed": 3,
"attempts": 1,
"commits": ["abc1234", "def5678"],
"verification_result": "pass"
}
```
**Failure (escalated):**
```json
{
"story_id": "1.7",
"status": "escalated",
"failures_remaining": 1,
"attempts": 3,
"reason": "Unable to fix criterion 2 after 3 attempts",
"recommendation": "human_review"
}
```
## Correction Principles
### DO
- **Fix the code** - never modify acceptance criteria or tests
- **Keep changes minimal** - only fix what's broken
- **Preserve test intent** - tests define correct behavior
- **Document root causes** - help future debugging
- **Verify after each fix** - catch regressions early
### DO NOT
- Modify acceptance criteria to match broken code
- "Fix" tests to pass with broken implementation
- Refactor unrelated code while correcting
- Add features while correcting bugs
- Skip verification after corrections
## Exit Conditions
| Result | Transition |
|--------|------------|
| All failures fixed | Clear `hold_reason`, keep stage at `verifying` for re-verification |
| Max attempts reached | Set `hold_reason='escalated'`, `human_review=1` |
## Related Skills
- **code-verification:** Identifies failures this skill corrects
- **debug-orchestrator:** Handles complex debugging scenarios
- **code-review:** Reviews code quality (separate from verification)
- **human-validation:** Human judgment after verification passes
## References
- **Verification Skill:** `.claude/skills/code-verification/SKILL.md`
- **Database:** `.claude/data/story-tree.db`
- **QA Terminology:** `CLAUDE.md` (Quality Assurance Terminology section)
Files in this skill
- 0Chan-smc__claude-code-workflow-lab__claude__skills__frontend-dev-guidelines__SKILL.md
- 17hz__nextjs-template__claude__skills__example-skill__SKILL.md
- 1ambda__dataops-platform__claude__skills__context-synthesis__SKILL.md
- 1natsu172__dotfiles__claude__skills__git-analysis__SKILL.md
- 1natsu172__dotfiles__claude__skills__github-pr-best-practices__SKILL.md
- 23Maestro__prospect-pipeline__claude__skills__npid-fastapi-skill.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-code-javascript__SKILL.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-code-python__SKILL.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-expression-syntax__SKILL.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-mcp-tools-expert__SKILL.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-node-configuration__SKILL.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-workflow-patterns__SKILL.md
- 3x-Projetos__claude-memory-framework__claude__skills__scientist__SKILL.md
- 5MinFutures__futures-arena__claude__skills__migration-tracker__SKILL.md
- 5MinFutures__futures-arena__claude__skills__planning-guidelines__SKILL.md
- 92Bilal26__TaskPilotAI__claude__skills__assessment-builder__SKILL.md
- 92Bilal26__TaskPilotAI__claude__skills__book-scaffolding__SKILL.md
- 92Bilal26__TaskPilotAI__claude__skills__code-validation-sandbox__SKILL.md
- 92Bilal26__TaskPilotAI__claude__skills__exercise-designer__SKILL.md
- 92Bilal26__TaskPilotAI__claude__skills__learning-objectives__SKILL.md
Attribution
Comments
Loading comments…