backprop — скилл для Claude Code: что делает и как установить
Скилл превращает исправление багов в обновление спецификации SPEC.md. Агент находит причину ошибки, формулирует проверяемый инвариант, пишет падающий тест и фиксирует всё одним коммитом.
npx skills add JuliusBrussee/cavekit --skill backprop -a claude-codeЧто делает backprop
Обычный подход «исправь и забудь» оставляет риск повторения бага. Протокол backprop связывает поломку с файлом SPEC.md. Скилл запускается при падении тестов во время /build, сообщении об ошибке от пользователя, разборе инцидента или флаге VIOLATE от команды /check.
Работа идёт в шесть шагов. Сначала агент ищет строку с ошибкой и формулирует первопричину одним простым предложением. Затем решает, нужен ли новый инвариант §V, и обязательно вносит запись в секцию §B. Перед правкой кода агент создаёт падающий тест с именем инварианта, например TestV7_RefundIdempotent. После проверки тестов правка кода, тест и изменение спецификации объединяются в один коммит git.
Если ошибка вызвана механической опечаткой, одноразовой миграцией или внешней зависимостью, правило запрещает выдумывать лишний инвариант §V. В таких случаях обновляется только таблица §B. Никаких отдельных логов или дашбордов скилл не ведёт: вся история опирается исключительно на SPEC.md и историю коммитов.
Какие задачи решает
- предотвратить повторение найденного бага через фиксацию инварианта в
SPEC.md - зафиксировать первопричину сбоя в секции §B спецификации
- сгенерировать падающий тест до внесения правок в код
- объединить правку кода, тест и изменение спецификации в один коммит
Примеры запросов агенту
- Упал тест при проверке /build, запусти процедуру backprop для исправления
- Пользователь сообщил об ошибке дублирования списания, обнови спецификацию и добавь инвариант через backprop
- Разбери причину инцидента в продакшене и внеси запись в §B и §V по правилам backprop
Как установить backprop
1Через Skills CLI (Vercel)
npx skills add JuliusBrussee/cavekit --skill backprop -a claude-code2Вручную: положить файлы
~/.claude/skills/backprop/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/backprop/
1Через Skills CLI (Vercel)
npx skills add JuliusBrussee/cavekit --skill backprop -a codex2Вручную: положить файлы
.agents/skills/backprop/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add JuliusBrussee/cavekit --skill backprop -a cursor2Вручную: положить файлы
.cursor/skills/backprop/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install JuliusBrussee/cavekit backprop2Вручную: положить файлы
.github/skills/backprop/SKILL.md1Через Skills CLI (Vercel)
npx skills add JuliusBrussee/cavekit --skill backprop -a gemini-cli2Командой платформы
gemini skills install https://github.com/JuliusBrussee/cavekit --path skills/backpropВручную: положить файлы
.devin/skills/backprop/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add JuliusBrussee/cavekit --skill backprop -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора9
Похожие
Рядом в теме «Тесты и QA»
Всё по теме «Тесты и QA» →Вопросы о backprop
Как установить backprop в Claude Code?
Выполните команду npx skills add JuliusBrussee/cavekit --skill backprop -a claude-code. Файлы скилла будут скопированы в директорию ~/.claude/skills/backprop/SKILL.md.
Что делает скилл backprop?
Он реализует протокол обновления спецификации после нахождения бага. Агент локализует причину ошибки, добавляет запись в секцию §B, формулирует проверяемый инвариант §V, пишет тест и коммитит исправление вместе со SPEC.md.
В каких случаях инвариант §V не добавляется?
Инвариант не создаётся при механических опечатках без системной природы, одноразовых миграциях или сбоях во внешних зависимостях. При этом запись в секцию §B добавляется всегда.
Исходный текст
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