task-flowlisted
Install: claude install-skill Orange-hanter/cod-doc
# Task flow — статус задачи живёт в БД
Источник истины — `<project>/.cod-doc/state.db`, не markdown. Закрытие задачи
правкой .md — не закрытие, а расхождение: проекция скажет «done», очередь и
`blocked_by` останутся прежними.
Слаг проекта нужен почти в каждом вызове. Определи один раз:
`cod-doc project list`, либо
`sqlite3 -readonly .cod-doc/state.db "select slug, root_path from project"`.
Мутирующий ad-hoc SQL по этой БД — запрещён: мимо него не пишутся ревизии и
activity events.
## Цикл
1. **Очередь** — `plan_ready(project, plan_scope)` или `task_next_ready`.
Зависимости уже учтены, бери верх списка. CLI:
`cod-doc plan ready <scope> -p <slug> --json`.
2. **Захват — атомарный `task_checkout(project, task_id, agent="claude-<тема>")`.**
Не голый status-переход: `todo → in_progress` через `task_update_status`
падает по протоколу. Идемпотентен для того же `agent`; чужой лок даёт
конфликт, а не перетирание.
3. **Работа.** Промежуточный прогресс — `task_log_progress`, не комментарий в
markdown. Гейт проекта — до закрытия, не после.
4. **Коммит** — conventional + ID задачи: `feat(scope): TASK-ID — суть`.
5. **Закрытие** — `task_complete(project, task_id, commit_sha=..., author=...)`.
Валидирует `blocked_by`, снимает лок, пишет revision + activity event.
Не закончил — `task_release`, а не тихо брошенный лок.
## Что где лежит
| Нужда | Инструмент |
|---|---|
| checkout | только MCP `task_checkout` (в CLI нет) |
| секция плана | MCP `plan_section_create(p