--- 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/-*`. Нет свободных и пользователь только что описал симптом — заводи новый. ## 1. Принять Записать симптом так, чтобы следующий агент его узнал без этого чата: что видит игрок / падающий тест / лог; чего ждали; как воспроизвести, если путь не в одну строку. Пользователь предложил фикс — проверь, что это причина, а не симптом. Лучший путь рядом — назови его, не чини молча худший. ## 2. Обсудить, когда нужно Путь один и не трогает протокол, сейв и инвариант — чинить, не спрашивать. Два+ разумных пути **или** правка протокола / сейва / инварианта — два–три варианта и **рекомендация**. Стоп, пока не сказали «ок», «делай», «как рекомендуешь». Молчание — нет. Соседнее «заодно» в отчёт, не в объём. ## 3. Документ `docs/bugs/-.md` и строка в индексе. Номер: максимум по папке и индексу, плюс один, затем `git branch --list "bug/-*"`. Занято — следующий. Гонку ловят ветки, не индекс: у нового бага на `main` строки ещё нет. Каркас короче фазы, не копия: - **Симптом** — что сломано и как увидеть - **Причина** — когда известна; иначе «ищу» и дописать тем же коммитом, что код - **Путь** — выбранный фикс; отвергнутые — одной строкой, если обсуждали - **Задачи** — чеклист - **Тест, без которого не закрыт** — обычно один, по Testing policy в `AGENTS.md` - **Стоп** — чего не трогать Дизайн-док не писать. «Было / Стало» не нужно: это регрессия, не решение. Индекс — новая строка, статус 🔄, если сразу чинишь; ⬜, если просили только записать. Просил только документ — здесь конец. ## 4. Работа Заявка `git branch bug/-` **до** кода. Новые файлы и 🔄 живут на этой ветке. Дальше — как [phase-work](../phase-work/SKILL.md), с отличиями: - префикс ветки `bug/`, не `phase/`; индекс — `docs/bugs/README.md`; - worktree обязателен, только если основное дерево грязное или рядом идёт другая ветка. Чистое `main` — можно в этом дереве; - шаблон фазы не заполнять. Тест из файла бага — да, «Критерий готовности» фазы — нет; - тесты — только проект из Testing policy и `--filter` на новый тест. Полный `dotnet test`, клиентский Vitest без правок клиента и повтор после слияния статус-строки **не** наследовать из `/phase-work`; - ✅ в индексе — последним коммитом ветки, в нём только строка статуса. Слияние и замок `merge/lock` — как у `/phase-work`. Не пушь. Не смог закрыть тест — оставь ⬜ и напиши почему. Полработы с честной пометкой лучше, чем ✅ с дырой. ## Отчёт Симптом одной строкой; путь, если выбирали; баг и ветка; какой тест добавлен; что прогнал; что осталось ⬜; слита ли ветка в `main`.