Systematic Debugger
Отладка по методу «Железного закона»: не трогаем код, пока причина не подтверждена
гипотезами и данными. 4 фазы, Red Flags, Rationalization Table, регресс-тест.
Загружай этот скилл когда есть баг/неожиданное поведение и нужно найти
корневую причину (root cause), а не наколеночный фикс. Скилл ведёт процесс:
воспроизведение, гипотезы, изоляция, минимальный фикс + тест-регрессия.
🎯 When to use
Use this skill when:
- «Почему это не работает?», «что-то сломалось», «неожиданный результат»
- Нужен структурированный поиск причины, а не «попробуй вот так»
- Баг воспроизводится, но причина неочевидна; нужно зафиксировать факты
- Нужен отчёт для передачи коллеге/агента: среда, шаги, гипотезы, регресс-план
Do NOT use when:
- Правка тривиальна и причина очевидна — просто сделай минимальный фикс
- Нужно просто «посмотреть как работает X» — это explore, не отладка
- Произошёл сбой из-за инфраструктуры (нет кода) — сначала собери факты окружения
📦 Files
SKILL.md — этот файл
scripts/debug_log.py — формирование отчёта по фазам (Python 3 stdlib)
⚙️ Iron Law (Железный закон)
Никаких изменений кода, пока причина не подтверждена минимум одной
воспроизводимой гипотезой. Один фикс за раз — после каждого изменения
перепроверяй по фактам.
🔧 Workflow (4 фазы)
Фаза 1 — Воспроизведение
- Зафиксируй точные шаги, при которых баг проявляется.
- Зафиксируй «факт»: что происходит на самом деле (вывод, лог, скрин).
- Попробуй минимизировать: убрать переменные, пока баг воспроизводится.
Фаза 2 — Гипотезы
- Выдвини 1..3 гипотезы о причине (не больше).
- Для каждой — как её проверить (команда/тест/лог) и какой результат ожидаем.
- Заполни Rationalization Table: гипотеза → проверка → результат → вердикт.
Фаза 3 — Изоляция причины
- Проверяй гипотезы по одной; после каждой проверки обновляй таблицу.
- Используй минимальные вмешательства: точечный лог, изолированный репродюсер.
- Red Flag: если «внезапно заработало» без понимания почему — это НЕ фикс.
Фаза 4 — Фикс + регрессия
- Внеси минимальное изменение, устраняющее подтверждённую причину.
- Напиши/обнови тест, который ловил бы баг (регрессия).
- Прогони связанные тесты: старый баг не вернулся, фикс работает.
🛡 Red Flags (стоп-сигналы)
- Quick-fix: «наверное, тут просто надо...» без подтверждения причины.
- Шотган-дебаг: меняем несколько мест одновременно «авось пройдёт».
- Спекуляция: «может, из-за кэша» без проверки фактами.
- Магическое исчезновение: баг пропал, но никто не знает почему.
- Зацикленность: три одинаковые попытки без новых данных — остановись, пересобери факты.
🧰 Скрипт отчёта
python3 skills/systematic-debugger/scripts/debug_log.py \
--label "auth_flow" \
--command "pytest tests/test_auth.py -k login" \
--expected "login succeeds" \
--actual "401 Unauthorized"
Секции отчёта: Среда / Команда / Ожидаем / Факт / Гипотезы (1..3) / Регресс-план.
Отчёт удобно прикладывать к issue или передавать другому агенту для фазы 2.
✅ Definition of Done
- Причина подтверждена: минимум одна гипотеза прошла проверку (записано «подтверждено»).
- Внесён один минимальный фикс; регресс-тест добавлен/обновлён.
- Полный набор связанных тестов зелёный.
- Red Flags не наблюдались (быстрый фикс, шотган, спекуляция).
1---2name: systematic-debugger3description: Systematic Debugger4---56# Systematic Debugger78> Отладка по методу «Железного закона»: не трогаем код, пока причина не подтверждена9> гипотезами и данными. 4 фазы, Red Flags, Rationalization Table, регресс-тест.1011Загружай этот скилл когда есть **баг/неожиданное поведение** и нужно найти12корневую причину (root cause), а не наколеночный фикс. Скилл ведёт процесс:13воспроизведение, гипотезы, изоляция, минимальный фикс + тест-регрессия.1415## 🎯 When to use1617Use this skill when:18- «Почему это не работает?», «что-то сломалось», «неожиданный результат»19- Нужен структурированный поиск причины, а не «попробуй вот так»20- Баг воспроизводится, но причина неочевидна; нужно зафиксировать факты21- Нужен отчёт для передачи коллеге/агента: среда, шаги, гипотезы, регресс-план2223Do NOT use when:24- Правка тривиальна и причина очевидна — просто сделай минимальный фикс25- Нужно просто «посмотреть как работает X» — это explore, не отладка26- Произошёл сбой из-за инфраструктуры (нет кода) — сначала собери факты окружения2728## 📦 Files2930- `SKILL.md` — этот файл31- `scripts/debug_log.py` — формирование отчёта по фазам (Python 3 stdlib)3233## ⚙️ Iron Law (Железный закон)3435> Никаких изменений кода, пока причина не подтверждена минимум одной36> воспроизводимой гипотезой. Один фикс за раз — после каждого изменения37> перепроверяй по фактам.3839## 🔧 Workflow (4 фазы)4041### Фаза 1 — Воспроизведение421. Зафиксируй точные шаги, при которых баг проявляется.432. Зафиксируй «факт»: что происходит на самом деле (вывод, лог, скрин).443. Попробуй минимизировать: убрать переменные, пока баг воспроизводится.4546### Фаза 2 — Гипотезы471. Выдвини 1..3 гипотезы о причине (не больше).482. Для каждой — как её проверить (команда/тест/лог) и какой результат ожидаем.493. Заполни Rationalization Table: гипотеза → проверка → результат → вердикт.5051### Фаза 3 — Изоляция причины521. Проверяй гипотезы по одной; после каждой проверки обновляй таблицу.532. Используй минимальные вмешательства: точечный лог, изолированный репродюсер.543. Red Flag: если «внезапно заработало» без понимания почему — это НЕ фикс.5556### Фаза 4 — Фикс + регрессия571. Внеси минимальное изменение, устраняющее подтверждённую причину.582. Напиши/обнови тест, который ловил бы баг (регрессия).593. Прогони связанные тесты: старый баг не вернулся, фикс работает.6061## 🛡 Red Flags (стоп-сигналы)62- **Quick-fix**: «наверное, тут просто надо...» без подтверждения причины.63- **Шотган-дебаг**: меняем несколько мест одновременно «авось пройдёт».64- **Спекуляция**: «может, из-за кэша» без проверки фактами.65- **Магическое исчезновение**: баг пропал, но никто не знает почему.66- **Зацикленность**: три одинаковые попытки без новых данных — остановись, пересобери факты.6768## 🧰 Скрипт отчёта6970```bash71python3 skills/systematic-debugger/scripts/debug_log.py \72 --label "auth_flow" \73 --command "pytest tests/test_auth.py -k login" \74 --expected "login succeeds" \75 --actual "401 Unauthorized"76```7778Секции отчёта: Среда / Команда / Ожидаем / Факт / Гипотезы (1..3) / Регресс-план.79Отчёт удобно прикладывать к issue или передавать другому агенту для фазы 2.8081## ✅ Definition of Done82- Причина подтверждена: минимум одна гипотеза прошла проверку (записано «подтверждено»).83- Внесён один минимальный фикс; регресс-тест добавлен/обновлён.84- Полный набор связанных тестов зелёный.85- Red Flags не наблюдались (быстрый фикс, шотган, спекуляция).