---
name: implement-req
description: Основной цикл реализации требования — ветка, тесты от агента test-author, код, зелёный npm run check, PR, журнал. Использовать для любой задачи из docs/tasks.md. Аргумент — REQ-XXX или T-XXX.
---

# implement-req — от требования до PR

Аргумент: `$ARGUMENTS` (REQ-XXX или T-XXX).

## Шаги

1. **Контекст.** Прочитать REQ, задачу в `docs/tasks.md`, связанные ADR, строки `consistency-model.md`. Если требование неясно — остановиться и предложить `/write-spec`, не додумывать.
2. **Ветка.** Убедиться, что рабочее дерево чистое. `git switch main && git pull && git switch -c feat/REQ-XXX-short-name`. Статус задачи → `in-progress`.
3. **Тесты — не сам.** Запустить агента `test-author` с ID требования. Приёмочные тесты по REQ пишет он, не главная сессия.
   - Прогнать тесты: они должны падать **из-за отсутствия реализации**, а не из-за ошибки в самом тесте.
   - Если тест противоречит спецификации — не править его, а сообщить пользователю.
4. **Реализация.** Минимальный код, делающий тесты зелёными.
   - Операция над доской → следовать скиллу `crdt-op`.
   - Новое решение (библиотека, протокол, семантика) → ADR по шаблону `docs/adr/0000-template.md`.
5. **Проверка.** `npm run check` до зелёного.
6. **PR.** Коммиты по Conventional Commits. `gh pr create` с описанием: REQ, что сделано, как проверено (итог `npm run check`), что было неочевидно. Статус задачи → `review`.
7. **Журнал.** `/journal`.

## Запрещено

- Редактировать тесты, написанные `test-author`, чтобы они прошли. Исключение — пользователь явно подтвердил ошибку в тесте.
- `it.skip`, `it.only`, `describe.skip`, уменьшение `numRuns` в fast-check, `// @ts-ignore`, `biome-ignore` без комментария с причиной.
- Коммитить в `main`, `--no-verify`, force push.

## Остановка

Если одна и та же проверка падает после 3 разных попыток исправления — остановиться и написать пользователю: что падает, что пробовали, гипотеза о причине.
