feat(promote-brainstorm): auto-create [<topic>-review] checkpoint task

Domain-промоушен с N≥1 импл-тасок теперь дополнительно создаёт
зонтичную review-таску в target-проекте: status=blocked, blocker=
impl-slugs, description с шаблоном чек-листа (читать спеку, прогнать
тесты, сверить с acceptance criteria, findings → follow-up tasks).

Reviewer — следующая сессия в target, не имплементер. Это закрывает
дыру обнаруженную 2026-05-07 при ревью interns-repo-read-impl
(закрылся 🟢 хотя 4/5 тестов фейлят, transitive safety guard
отсутствует) — coverage-gate в using-tasks смотрит изнутри одного
агента, review-таска даёт независимую вторую пару глаз на boundary
между проектами.

CLAUDE.md правило #5 фиксирует политику: meeting-room генерирует
review-таски, но сам код-ревью не делает.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-07 00:25:28 +03:00
parent e749570e6c
commit f8ecad8b40
2 changed files with 39 additions and 1 deletions

View File

@@ -1,6 +1,6 @@
---
name: meeting-room-promote-brainstorm
description: Use when user says "промоутни брейнсторм", "finalize <topic>", "выкати в вики", "promote <topic>", or wants to finalize a .brainstorm/<topic>.md buffer. Asks routing (room-meta vs domain), writes to local .wiki/concepts/ OR ingests into target project's wiki via mcp__projects-meta__knowledge_ingest, extracts action-items into target project's .tasks via mcp__projects-meta__tasks_create, archives buffer to .archive/<date>-<topic>.md.
description: Use when user says "промоутни брейнсторм", "finalize <topic>", "выкати в вики", "promote <topic>", or wants to finalize a .brainstorm/<topic>.md buffer. Asks routing (room-meta vs domain), writes to local .wiki/concepts/ OR ingests into target project's wiki via mcp__projects-meta__knowledge_ingest, extracts action-items into target project's .tasks via mcp__projects-meta__tasks_create, creates a [<topic>-review] umbrella task in the target project blocked by impl-tasks for cross-project review handoff, archives buffer to .archive/<date>-<topic>.md.
---
# meeting-room-promote-brainstorm
@@ -42,6 +42,9 @@ write to ingest via
for each: mcp__projects-meta__tasks_create
if domain && N≥1: tasks_create [<topic>-review] (blocked-by impl)
git mv .brainstorm/<topic>.md .archive/<date>-<topic>.md
@@ -84,6 +87,38 @@ write to ingest via
- `mcp__projects-meta__tasks_create` с `project: <target>` (для domain) или с `project: <inferred-from-buffer>` (для room-meta это может быть `meeting-room` или конкретный проект упомянутый в action-item — спросить пользователя если неоднозначно).
- Title — первая строка action-item; description — остальное.
- Если N-я таска упала — продолжить остальные, в конце сообщить какие созданы / какие нет.
- Запомнить slug'и созданных импл-тасок для шага 6.5.
6.5. **Review-чекпоинт** (только для domain-промоушена с N≥1 импл-тасок; для room-meta или N=0 — skip с пометкой в логе):
- `mcp__projects-meta__tasks_create`:
- `target_project: <target>`
- `slug: <topic>-review`
- `status: blocked`
- `blocker:` `«impl-tasks: <comma-separated slugs из шага 6>»`
- `description:` шаблон ниже.
- `next_action:` «Дождаться 🟢 у всех blocker-тасок. Прочитать спецификацию (см. путь в description). Для каждой импл-таски: `git show <commit>`, прогнать тесты в её scope'е, сверить с acceptance criteria. Findings → новые follow-up tasks через `mcp__projects-meta__tasks_create`.»
- Description шаблон:
```
Code-review checkpoint для брейнсторма <topic> (промоушен <YYYY-MM-DD>).
**Спецификация:** <путь к промоушенному design-документу — concepts/<topic>.md в target-wiki или claude-skills/.wiki/concepts/<topic>-design.md, в зависимости от того куда ушёл ingest>.
**Импл-таски (review против их acceptance criteria):** <list slug'ов из шага 6>.
**Кто делает:** **не имплементер.** Следующая сессия в этом проекте (другая модель / другой день / другой агент) поднимает таску с чистым контекстом. «Я только что это написал» bias = главный риск.
**Чек-лист ревью:**
- Прочитать спецификацию (acceptance criteria каждой импл-таски).
- `git log --oneline` shipped-коммитов (по slug или scope в commit-message).
- Для каждой импл-таски: прогнать соответствующие тесты, реально проверить что они доходят до своих веток (не coverage-illusion).
- Сверить дизайн-decisions со shipped-кодом (signature, params, error-paths, безопасность).
- Findings — отдельные follow-up tasks (`<topic>-<gap>-fix` или подобное) через `tasks_create`.
**Закрытие:** только когда все findings зафайлены ИЛИ ревьюер подтвердил «нет findings» в close-note.
```
- Если `tasks_create` review-таски упала — сообщить пользователю, **продолжить** к шагу 7 (архивация буфера). Review-таску можно создать вручную позже из `.archive/<date>-<topic>.md`.
7. **Архивация:**
```bash
@@ -110,12 +145,14 @@ write to ingest via
- Целевой проект (для domain) не найден в `meta_status` → abort.
- `knowledge_ingest` упал → abort до `tasks_create` и `git mv`. Буфер остаётся.
- `tasks_create` упал на N-й таске → продолжить остальные. Сообщить partial. **Не делать** `git mv` без подтверждения пользователя.
- `tasks_create` упал на review-таске (шаг 6.5) → не блокировать; перейти к архивации, сообщить пользователю чтобы создал вручную из `.archive/`.
## Side effects
- room-meta: создаёт `.wiki/concepts/<topic>.md`.
- domain: создаёт запись в target wiki через MCP.
- Создаёт N тасок в target `.tasks/` через MCP.
- Для domain с N≥1: создаёт зонтичную `<topic>-review` таску (status=blocked, blocker=impl-slugs) в том же target.
- Перемещает `.brainstorm/<topic>.md` → `.archive/<date>-<topic>.md`.
- Аппендит строку в `.wiki/log.md`.

View File

@@ -23,6 +23,7 @@
2. **Локальный `.wiki/concepts/` — только room-meta** (про саму комнату).
3. **Локальные `.tasks/` не создавать** — экшены идут в `.tasks/` целевого проекта через `mcp__projects-meta__tasks_create`.
4. **`entities/persons/` пишет только скил `meeting-room-register-persona`.** SoT — `config/config.yaml`.
5. **Domain-промоушен с импл-тасками автоматически создаёт review-чекпоинт.** Скил `meeting-room-promote-brainstorm` после успешного `tasks_create` импл-тасок дополнительно создаёт зонтичную `<topic>-review` (status=blocked, blocker=impl-slugs) в том же target-проекте. Reviewer — следующая сессия в target, **не имплементер** (борьба с «я только что это написал»-bias). Агент в `.meeting-room` сам код-ревью **не делает** — только генерирует review-таску при промоушене.
## Триггеры скилов v1