0de128372f
Introduce AGENTS.md, TODO maintenance rules, BACKLOG, and Cursor rules so agents can run the full cycle: changes, review, fixes, and commits. Co-authored-by: Cursor <cursoragent@cursor.com>
57 lines
3.6 KiB
Plaintext
57 lines
3.6 KiB
Plaintext
---
|
|
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` по запросу.
|