diff --git a/.claude/skills/meeting-room-promote-brainstorm/SKILL.md b/.claude/skills/meeting-room-promote-brainstorm/SKILL.md index 824bac4..2d9e657 100644 --- a/.claude/skills/meeting-room-promote-brainstorm/SKILL.md +++ b/.claude/skills/meeting-room-promote-brainstorm/SKILL.md @@ -1,6 +1,6 @@ --- name: meeting-room-promote-brainstorm -description: Use when user says "промоутни брейнсторм", "finalize ", "выкати в вики", "promote ", or wants to finalize a .brainstorm/.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/-.md. +description: Use when user says "промоутни брейнсторм", "finalize ", "выкати в вики", "promote ", or wants to finalize a .brainstorm/.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 [-review] umbrella task in the target project blocked by impl-tasks for cross-project review handoff, archives buffer to .archive/-.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 [-review] (blocked-by impl) + │ + ▼ git mv .brainstorm/.md .archive/-.md │ ▼ @@ -84,6 +87,38 @@ write to ingest via - `mcp__projects-meta__tasks_create` с `project: ` (для domain) или с `project: ` (для 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: ` + - `slug: -review` + - `status: blocked` + - `blocker:` `«impl-tasks: »` + - `description:` шаблон ниже. + - `next_action:` «Дождаться 🟢 у всех blocker-тасок. Прочитать спецификацию (см. путь в description). Для каждой импл-таски: `git show `, прогнать тесты в её scope'е, сверить с acceptance criteria. Findings → новые follow-up tasks через `mcp__projects-meta__tasks_create`.» + - Description шаблон: + + ``` + Code-review checkpoint для брейнсторма (промоушен ). + + **Спецификация:** <путь к промоушенному design-документу — concepts/.md в target-wiki или claude-skills/.wiki/concepts/-design.md, в зависимости от того куда ушёл ingest>. + **Импл-таски (review против их acceptance criteria):** . + + **Кто делает:** **не имплементер.** Следующая сессия в этом проекте (другая модель / другой день / другой агент) поднимает таску с чистым контекстом. «Я только что это написал» bias = главный риск. + + **Чек-лист ревью:** + - Прочитать спецификацию (acceptance criteria каждой импл-таски). + - `git log --oneline` shipped-коммитов (по slug или scope в commit-message). + - Для каждой импл-таски: прогнать соответствующие тесты, реально проверить что они доходят до своих веток (не coverage-illusion). + - Сверить дизайн-decisions со shipped-кодом (signature, params, error-paths, безопасность). + - Findings — отдельные follow-up tasks (`--fix` или подобное) через `tasks_create`. + + **Закрытие:** только когда все findings зафайлены ИЛИ ревьюер подтвердил «нет findings» в close-note. + ``` + + - Если `tasks_create` review-таски упала — сообщить пользователю, **продолжить** к шагу 7 (архивация буфера). Review-таску можно создать вручную позже из `.archive/-.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/.md`. - domain: создаёт запись в target wiki через MCP. - Создаёт N тасок в target `.tasks/` через MCP. +- Для domain с N≥1: создаёт зонтичную `-review` таску (status=blocked, blocker=impl-slugs) в том же target. - Перемещает `.brainstorm/.md` → `.archive/-.md`. - Аппендит строку в `.wiki/log.md`. diff --git a/CLAUDE.md b/CLAUDE.md index 4324569..87e5d45 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -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` импл-тасок дополнительно создаёт зонтичную `-review` (status=blocked, blocker=impl-slugs) в том же target-проекте. Reviewer — следующая сессия в target, **не имплементер** (борьба с «я только что это написал»-bias). Агент в `.meeting-room` сам код-ревью **не делает** — только генерирует review-таску при промоушене. ## Триггеры скилов v1