PrompTom
Все скилы

Поиск причины, а не удачной правки

debug-root-causePROотладкаошибки

Заставляет сначала воспроизвести ошибку и назвать причину, и только потом трогать код.

Что делает

  • Срабатывает на «сломалось», «вчера работало», «тест падает через раз», «на проде не так, как локально».
  • Требует сформулировать ошибку одной фразой: при таком входе в таком состоянии код делает X вместо Y. Пока фразы нет — любая правка остаётся угадыванием.
  • Ищет последнюю рабочую версию раньше, чем читает код: коммит, после которого сломалось, обычно называет причину сам и стоит дешевле чтения.
  • Разрешает менять по одной вещи за раз. Две правки сразу — и непонятно, какая из них сказала правду.
  • Знает обычные укрытия: значение не то, что вы думаете; общее состояние между запросами; порядок выполнения; проглоченная ошибка в пустом catch.
  • Не даёт закрыть задачу словами «поменял и перестало». Это не причина, а перемещение ошибки в другое место.

Зачем он нужен

Правка, подобранная наугад, иногда срабатывает — и это хуже, чем если бы она не сработала: ошибка никуда не делась, а стала тише и всплывёт там, где её никто не ждёт. Скил разворачивает работу в обратную сторону: сначала воспроизведение, потом гипотеза, потом одна проверка. Дольше на первых десяти минутах и заметно короче на всей задаче.

Куда положить

  1. 1Создайте в проекте папку .claude/skills/debug-root-cause
  2. 2Положите в неё файл SKILL.md с текстом ниже
  3. 3Всё. Claude Code подключит скил сам, когда задача подойдёт под описание

Чтобы скил работал во всех проектах, а не в одном, положите его в ~/.claude/skills вместо папки проекта.

Файл SKILL.md

# Finding the cause, not a fix that happens to work

Before changing a single line, be able to state the bug as: given this
input, in this state, the code does X where it should do Y.

If you cannot state it that way, you do not understand it yet, and any
edit you make is a guess. Guesses that appear to work are worse than
guesses that fail — they move the bug somewhere quieter.

## The order

**1. Reproduce it.**
Find the shortest sequence that triggers it every time. "Sometimes" is
not a reproduction. If it only happens sometimes, the missing variable
is part of the bug: time, order, cached state, a second request, an
empty list on the first run.

**2. Find the last version that worked.**
`git log` on the touched files, or bisect. Knowing which commit
introduced it usually names the cause outright and costs less than
reading the code.

**3. Write down what you believe is happening.**

Файл скила входит в PRO-подборку

Открыть доступ
Поиск причины, а не удачной правки — PrompTom