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>
9.9 KiB
name, description
| name | description |
|---|---|
| meeting-room-promote-brainstorm | 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
Финализирует созревший брейнсторм-буфер. По правилу C+ii из spec'а: room-meta → локальный .wiki/concepts/, domain → глобал через projects-meta; буфер уезжает в .archive/.
When to use
- «промоутни брейнсторм», «finalize », «выкати в вики», «promote ».
- Пользователь явно ссылается на
.brainstorm/<topic>.mdкак на готовый к промоушену.
Inputs
- Путь
.brainstorm/<topic>.mdили просто<topic>.
Decision flow
.brainstorm/<topic>.md
│
▼
read + summarize (1–2 paragraphs)
│
▼
ask: room-meta or domain?
│ │
│ ▼
│ ask: target project (validate ~/projects/<proj>/ exists)
│ │
▼ ▼
write to ingest via
.wiki/concepts mcp__projects-meta__knowledge_ingest
│ │
└──────┬───────┘
▼
parse action-items, show, allow edit
│
▼
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
│
▼
append to .wiki/log.md
Steps
-
Прочитать
.brainstorm/<topic>.md. Показать summary (≤2 абзаца). -
Спросить тип: room-meta (методология самой комнаты) или domain (доменное содержимое для какого-то целевого проекта)?
-
Если domain:
- Спросить целевой проект (имя папки в
~/projects/). - Валидация: вызвать
mcp__projects-meta__meta_status, убедиться что проект известен; иначе — abort с сообщением «зарегистрируй проект через setup-projects-meta».
- Спросить целевой проект (имя папки в
-
Парсинг action-items:
- regex по строкам вида
- [ ] ...,- [ ], секции после## Следующие шаги/## TODO/## Next steps/## Action items. - Показать список, дать редактировать/удалять/добавлять.
- Если 0 action-items — продолжить, не блокировать.
- regex по строкам вида
-
Промоушен контента:
-
room-meta:
Write→.wiki/concepts/<topic>.mdс frontmatter:--- date: <YYYY-MM-DD> source: .brainstorm/<topic>.md status: promoted type: room-meta ---Тело — содержимое буфера (можно слегка причесать заголовки, секции типа TODO убрать — они уже сепарированы в action-items).
-
domain:
mcp__projects-meta__knowledge_ingestс параметрами:project: <target>path: concepts/<topic>.md(внутри target wiki)content: <тело буфера с frontmatter>
Если
knowledge_ingestпадает → abort до tasks_create и доgit mv. Сообщить пользователю.
-
-
Создание тасок: для каждого action-item:
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>-reviewstatus: blockedblocker:«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_createreview-таски упала — сообщить пользователю, продолжить к шагу 7 (архивация буфера). Review-таску можно создать вручную позже из.archive/<date>-<topic>.md.
-
Архивация:
git mv .brainstorm/<topic>.md .archive/<YYYY-MM-DD>-<topic>.mdТолько если шаги 5 и 6 прошли (или прошли с допустимым partial — пользователь подтвердил). Иначе — оставить буфер на месте, чтобы можно было ретраиить.
-
Лог: дописать в
.wiki/log.md:<date> promoted <topic> → <destination> [created N tasks in <proj>] -
Финальный отчёт пользователю:
- Куда промочено (полный путь).
- Какие таски созданы (id, title, проект).
- Куда уехал исходник.
Failure modes
.brainstorm/<topic>.mdотсутствует → abort.mcp__projects-metaнедоступен → abort до записей.- Целевой проект (для 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.
What NOT to do
- Не писать доменное содержимое в локальный
.wiki/concepts/(правило #1 из rootCLAUDE.md). - Не создавать локальный
.tasks/(правило #3). - Не делать
git mvбуфера до успеха ingest+tasks. - Не удалять буфер вместо
git mv— теряется история.