Skip to main content
skill CX Codex

backprop — Claude Code skill: what it does, how to install

Turns bug fixes into specification updates in SPEC.md. The agent traces the failure, drafts a testable invariant, adds a failing test, and commits everything together.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add JuliusBrussee/cavekit --skill backprop -a claude-code
Open on GitHub

What backprop does

Plan-then-execute workflows fix broken code and move on. The backprop protocol ties every defect back to SPEC.md so the same bug class cannot recur. It triggers automatically when /build tests fail, when a user reports a problem, during an incident post-mortem, or when /check flags a VIOLATE state.

Execution follows six steps. The agent traces the exact line of failure and states the root cause in one sentence. Next, it evaluates whether a new §V invariant is required and logs the issue in the §B section. It writes a failing test named after the invariant before touching any implementation files. Once tests pass, the spec edit, test, and code fix merge into a single git commit.

Not every issue earns a new invariant. Purely mechanical typos, one-time migrations, and external dependency failures bypass §V creation, though the §B log entry remains mandatory. The protocol uses no separate dashboards or log files. Your SPEC.md file and git log serve as the entire source of truth.

What it helps with

  • stop bug recurrence by adding testable invariants to SPEC.md
  • document the root cause in the specification §B table
  • generate a failing test before writing the code fix
  • bundle specification changes, tests, and code fixes into a single commit

Example prompts for the agent

  • Tests failed during /build verification, run backprop to trace the root cause and update SPEC.md
  • A user reported duplicate charges on retry, execute backprop to add a §V invariant and a test
  • Trace this production incident and log the failure mode to §B using backprop

How to install backprop

1Skills CLI (Vercel)

npx skills add JuliusBrussee/cavekit --skill backprop -a claude-code

2Manually: put the files in place

~/.claude/skills/backprop/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/backprop/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about backprop

How do I install backprop in Claude Code?

Run npx skills add JuliusBrussee/cavekit --skill backprop -a claude-code. The skill will be placed into ~/.claude/skills/backprop/SKILL.md.

What does the backprop skill do?

It guides the assistant through a bug-to-spec workflow. The agent identifies the failure cause, updates the §B log in SPEC.md, formulates an invariant §V, writes a regression test, and commits the result.

When should a §V invariant be skipped?

Skip adding a §V invariant when the bug is an isolated typo, a one-off migration, or an external dependency issue. Even in those cases, the agent still records a §B entry.

Source text

SKILL.md · MIT
---
name: backprop
description: |
  Bug → spec protocol. When a bug is found or a test fails, trace the cause,
  decide whether a new §V invariant would catch recurrence, append to §B.
  This is the one non-obvious thing SDD does that plan-then-execute doesn't.
  Triggers on test failure, bug report, post-mortem, or explicit user ask.
---

# backprop — bug → spec

Plan-then-execute fixes the code & forgets.
SDD fixes the code AND edits spec so recurrence is impossible.
That edit is backprop.

## WHEN TO BACKPROP

- Test failed at `/build` verification.
- User reports bug.
- Post-mortem after production incident.
- `/check` flags VIOLATE with root cause found.

## SIX STEPS

### 1. TRACE
Read failure output / bug report.
Find exact file:line of wrong behavior.
Name root cause in one caveman sentence.

### 2. ANALYZE
Ask three questions:
- Would a new §V invariant catch this class of bug? (most common: yes)
- Is §I wrong — did spec claim shape the code cannot deliver? (sometimes)
- Is §T wrong — did we build the wrong thing? (rare but real)

### 3. PROPOSE
Draft the spec change. Never skip §B; §V/§I/§T are case-by-case.

Template:
```
§B row: B<next>|<date>|<root cause>|V<N>
§V line: V<next>: <testable rule that would have caught it>
```

Example:
```
§B row: B3|2026-04-20|refund job ran twice on retry|V7
§V line: V7: ∀ refund → idempotency key check before charge reversal
```

### 4. GENERATE TEST
New invariant without test = lie. Add failing test first.
Name test so it cites the invariant: `TestV7_RefundIdempotent`.

### 5. VERIFY
Fix code. Run test. Must pass. Run full suite. Must not regress.

### 6. LOG
Commit spec edit + test + code fix together.
Commit msg: `backprop §B.<n> + §V.<N>: <one-line cause>`.

## WHAT MAKES A GOOD INVARIANT

- Testable in code (grep-able or assert-able).
- Scoped to a behavior, not a file.
- Stated positively when possible (`! hold` over `⊥ forbid`).
- References §I surface where it applies.

**Bad**: V8: code should be correct.
**Good**: V8: ∀ pg_query ! params interpolated via driver, ⊥ string concat.

## WHEN NOT TO ADD §V

- Bug was purely mechanical typo with no class (`i++` vs `i--` in throwaway).
- Fix is a one-time migration.
- Root cause is external dep (upgrade deps instead, note in §C).

Still append §B entry — record that this failure mode was considered. Future bug with same smell → §B search shows precedent.

## OUTPUT SHAPE

Every backprop run produces:
1. §B entry (always).
2. §V entry (usually).
3. Test file (when §V added).
4. Code fix.
5. One commit.

No dashboards. No log files. SPEC.md + git is the full history.

© JuliusBrussee · MIT · JuliusBrussee/cavekit

Similar skills

All skills for Testing and QA →

From the same set9

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor