92 lines
5.4 KiB
Markdown
92 lines
5.4 KiB
Markdown
---
|
||
name: bug-work
|
||
description: >-
|
||
Принимает баг в уже сделанном, при необходимости обсуждает путь и чинит.
|
||
Файлы в docs/bugs/, индекс отдельно от фаз. Используй при «баг», «почини»,
|
||
«регрессия», «сломалось», «fix the bug», «возьми баг N». Не для новой фичи
|
||
(/side-work), фазы среза (/phase-work) и ревью (/phase-review).
|
||
---
|
||
|
||
# Баги
|
||
|
||
Это не фаза и не срез. Сломалось то, что уже должно работать: принять, при
|
||
нужде согласовать путь, починить. Документы — `docs/bugs/`, индекс —
|
||
`docs/bugs/README.md`. В `docs/phases/` и «Вне очереди» не класть.
|
||
|
||
Один запуск — **один баг**. Код до записи в индекс не писать.
|
||
|
||
## Когда это, а когда нет
|
||
|
||
Прочитай `docs/bugs/README.md`, `docs/phases/README.md` и инварианты в
|
||
`AGENTS.md`.
|
||
|
||
- Уже стоит ⬜/🔄 в индексе багов — бери его, не заводи второй.
|
||
- Это ещё не сделанная фаза в `docs/phases/` — скажи и отдай `/phase-work`.
|
||
- Новая фича, склейка систем, DX — `/side-work`.
|
||
- Ревью среза — `/phase-review`.
|
||
|
||
Номер передали (`/bug-work 3`) — берёшь его. Нет — первая ⬜ в индексе, у
|
||
которой нет ветки `bug/<N>-*`. Нет свободных и пользователь только что описал
|
||
симптом — заводи новый.
|
||
|
||
## 1. Принять
|
||
|
||
Записать симптом так, чтобы следующий агент его узнал без этого чата: что
|
||
видит игрок / падающий тест / лог; чего ждали; как воспроизвести, если путь
|
||
не в одну строку.
|
||
|
||
Пользователь предложил фикс — проверь, что это причина, а не симптом. Лучший
|
||
путь рядом — назови его, не чини молча худший.
|
||
|
||
## 2. Обсудить, когда нужно
|
||
|
||
Путь один и не трогает протокол, сейв и инвариант — чинить, не спрашивать.
|
||
|
||
Два+ разумных пути **или** правка протокола / сейва / инварианта — два–три
|
||
варианта и **рекомендация**. Стоп, пока не сказали «ок», «делай», «как
|
||
рекомендуешь». Молчание — нет. Соседнее «заодно» в отчёт, не в объём.
|
||
|
||
## 3. Документ
|
||
|
||
`docs/bugs/<NN>-<slug>.md` и строка в индексе. Номер: максимум по папке и
|
||
индексу, плюс один, затем `git branch --list "bug/<N>-*"`. Занято — следующий.
|
||
Гонку ловят ветки, не индекс: у нового бага на `main` строки ещё нет.
|
||
|
||
Каркас короче фазы, не копия:
|
||
|
||
- **Симптом** — что сломано и как увидеть
|
||
- **Причина** — когда известна; иначе «ищу» и дописать тем же коммитом, что код
|
||
- **Путь** — выбранный фикс; отвергнутые — одной строкой, если обсуждали
|
||
- **Задачи** — чеклист
|
||
- **Тест, без которого не закрыт** — обычно один, по Testing policy в `AGENTS.md`
|
||
- **Стоп** — чего не трогать
|
||
|
||
Дизайн-док не писать. «Было / Стало» не нужно: это регрессия, не решение.
|
||
|
||
Индекс — новая строка, статус 🔄, если сразу чинишь; ⬜, если просили только
|
||
записать. Просил только документ — здесь конец.
|
||
|
||
## 4. Работа
|
||
|
||
Заявка `git branch bug/<N>-<slug>` **до** кода. Новые файлы и 🔄 живут на этой
|
||
ветке.
|
||
|
||
Дальше — как [phase-work](../phase-work/SKILL.md), с отличиями:
|
||
|
||
- префикс ветки `bug/`, не `phase/`; индекс — `docs/bugs/README.md`;
|
||
- worktree обязателен, только если основное дерево грязное или рядом идёт
|
||
другая ветка. Чистое `main` — можно в этом дереве;
|
||
- шаблон фазы не заполнять. Тест из файла бага — да, «Критерий готовности»
|
||
фазы — нет;
|
||
- ✅ в индексе — последним коммитом ветки, в нём только строка статуса.
|
||
|
||
Слияние и замок `merge/lock` — как у `/phase-work`. Не пушь.
|
||
|
||
Не смог закрыть тест — оставь ⬜ и напиши почему. Полработы с честной пометкой
|
||
лучше, чем ✅ с дырой.
|
||
|
||
## Отчёт
|
||
|
||
Симптом одной строкой; путь, если выбирали; баг и ветка; какой тест добавлен;
|
||
что прогнал; что осталось ⬜; слита ли ветка в `main`.
|