--- description: Обязательные атомарные коммиты после каждого пункта TODO (pi-skill-reinject) alwaysApply: true --- # Атомарные коммиты (pi-skill-reinject) В этом репозитории коммит — **обязательный шаг цикла**, не «только если пользователь попросил». Исключение: явный запрет («без коммитов», «только diff»). Полный workflow: [`AGENTS.md`](../../AGENTS.md) (фазы, review, конец фазы). Здесь — жёсткие правила коммитов. ## Разрешение коммитить без отдельного запроса Когда агент идёт **по фазе** из `TODO.md` (пользователь начал фазу, продолжает «фазу N», или явно работает по чеклисту фазы): - **Можно и нужно** делать `git commit` после каждого закрытого пункта чеклиста **без** отдельного «закоммить» в сообщении. - Один пункт → один коммит → чистый `git status` → следующий пункт. Это правило **pi-skill-reinject** имеет приоритет над общим user rule «коммит только по запросу» **только** в активном цикле фазы в этом репозитории. **Вне цикла фазы** (разовый вопрос, review-only, правка не из `TODO.md`) — коммит **только** по явной просьбе. ## Цикл на один пункт чеклиста 1. Правки — **только один** пункт `TODO.md`. Не открывать следующий, пока текущий не закоммичен. 2. Проверка — `npm test` / `npx tsc --noEmit` если применимо; иначе явно «tests: n/a». Не пропускать без причины. 3. Code review (субагент code-reviewer) по затронутым файлам. 4. Исправления по ревью **и** красным проверкам — в **том же** пункте, до коммита. 5. **Коммит** — ровно один атомарный коммит; `git status` чистый. 6. Следующий пункт — **только после** п.5. **Запрещено:** копить несколько пунктов; перейти к следующему без коммита; коммитить с красными тестами/tsc. ## Одна мысль = один коммит - Один пункт чеклиста → один коммит кода (`Phase N: …`). - Крупный пункт — разбить в `TODO.md` на подпункты. - Фаза из **N** пунктов → **не меньше N** коммитов кода + отдельный `TODO:`/`AGENTS:` в конце фазы. ## `TODO.md` / `AGENTS.md` - Не в одном коммите с кодом. - Отметки `[x]` — в коммите конца фазы, не вместе с кодом пункта. ## Сообщения коммита | Тип | Subject | |-----|---------| | Код | `Phase N: …` | | План | `TODO: …` / `AGENTS: …` | Тело: 1–3 предложения **зачем**. ## Fixup `git commit --amend` — только если коммит не запушен и создан в этой сессии; иначе узкий коммит или `fup-blame-commits` по запросу.