12-task plan across 3 phases (bootstrap → skills → e2e validation). Pairs
with spec at .brainstorm/meeting-room-redesign.md (commit 243c045). Both
files archive together in Task 11 after self-promotion.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1251 lines
52 KiB
Markdown
1251 lines
52 KiB
Markdown
# Meeting-Room Redesign Implementation Plan
|
||
|
||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||
|
||
**Goal:** Превратить `.meeting-room/` из плоской транзитной зоны в Karpathy-style workspace с локальной `.wiki/` для room-meta, тремя локальными скилами (`promote-brainstorm`, `start-meeting`, `register-persona`) и связкой с глобальной wiki/tasks через `projects-meta`.
|
||
|
||
**Architecture:** Реализуем строго по spec'у `.brainstorm/meeting-room-redesign.md` (вариант B + миграция 1 + lifecycle C+ii). Сначала каркас (структура `.wiki/` + корневой `CLAUDE.md` + миграция существующих папок), потом три скила, в конце — два self-promotion прогона: `modulair-rag.md` и сам spec этого редизайна, чтобы провалидировать систему на её же артефактах.
|
||
|
||
**Tech Stack:** Markdown (Karpathy LLM Wiki), YAML (frontmatter и `config.yaml`), Claude Code skills (`.claude/skills/<name>/SKILL.md`), MCP `projects-meta` для cross-project ingest и tasks_create, git с master-only.
|
||
|
||
**Spec reference:** `.brainstorm/meeting-room-redesign.md` (commit `243c045`).
|
||
|
||
---
|
||
|
||
## File Structure
|
||
|
||
**Создаются:**
|
||
|
||
| Путь | Назначение |
|
||
|---|---|
|
||
| `CLAUDE.md` | Корневой контракт работы в комнате (semантика, триггеры скилов, override discipline) |
|
||
| `.wiki/CLAUDE.md` | Karpathy-схема локальной вики, frontmatter-требования |
|
||
| `.wiki/index.md` | Навигация |
|
||
| `.wiki/overview.md` | High-level описание комнаты |
|
||
| `.wiki/log.md` | Append-only хронологический лог: meetings, promotions, persona changes |
|
||
| `.wiki/raw/README.md` | Описание raw-зоны |
|
||
| `.wiki/raw/research/.gitkeep` | Пустой каталог под clippings |
|
||
| `.wiki/raw/transcripts/.gitkeep` | Пустой каталог под транскрипты совещаний |
|
||
| `.wiki/entities/persons/.gitkeep` | Пустой каталог (заполнится Task 9) |
|
||
| `.wiki/entities/projects/.gitkeep` | Пустой каталог |
|
||
| `.wiki/concepts/.gitkeep` | Пустой каталог (заполнится Tasks 11–12) |
|
||
| `.wiki/packages/.gitkeep` | Пустой каталог |
|
||
| `.wiki/sources/.gitkeep` | Пустой каталог |
|
||
| `.claude/skills/meeting-room-register-persona/SKILL.md` | Скил v1 #3 |
|
||
| `.claude/skills/meeting-room-start-meeting/SKILL.md` | Скил v1 #2 |
|
||
| `.claude/skills/meeting-room-promote-brainstorm/SKILL.md` | Скил v1 #1 |
|
||
|
||
**Перемещаются (`git mv`):**
|
||
|
||
| Откуда | Куда |
|
||
|---|---|
|
||
| `source/2026-05-03-modulair.md` | `.wiki/raw/research/2026-05-03-modulair.md` |
|
||
| `source/2026-05-03-code-review.md` | `.wiki/raw/research/2026-05-03-code-review.md` |
|
||
|
||
**Удаляются (опустевшие после миграции):**
|
||
|
||
| Путь | Причина |
|
||
|---|---|
|
||
| `source/` | Опустошён, заменён на `.wiki/raw/research/` |
|
||
| `sessions/` | Был пуст, заменён на `.wiki/raw/transcripts/` |
|
||
|
||
**Изменяются:**
|
||
|
||
| Путь | Что меняется |
|
||
|---|---|
|
||
| `README.md` | Удалить правило «❌ NO `.wiki` внутри», добавить ссылки на `CLAUDE.md`, `.wiki/index.md` и три скила |
|
||
|
||
**Создаются скилами в Phase 3 (а не плановыми тасками):**
|
||
|
||
| Путь | Создатель |
|
||
|---|---|
|
||
| `.wiki/entities/persons/{analyst,idea_generator,moderator,skeptic}.md` | Task 9 — `register-persona` ×4 |
|
||
| `.wiki/concepts/modulair-rag-brainstorm-trace.md` | Task 11 — `promote-brainstorm` |
|
||
| `.archive/2026-05-05-modulair-rag.md` | Task 11 — `promote-brainstorm` |
|
||
| `.wiki/concepts/meeting-room-architecture.md` | Task 12 — `promote-brainstorm` |
|
||
| `.archive/2026-05-05-meeting-room-redesign.md` | Task 12 — `promote-brainstorm` (плюс `meeting-room-redesign-plan.md`) |
|
||
|
||
---
|
||
|
||
## Phase 1: Bootstrap structure
|
||
|
||
### Task 1: Initialize `.wiki/` Karpathy skeleton
|
||
|
||
**Files:**
|
||
- Create: `.wiki/CLAUDE.md`
|
||
- Create: `.wiki/index.md`
|
||
- Create: `.wiki/overview.md`
|
||
- Create: `.wiki/log.md`
|
||
- Create: `.wiki/raw/README.md`
|
||
- Create: `.wiki/raw/research/.gitkeep`
|
||
- Create: `.wiki/raw/transcripts/.gitkeep`
|
||
- Create: `.wiki/entities/persons/.gitkeep`
|
||
- Create: `.wiki/entities/projects/.gitkeep`
|
||
- Create: `.wiki/concepts/.gitkeep`
|
||
- Create: `.wiki/packages/.gitkeep`
|
||
- Create: `.wiki/sources/.gitkeep`
|
||
|
||
- [ ] **Step 1: Create directory tree with `.gitkeep` placeholders**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
mkdir -p .wiki/raw/research .wiki/raw/transcripts \
|
||
.wiki/entities/persons .wiki/entities/projects \
|
||
.wiki/concepts .wiki/packages .wiki/sources
|
||
touch .wiki/raw/research/.gitkeep .wiki/raw/transcripts/.gitkeep \
|
||
.wiki/entities/persons/.gitkeep .wiki/entities/projects/.gitkeep \
|
||
.wiki/concepts/.gitkeep .wiki/packages/.gitkeep .wiki/sources/.gitkeep
|
||
```
|
||
|
||
- [ ] **Step 2: Write `.wiki/CLAUDE.md`** (схема вики, meeting-room-специфика)
|
||
|
||
```markdown
|
||
# .wiki — Schema (room-meta only)
|
||
|
||
Эта `.wiki/` — локальная и узко-доменная: **только знание о том, как работает meeting-room**. Доменное содержимое из совещаний промочивается в глобальную вики через `mcp__projects-meta__knowledge_ingest`, не сюда.
|
||
|
||
## Layout (Karpathy LLM Wiki canonical)
|
||
|
||
- `index.md` — навигация
|
||
- `overview.md` — что такое meeting-room на одной странице
|
||
- `log.md` — append-only хронологический лог: `<YYYY-MM-DD> <event-type> <topic> [details]`
|
||
- `raw/research/<date>-<topic>.md` — внешние clippings, immutable
|
||
- `raw/transcripts/<date>-<topic>.md` — транскрипты совещаний, immutable
|
||
- `entities/persons/<role-id>.md` — карточки persona (генерируются скилом `meeting-room-register-persona` из `config/config.yaml`)
|
||
- `entities/projects/<proj>.md` — pointer-карточки целевых проектов
|
||
- `concepts/<topic>.md` — room-meta: методология, ретроспективы, паттерны фасилитации
|
||
- `packages/<tool>.md` — инструменты комнаты (runner, framework, schema)
|
||
- `sources/<title>.md` — внешняя литература
|
||
|
||
## Frontmatter requirements
|
||
|
||
**`entities/persons/<role-id>.md`:**
|
||
|
||
```yaml
|
||
---
|
||
role-id: analyst
|
||
model: glm-5.1
|
||
provider: ollama_cloud
|
||
source: config/config.yaml
|
||
---
|
||
```
|
||
|
||
**`raw/research/<date>-<topic>.md`:**
|
||
|
||
```yaml
|
||
---
|
||
date: 2026-05-03
|
||
source: <URL>
|
||
topic: <topic>
|
||
---
|
||
```
|
||
|
||
**`raw/transcripts/<date>-<topic>.md`:**
|
||
|
||
```yaml
|
||
---
|
||
date: 2026-05-03
|
||
scenario: scenarios/<topic>.md
|
||
participants: [moderator, skeptic, idea_generator, analyst]
|
||
problem: <one-line>
|
||
---
|
||
```
|
||
|
||
**`concepts/<topic>.md`:**
|
||
|
||
```yaml
|
||
---
|
||
date: 2026-05-05
|
||
source: .brainstorm/<topic>.md
|
||
status: promoted
|
||
type: room-meta
|
||
---
|
||
```
|
||
|
||
## Hard rules
|
||
|
||
1. **Никакого доменного содержимого** в `concepts/`. Если контент пригодился бы в чужом проекте — он не room-meta, а domain → `mcp__projects-meta__knowledge_ingest` в целевой проект.
|
||
2. `raw/` immutable: append-only, не редактируем после фиксации.
|
||
3. `entities/persons/` пишет **только** скил `meeting-room-register-persona`. Source-of-truth — `config/config.yaml`.
|
||
4. `log.md` append-only, формат строки: `<YYYY-MM-DD> <event> <topic> [details]`. Никаких удалений.
|
||
```
|
||
|
||
- [ ] **Step 3: Write `.wiki/index.md`**
|
||
|
||
```markdown
|
||
# Meeting-Room Wiki — index
|
||
|
||
> Knowledge about how this meeting-room itself works. Domain content lives in `~/projects/.wiki/`.
|
||
|
||
## Navigation
|
||
|
||
- [Overview](overview.md) — что такое meeting-room
|
||
- [Log](log.md) — хронология встреч, промоушенов, изменений persona
|
||
- [Schema](CLAUDE.md) — раскладка и frontmatter-требования
|
||
|
||
## Sections
|
||
|
||
- [Personas](entities/persons/) — карточки ролей (генерируются из `config/config.yaml`)
|
||
- [Projects](entities/projects/) — pointer-карточки целевых проектов
|
||
- [Concepts](concepts/) — методология, ретро, паттерны
|
||
- [Raw research](raw/research/) — clippings и внешние транскрипты
|
||
- [Raw transcripts](raw/transcripts/) — транскрипты совещаний
|
||
- [Packages](packages/) — инструменты комнаты
|
||
- [Sources](sources/) — внешняя литература
|
||
```
|
||
|
||
- [ ] **Step 4: Write `.wiki/overview.md`**
|
||
|
||
```markdown
|
||
# Meeting-Room — overview
|
||
|
||
`.meeting-room/` — кросс-проектное рабочее пространство для брейнштормов и круглых столов. Не код-проект.
|
||
|
||
## Зачем
|
||
|
||
Место, где агенты из разных проектов пересекаются ради задач, которые не помещаются в один backlog. Брейнсторм-зона: артефакты вызревают здесь и потом промочиваются — либо в локальный `.wiki/concepts/` (если это знание про саму комнату), либо в глобальную вики и `.tasks/` целевого проекта (если доменное).
|
||
|
||
## Что внутри
|
||
|
||
- `scenarios/` — frontmatter-сценарии для запуска multi-agent совещания
|
||
- `config/config.yaml` — реестр persona (рантайм-конфиг)
|
||
- `.brainstorm/` — рабочий буфер: черновики, single-agent capture
|
||
- `.archive/` — буфер после промоушена
|
||
- `.wiki/` — Karpathy-style room-meta wiki (этот раздел)
|
||
|
||
## Как пользоваться
|
||
|
||
См. корневой `CLAUDE.md` — там семантика и триггер-фразы скилов.
|
||
```
|
||
|
||
- [ ] **Step 5: Write `.wiki/log.md`**
|
||
|
||
```markdown
|
||
# Log
|
||
|
||
Append-only. Format: `<YYYY-MM-DD> <event> <topic> [details]`.
|
||
|
||
Events: `started`, `promoted`, `registered`, `archived`.
|
||
|
||
---
|
||
|
||
2026-05-05 bootstrapped meeting-room redesign (initial .wiki/ skeleton)
|
||
```
|
||
|
||
- [ ] **Step 6: Write `.wiki/raw/README.md`**
|
||
|
||
```markdown
|
||
# raw/
|
||
|
||
Immutable, append-only. Никаких редактур после фиксации.
|
||
|
||
- `research/` — внешние clippings, pre-loaded материалы перед совещанием.
|
||
- `transcripts/` — транскрипты прошедших совещаний.
|
||
|
||
При промоушене `concepts/<topic>.md` ссылается сюда через frontmatter `source:`.
|
||
```
|
||
|
||
- [ ] **Step 7: Verify structure**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
ls -la .wiki/
|
||
ls -la .wiki/raw/ .wiki/entities/ .wiki/concepts/ .wiki/packages/ .wiki/sources/
|
||
```
|
||
|
||
Expected: семь подпапок (`raw/`, `entities/`, `concepts/`, `packages/`, `sources/`) + четыре файла (`CLAUDE.md`, `index.md`, `overview.md`, `log.md`).
|
||
|
||
- [ ] **Step 8: Commit**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
git add .wiki/
|
||
git commit -m "$(cat <<'EOF'
|
||
Add .wiki/ Karpathy skeleton
|
||
|
||
Local room-meta wiki: index, overview, log, schema (CLAUDE.md), and empty
|
||
raw/entities/concepts/packages/sources subtrees with .gitkeep placeholders.
|
||
|
||
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
EOF
|
||
)"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 2: Write root `CLAUDE.md`
|
||
|
||
**Files:**
|
||
- Create: `CLAUDE.md`
|
||
|
||
- [ ] **Step 1: Write `CLAUDE.md`**
|
||
|
||
```markdown
|
||
# .meeting-room — workspace contract
|
||
|
||
`.meeting-room/` — brainstorm-зона для кросс-проектных совещаний. **Не код-проект.**
|
||
|
||
## Семантика артефактов
|
||
|
||
| Папка | Что |
|
||
|---|---|
|
||
| `scenarios/` | runtime: сценарии запуска multi-agent совещания (frontmatter: `name`, `participants`, `problem`, `max_rounds`) |
|
||
| `config/config.yaml` | runtime: реестр persona (single source of truth) |
|
||
| `.brainstorm/<topic>.md` | рабочий буфер до промоушена |
|
||
| `.archive/<date>-<topic>.md` | post-promotion: исходник из `.brainstorm/` |
|
||
| `.wiki/raw/research/` | immutable: внешние clippings (бывший `source/`) |
|
||
| `.wiki/raw/transcripts/` | immutable: транскрипты совещаний (бывший `sessions/`) |
|
||
| `.wiki/entities/persons/` | карточки persona, генерируются из `config.yaml` |
|
||
| `.wiki/concepts/` | room-meta: методология, ретро, паттерны |
|
||
|
||
**Перед предложением tooling/архитектуры — прочитать `.wiki/raw/research/` для текущего топика.** Это закрепляет урок из `feedback_read_source_transcripts.md` (память).
|
||
|
||
## Жёсткие правила
|
||
|
||
1. **Доменное содержимое никогда не оседает в локальном `.wiki/`** — всегда в глобал через `mcp__projects-meta__knowledge_ingest` в `~/projects/<proj>/.wiki/`.
|
||
2. **Локальный `.wiki/concepts/` — только room-meta** (про саму комнату).
|
||
3. **Локальные `.tasks/` не создавать** — экшены идут в `.tasks/` целевого проекта через `mcp__projects-meta__tasks_create`.
|
||
4. **`entities/persons/` пишет только скил `meeting-room-register-persona`.** SoT — `config/config.yaml`.
|
||
|
||
## Триггеры скилов v1
|
||
|
||
| Скил | Триггер-фразы |
|
||
|---|---|
|
||
| `meeting-room-promote-brainstorm` | «промоутни брейнсторм», «finalize `<topic>`», «выкати в вики», «promote `<topic>`» |
|
||
| `meeting-room-start-meeting` | «запусти совещание `<topic>`», «start meeting `<scenario>`», «новое совещание `<topic>`» |
|
||
| `meeting-room-register-persona` | «добавь персону», «новый агент в комнату», «register persona `<role>`» |
|
||
|
||
## Override `project-discipline`
|
||
|
||
В этой комнате применяются:
|
||
|
||
- ✅ master-only (никаких feature-веток)
|
||
- ✅ commit freely / push by permission
|
||
|
||
**Не применяются:**
|
||
|
||
- ❌ semver-bump — нет versioned-артефактов (`SKILL.md` без version в frontmatter, нет `package.json`/`pyproject.toml`)
|
||
- ❌ локальный `.tasks/` — запрещён правилом §3 выше
|
||
|
||
## Persona registry
|
||
|
||
SoT — `config/config.yaml`. Карточки `.wiki/entities/persons/<role-id>.md` — производные. Ручные правки разрешены **только** в `config.yaml`. Регенерация карточки — снова `meeting-room-register-persona <role-id>`.
|
||
|
||
## Pointers
|
||
|
||
- Schema локальной вики: `.wiki/CLAUDE.md`
|
||
- Текущий redesign-spec (до self-promotion): `.brainstorm/meeting-room-redesign.md`
|
||
- После self-promotion: `.wiki/concepts/meeting-room-architecture.md`
|
||
```
|
||
|
||
- [ ] **Step 2: Verify**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
test -f CLAUDE.md && wc -l CLAUDE.md
|
||
```
|
||
|
||
Expected: `CLAUDE.md` существует, ~50 строк.
|
||
|
||
- [ ] **Step 3: Commit**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
git add CLAUDE.md
|
||
git commit -m "$(cat <<'EOF'
|
||
Add root CLAUDE.md (workspace contract)
|
||
|
||
Codifies B+1+C+ii: domain content always to global via projects-meta, local
|
||
.wiki/ is room-meta only, no local .tasks. Lists v1 skill triggers and
|
||
project-discipline overrides (semver and local-tasks both N/A here).
|
||
|
||
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
EOF
|
||
)"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 3: Migrate `source/` → `.wiki/raw/research/`
|
||
|
||
**Files:**
|
||
- Move: `source/2026-05-03-modulair.md` → `.wiki/raw/research/2026-05-03-modulair.md`
|
||
- Move: `source/2026-05-03-code-review.md` → `.wiki/raw/research/2026-05-03-code-review.md`
|
||
- Delete: `source/` (опустевший)
|
||
- Delete: `sessions/` (был пуст)
|
||
|
||
- [ ] **Step 1: Stage source/ first (currently untracked → нужно сначала git add)**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
git add source/2026-05-03-modulair.md source/2026-05-03-code-review.md
|
||
git status --short
|
||
```
|
||
|
||
Expected: оба файла отображаются как `A` (staged for add).
|
||
|
||
- [ ] **Step 2: Commit them in source/ first (чтобы git mv был чистым переносом, а не add+remove)**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
git commit -m "$(cat <<'EOF'
|
||
Track existing source/ research clippings
|
||
|
||
Pre-migration commit so the next 'git mv' to .wiki/raw/research/ shows as a
|
||
rename, not delete+add.
|
||
|
||
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
EOF
|
||
)"
|
||
```
|
||
|
||
- [ ] **Step 3: Move both files**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
git mv source/2026-05-03-modulair.md .wiki/raw/research/2026-05-03-modulair.md
|
||
git mv source/2026-05-03-code-review.md .wiki/raw/research/2026-05-03-code-review.md
|
||
git status --short
|
||
```
|
||
|
||
Expected: два `R` (renames), `source/` опустеет.
|
||
|
||
- [ ] **Step 4: Remove empty source/ and sessions/ directories**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
rmdir source sessions
|
||
ls -la | grep -E "^d.*(source|sessions)" || echo "removed"
|
||
```
|
||
|
||
Expected: `removed`.
|
||
|
||
- [ ] **Step 5: Commit migration**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
git commit -m "$(cat <<'EOF'
|
||
Migrate source/ to .wiki/raw/research/ and drop empty sessions/
|
||
|
||
Per redesign §3, all immutable raw material lives under .wiki/raw/. research/
|
||
holds pre-meeting clippings (was source/). transcripts/ will hold meeting
|
||
transcripts (sessions/ removed; was always empty).
|
||
|
||
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
EOF
|
||
)"
|
||
```
|
||
|
||
- [ ] **Step 6: Verify**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
ls .wiki/raw/research/
|
||
test ! -d source && test ! -d sessions && echo "ok"
|
||
```
|
||
|
||
Expected: два markdown-файла внутри `.wiki/raw/research/`, `source/` и `sessions/` отсутствуют.
|
||
|
||
---
|
||
|
||
### Task 4: Update `README.md`
|
||
|
||
**Files:**
|
||
- Modify: `README.md`
|
||
|
||
- [ ] **Step 1: Rewrite `README.md`**
|
||
|
||
```markdown
|
||
# .meeting-room — Shared Workspace
|
||
|
||
> Кросс-проектные брейнстормы и круглые столы агентов. Brainstorm-зона: room-meta лежит локально в `.wiki/`, доменное промочивается в глобальную вики и `.tasks/` целевого проекта через `projects-meta`.
|
||
|
||
## Quickstart
|
||
|
||
- Прочитать `CLAUDE.md` — workspace contract (семантика, правила, триггеры скилов).
|
||
- Прочитать `.wiki/index.md` — навигация по локальной вики.
|
||
- Сценарии для multi-agent совещаний — в `scenarios/`.
|
||
- Реестр persona — в `config/config.yaml` (карточки в `.wiki/entities/persons/` генерируются скилом).
|
||
|
||
## Skills v1
|
||
|
||
- `meeting-room-promote-brainstorm` — `.brainstorm/<topic>.md` → либо локальный `.wiki/concepts/`, либо глобальная вики; action-items → `.tasks/` целевого проекта; исходник → `.archive/`.
|
||
- `meeting-room-start-meeting` — валидирует `scenarios/<topic>.md`, заводит skeleton-транскрипт и буфер.
|
||
- `meeting-room-register-persona` — добавляет роль в `config.yaml` и генерирует карточку в `.wiki/entities/persons/`.
|
||
|
||
## Folder map
|
||
|
||
```
|
||
.meeting-room/
|
||
├── CLAUDE.md ← workspace contract
|
||
├── README.md ← этот файл
|
||
├── .wiki/ ← Karpathy room-meta wiki
|
||
├── scenarios/ ← runtime: сценарии запуска
|
||
├── config/ ← runtime: реестр persona
|
||
├── .brainstorm/ ← рабочий буфер
|
||
├── .archive/ ← post-promotion
|
||
└── .claude/skills/ ← локальные скилы
|
||
```
|
||
|
||
## Persona Registry
|
||
|
||
Твой доверенный агент для `.brainstorm/`:
|
||
- **Role:** Chief Strategy Officer (CSO)
|
||
- **Job:** Обстучать идеи перед линейной реализацией.
|
||
```
|
||
|
||
- [ ] **Step 2: Verify**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
grep -F "❌ NO" README.md && echo "FAIL: still has obsolete rule" || echo "ok: obsolete rule removed"
|
||
grep -F ".wiki/" README.md | head -3
|
||
```
|
||
|
||
Expected: `ok: obsolete rule removed`, плюс минимум 3 ссылки на `.wiki/`.
|
||
|
||
- [ ] **Step 3: Commit**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
git add README.md
|
||
git commit -m "$(cat <<'EOF'
|
||
Update README for redesign
|
||
|
||
Drop obsolete '❌ NO .wiki/.tasks внутри' rule (we now have local .wiki/ for
|
||
room-meta per spec). Point readers at CLAUDE.md and .wiki/index.md, list
|
||
v1 skills, redraw folder map.
|
||
|
||
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
EOF
|
||
)"
|
||
```
|
||
|
||
---
|
||
|
||
## Phase 2: Skills
|
||
|
||
### Task 5: Skill `meeting-room-register-persona`
|
||
|
||
**Files:**
|
||
- Create: `.claude/skills/meeting-room-register-persona/SKILL.md`
|
||
|
||
- [ ] **Step 1: Write `SKILL.md`**
|
||
|
||
```markdown
|
||
---
|
||
name: meeting-room-register-persona
|
||
description: Use when user says "добавь персону", "новый агент в комнату", "register persona <role>", or wants to register a new persona for multi-agent meetings in .meeting-room. Updates config/config.yaml (single source of truth) AND generates .wiki/entities/persons/<role-id>.md. Only this skill writes to entities/persons/.
|
||
---
|
||
|
||
# meeting-room-register-persona
|
||
|
||
Регистрирует новую persona-роль в meeting-room: пишет в `config/config.yaml` (рантайм SoT) и генерирует карточку в `.wiki/entities/persons/<role-id>.md`.
|
||
|
||
## When to use
|
||
|
||
- Пользователь говорит «добавь персону», «новый агент в комнату», «register persona <role>».
|
||
- Пользователь вручную поправил `config/config.yaml` и хочет регенерировать карточку — тоже сюда.
|
||
|
||
## Inputs (collect interactively)
|
||
|
||
| Поле | Тип | Пример |
|
||
|---|---|---|
|
||
| `role-id` | snake_case, уникален в `config.yaml#roles` | `analyst` |
|
||
| `name` | display name | `Analyst` |
|
||
| `model` | строка | `glm-5.1` |
|
||
| `provider` | ключ из `config.yaml#providers` | `ollama_cloud` |
|
||
| `temperature` | число 0–1.5 | `0.5` |
|
||
| `tools` | строка-категория | `discussion` / `web` / `none` |
|
||
| `system_prompt` | многострочный текст | … |
|
||
|
||
Если данные уже есть в `config.yaml` (регенерация карточки) — не спрашивать, читать оттуда.
|
||
|
||
## Steps
|
||
|
||
1. **Прочитать `config/config.yaml`.** Если `roles.<role-id>` уже существует:
|
||
- Если поля совпадают со словами пользователя — это регенерация, идти к шагу 4.
|
||
- Иначе спросить: **overwrite** / **abort** / **новый id**.
|
||
2. **Записать в `config.yaml`** под ключом `roles.<role-id>` со всеми полями.
|
||
- Использовать YAML-парсер с round-trip (`ruamel.yaml` для Python, или ручной insert по структуре). **Не** перезаписывать файл `yaml.dump`-ом без round-trip — порвёт комментарии и порядок ключей.
|
||
3. **Сгенерировать `.wiki/entities/persons/<role-id>.md`:**
|
||
|
||
```markdown
|
||
---
|
||
role-id: <role-id>
|
||
model: <model>
|
||
provider: <provider>
|
||
source: config/config.yaml
|
||
---
|
||
|
||
# <name>
|
||
|
||
**Model:** <model> (<provider>), temperature <temperature>
|
||
**Tools:** <tools>
|
||
|
||
## System prompt
|
||
|
||
<первые 500 символов system_prompt>...
|
||
|
||
## Source of truth
|
||
|
||
Полное определение — в `config/config.yaml#roles.<role-id>`. Эта карточка генерируется скилом `meeting-room-register-persona`; не редактировать вручную.
|
||
```
|
||
|
||
4. **Дописать в `.wiki/log.md`:**
|
||
|
||
```
|
||
<YYYY-MM-DD> registered <role-id>
|
||
```
|
||
|
||
5. **Сообщить пользователю** созданные/обновлённые пути.
|
||
|
||
## Failure modes
|
||
|
||
- `config/config.yaml` отсутствует или невалидный YAML → abort, перечислить ошибки парсинга.
|
||
- Конфликт `role-id` без выбора пользователя → abort.
|
||
- Запись в `config.yaml` упала → abort до записи карточки (single-direction failure).
|
||
|
||
## Side effects
|
||
|
||
- Изменяет `config/config.yaml`.
|
||
- Создаёт/обновляет `.wiki/entities/persons/<role-id>.md`.
|
||
- Аппендит строку в `.wiki/log.md`.
|
||
|
||
## What NOT to do
|
||
|
||
- Не пиши в `entities/persons/` ничего, кроме как через эту последовательность.
|
||
- Не редактируй `config.yaml` без round-trip парсера.
|
||
- Не удаляй существующие роли без явной команды пользователя.
|
||
```
|
||
|
||
- [ ] **Step 2: Verify SKILL.md frontmatter**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
head -5 .claude/skills/meeting-room-register-persona/SKILL.md
|
||
```
|
||
|
||
Expected: `---`, `name: meeting-room-register-persona`, `description: Use when user says ...`, `---`.
|
||
|
||
- [ ] **Step 3: Commit**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
git add .claude/skills/meeting-room-register-persona/SKILL.md
|
||
git commit -m "$(cat <<'EOF'
|
||
Add skill: meeting-room-register-persona
|
||
|
||
Registers a persona in config/config.yaml (SoT) and generates the
|
||
.wiki/entities/persons/<role-id>.md card. Round-trip YAML edit, append-only
|
||
log. Only writer of entities/persons/.
|
||
|
||
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
EOF
|
||
)"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 6: Skill `meeting-room-start-meeting`
|
||
|
||
**Files:**
|
||
- Create: `.claude/skills/meeting-room-start-meeting/SKILL.md`
|
||
|
||
- [ ] **Step 1: Write `SKILL.md`**
|
||
|
||
```markdown
|
||
---
|
||
name: meeting-room-start-meeting
|
||
description: Use when user says "запусти совещание <topic>", "start meeting <scenario>", "новое совещание <topic>", or wants to begin a multi-agent meeting from a scenarios/<topic>.md file in .meeting-room. Validates scenario frontmatter, creates skeleton transcript at .wiki/raw/transcripts/<date>-<topic>.md, opens working buffer at .brainstorm/<topic>.md, logs to .wiki/log.md.
|
||
---
|
||
|
||
# meeting-room-start-meeting
|
||
|
||
Запускает совещание из `scenarios/<topic>.md`: валидирует frontmatter, создаёт skeleton-транскрипт в `.wiki/raw/transcripts/`, заводит рабочий буфер в `.brainstorm/`, логирует в `.wiki/log.md`.
|
||
|
||
## When to use
|
||
|
||
- Пользователь говорит «запусти совещание <topic>», «start meeting <scenario>», «новое совещание <topic>».
|
||
- Пользователь указал scenario-файл и хочет подготовить артефакты под него.
|
||
|
||
## Inputs
|
||
|
||
- Путь `scenarios/<topic>.md` или просто `<topic>` (тогда искать `scenarios/<topic>.md`).
|
||
|
||
## Steps
|
||
|
||
1. **Прочитать `scenarios/<topic>.md`.** Распарсить YAML frontmatter.
|
||
2. **Валидация:**
|
||
- `name`, `problem` непустые;
|
||
- `participants` — список, все элементы существуют как ключи `roles.*` в `config/config.yaml`;
|
||
- `max_rounds` — целое (если присутствует).
|
||
- При ошибке — перечислить, не создавать ничего.
|
||
3. **Сегодняшняя дата** → `<date> = YYYY-MM-DD` (UTC локального компа).
|
||
4. **Создать `.wiki/raw/transcripts/<date>-<topic>.md`** (skeleton):
|
||
|
||
```markdown
|
||
---
|
||
date: <date>
|
||
scenario: scenarios/<topic>.md
|
||
participants: [<participant1>, <participant2>, ...]
|
||
problem: |
|
||
<первая строка problem из scenario>
|
||
---
|
||
|
||
# <name> — transcript <date>
|
||
|
||
<!-- runner будет дописывать сюда. Append-only после первой записи. -->
|
||
```
|
||
|
||
5. **Создать `.brainstorm/<topic>.md`** (если ещё нет):
|
||
|
||
```markdown
|
||
# <name> — working buffer
|
||
|
||
- **Scenario:** [scenarios/<topic>.md](../scenarios/<topic>.md)
|
||
- **Transcript:** [.wiki/raw/transcripts/<date>-<topic>.md](../.wiki/raw/transcripts/<date>-<topic>.md)
|
||
- **Started:** <date>
|
||
|
||
## Заметки
|
||
|
||
<!-- здесь черновик. Промочится скилом meeting-room-promote-brainstorm. -->
|
||
```
|
||
|
||
Если файл уже существует — спросить: **append-skip**, **overwrite**, **abort**.
|
||
|
||
6. **Дописать в `.wiki/log.md`:**
|
||
|
||
```
|
||
<date> started <topic> ([<participants comma-sep>])
|
||
```
|
||
|
||
7. **Вернуть пользователю:** созданные пути и подсказку — как запустить runner (на сегодня запуск runner'а вне scope, скил готовит только артефакты).
|
||
|
||
## Failure modes
|
||
|
||
- `scenarios/<topic>.md` отсутствует → abort.
|
||
- Frontmatter невалидный → перечислить ошибки, ничего не создавать.
|
||
- Participant отсутствует в `config/config.yaml#roles` → abort с указанием отсутствующих ролей.
|
||
- `.brainstorm/<topic>.md` уже есть и пользователь выбрал abort → exit без записи в `raw/transcripts/`.
|
||
|
||
## Side effects
|
||
|
||
- Создаёт `.wiki/raw/transcripts/<date>-<topic>.md`.
|
||
- Создаёт `.brainstorm/<topic>.md` (или модифицирует с разрешения).
|
||
- Аппендит строку в `.wiki/log.md`.
|
||
|
||
## What NOT to do
|
||
|
||
- Не запускать runner — это вне scope скила.
|
||
- Не редактировать `scenarios/<topic>.md`.
|
||
- Не пытаться угадать `participants` если их нет в `config.yaml`.
|
||
```
|
||
|
||
- [ ] **Step 2: Verify**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
head -5 .claude/skills/meeting-room-start-meeting/SKILL.md
|
||
```
|
||
|
||
Expected: frontmatter с `name: meeting-room-start-meeting`.
|
||
|
||
- [ ] **Step 3: Commit**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
git add .claude/skills/meeting-room-start-meeting/SKILL.md
|
||
git commit -m "$(cat <<'EOF'
|
||
Add skill: meeting-room-start-meeting
|
||
|
||
Validates scenarios/<topic>.md frontmatter against config.yaml roles, creates
|
||
skeleton transcript and working buffer, appends to log. Runner invocation is
|
||
out of scope (skill prepares artifacts only).
|
||
|
||
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
EOF
|
||
)"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 7: Skill `meeting-room-promote-brainstorm`
|
||
|
||
**Files:**
|
||
- Create: `.claude/skills/meeting-room-promote-brainstorm/SKILL.md`
|
||
|
||
- [ ] **Step 1: Write `SKILL.md`**
|
||
|
||
```markdown
|
||
---
|
||
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.
|
||
---
|
||
|
||
# meeting-room-promote-brainstorm
|
||
|
||
Финализирует созревший брейнсторм-буфер. По правилу C+ii из spec'а: room-meta → локальный `.wiki/concepts/`, domain → глобал через `projects-meta`; буфер уезжает в `.archive/`.
|
||
|
||
## When to use
|
||
|
||
- «промоутни брейнсторм», «finalize <topic>», «выкати в вики», «promote <topic>».
|
||
- Пользователь явно ссылается на `.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
|
||
│
|
||
▼
|
||
git mv .brainstorm/<topic>.md .archive/<date>-<topic>.md
|
||
│
|
||
▼
|
||
append to .wiki/log.md
|
||
```
|
||
|
||
## Steps
|
||
|
||
1. **Прочитать `.brainstorm/<topic>.md`.** Показать summary (≤2 абзаца).
|
||
2. **Спросить тип:** room-meta (методология самой комнаты) или domain (доменное содержимое для какого-то целевого проекта)?
|
||
3. **Если domain:**
|
||
- Спросить целевой проект (имя папки в `~/projects/`).
|
||
- Валидация: вызвать `mcp__projects-meta__meta_status`, убедиться что проект известен; иначе — abort с сообщением «зарегистрируй проект через setup-projects-meta».
|
||
4. **Парсинг action-items:**
|
||
- regex по строкам вида `- [ ] ...`, `- [ ]`, секции после `## Следующие шаги`/`## TODO`/`## Next steps`/`## Action items`.
|
||
- Показать список, дать редактировать/удалять/добавлять.
|
||
- Если 0 action-items — продолжить, не блокировать.
|
||
5. **Промоушен контента:**
|
||
- **room-meta:** `Write` → `.wiki/concepts/<topic>.md` с frontmatter:
|
||
|
||
```yaml
|
||
---
|
||
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`. Сообщить пользователю.
|
||
|
||
6. **Создание тасок:** для каждого 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-я таска упала — продолжить остальные, в конце сообщить какие созданы / какие нет.
|
||
7. **Архивация:**
|
||
|
||
```bash
|
||
git mv .brainstorm/<topic>.md .archive/<YYYY-MM-DD>-<topic>.md
|
||
```
|
||
|
||
**Только** если шаги 5 и 6 прошли (или прошли с допустимым partial — пользователь подтвердил). Иначе — оставить буфер на месте, чтобы можно было ретраиить.
|
||
|
||
8. **Лог:** дописать в `.wiki/log.md`:
|
||
|
||
```
|
||
<date> promoted <topic> → <destination> [created N tasks in <proj>]
|
||
```
|
||
|
||
9. **Финальный отчёт пользователю:**
|
||
- Куда промочено (полный путь).
|
||
- Какие таски созданы (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` без подтверждения пользователя.
|
||
|
||
## Side effects
|
||
|
||
- room-meta: создаёт `.wiki/concepts/<topic>.md`.
|
||
- domain: создаёт запись в target wiki через MCP.
|
||
- Создаёт N тасок в target `.tasks/` через MCP.
|
||
- Перемещает `.brainstorm/<topic>.md` → `.archive/<date>-<topic>.md`.
|
||
- Аппендит строку в `.wiki/log.md`.
|
||
|
||
## What NOT to do
|
||
|
||
- Не писать доменное содержимое в локальный `.wiki/concepts/` (правило #1 из root `CLAUDE.md`).
|
||
- Не создавать локальный `.tasks/` (правило #3).
|
||
- Не делать `git mv` буфера до успеха ingest+tasks.
|
||
- Не удалять буфер вместо `git mv` — теряется история.
|
||
```
|
||
|
||
- [ ] **Step 2: Verify**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
head -5 .claude/skills/meeting-room-promote-brainstorm/SKILL.md
|
||
grep -c "mcp__projects-meta" .claude/skills/meeting-room-promote-brainstorm/SKILL.md
|
||
```
|
||
|
||
Expected: frontmatter; ≥3 упоминания `mcp__projects-meta`.
|
||
|
||
- [ ] **Step 3: Commit**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
git add .claude/skills/meeting-room-promote-brainstorm/SKILL.md
|
||
git commit -m "$(cat <<'EOF'
|
||
Add skill: meeting-room-promote-brainstorm
|
||
|
||
Closes the lifecycle loop: routes .brainstorm/<topic>.md to either local
|
||
.wiki/concepts/ (room-meta) or global wiki via projects-meta (domain),
|
||
extracts action-items into target project's .tasks, archives buffer.
|
||
Atomic-ish ordering: ingest → tasks → mv. Failure leaves buffer for retry.
|
||
|
||
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
EOF
|
||
)"
|
||
```
|
||
|
||
---
|
||
|
||
## Phase 3: End-to-end validation
|
||
|
||
### Task 8: Generate persona cards via `register-persona` ×4
|
||
|
||
**Files:**
|
||
- Create: `.wiki/entities/persons/analyst.md`
|
||
- Create: `.wiki/entities/persons/idea_generator.md`
|
||
- Create: `.wiki/entities/persons/moderator.md`
|
||
- Create: `.wiki/entities/persons/skeptic.md`
|
||
- Modify: `.wiki/log.md` (append 4 entries)
|
||
|
||
- [ ] **Step 1: Invoke skill for `analyst`**
|
||
|
||
В сессии: «register persona analyst» (или эквивалент). Скил прочитает существующее `roles.analyst` в `config/config.yaml`, спросит подтверждение и сгенерирует карточку.
|
||
|
||
Expected file `.wiki/entities/persons/analyst.md` со frontmatter:
|
||
- `role-id: analyst`
|
||
- `model: glm-5.1`
|
||
- `provider: ollama_cloud`
|
||
- `source: config/config.yaml`
|
||
|
||
- [ ] **Step 2: Invoke skill for `idea_generator`**
|
||
|
||
«register persona idea_generator». Expected:
|
||
- `model: deepseek-v4-flash`
|
||
- `provider: ollama_cloud`
|
||
|
||
- [ ] **Step 3: Invoke skill for `moderator`**
|
||
|
||
«register persona moderator». Expected:
|
||
- `model: glm-5.1`
|
||
- `provider: ollama_cloud`
|
||
|
||
- [ ] **Step 4: Invoke skill for `skeptic`**
|
||
|
||
«register persona skeptic». Expected:
|
||
- `model: qwen3.5:397b`
|
||
- `provider: ollama_cloud`
|
||
|
||
- [ ] **Step 5: Verify**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
ls .wiki/entities/persons/ | grep -v gitkeep
|
||
tail -5 .wiki/log.md
|
||
```
|
||
|
||
Expected: четыре `.md`-файла. В `log.md` — четыре строки `<date> registered <role-id>`.
|
||
|
||
- [ ] **Step 6: Commit**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
git add .wiki/entities/persons/ .wiki/log.md config/
|
||
git commit -m "$(cat <<'EOF'
|
||
Generate persona cards from config.yaml (analyst/idea_generator/moderator/skeptic)
|
||
|
||
First end-to-end exercise of meeting-room-register-persona. Cards link back
|
||
to config/config.yaml as SoT.
|
||
|
||
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
EOF
|
||
)"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 9: Smoke-test `start-meeting` on existing `scenarios/modulair.md`
|
||
|
||
**Files (created/modified by skill):**
|
||
- Create: `.wiki/raw/transcripts/<today>-modulair.md` (skeleton — затем удалим, т.к. этот scenario — артефакт прошлого, не текущая встреча)
|
||
- (НЕ модифицируем `.brainstorm/modulair-rag.md` — он будет обработан в Task 10)
|
||
|
||
**Цель:** проверить, что валидатор frontmatter работает на реальном сценарии и skeleton-файл генерируется в правильном формате. Это smoke-test, не запуск настоящей встречи.
|
||
|
||
- [ ] **Step 1: Запустить `meeting-room-start-meeting` на `scenarios/modulair.md`**
|
||
|
||
В сессии: «start meeting scenarios/modulair.md».
|
||
|
||
Expected:
|
||
- Frontmatter валидный (4 participants, problem непустой, max_rounds=6).
|
||
- Создан `.wiki/raw/transcripts/<today>-modulair.md`.
|
||
- Скил не должен пытаться создать `.brainstorm/modulair.md` overwriting `.brainstorm/modulair-rag.md` — другой topic-name. Если скил предложит создать `.brainstorm/modulair.md` — отказаться (smoke-test only) либо принять (он просто будет shell-файл).
|
||
|
||
- [ ] **Step 2: Удалить smoke-test артефакты**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
rm -f .wiki/raw/transcripts/*-modulair.md
|
||
rm -f .brainstorm/modulair.md # если был создан
|
||
# log.md строку оставить — append-only
|
||
```
|
||
|
||
- [ ] **Step 3: Verify**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
ls .wiki/raw/transcripts/ | grep -v gitkeep || echo "empty (ok)"
|
||
ls .brainstorm/ | grep -F modulair.md && echo "FAIL: leftover" || echo "ok"
|
||
tail -3 .wiki/log.md
|
||
```
|
||
|
||
Expected: transcripts/ пуст (только .gitkeep), `.brainstorm/modulair.md` отсутствует, в log.md одна запись `started modulair`.
|
||
|
||
- [ ] **Step 4: Commit (только log)**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
git add .wiki/log.md
|
||
git commit -m "$(cat <<'EOF'
|
||
Smoke-test meeting-room-start-meeting on scenarios/modulair.md
|
||
|
||
Validates frontmatter parser and skeleton generation. Transcript skeleton
|
||
removed afterward — this scenario was a past artifact, not a live meeting.
|
||
Log entry kept (append-only).
|
||
|
||
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
EOF
|
||
)"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 10: First real `promote-brainstorm` — `modulair-rag.md`
|
||
|
||
**Files (created/moved by skill):**
|
||
- Create: `.wiki/concepts/modulair-rag-brainstorm-trace.md`
|
||
- Move: `.brainstorm/modulair-rag.md` → `.archive/2026-05-05-modulair-rag.md`
|
||
- Modify: `.wiki/log.md` (append)
|
||
|
||
**Контекст:** доменный design уже промочен в `~/projects/.wiki/concepts/modulair-rag-design.md` (упомянуто в шапке самого файла). То, что осталось — process trace: «как развивался брейнсторм, какие развилки выбрали, что отвергнуто и почему». Это **room-meta**.
|
||
|
||
- [ ] **Step 1: Stage `.brainstorm/modulair-rag.md` (currently untracked)**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
git add .brainstorm/modulair-rag.md
|
||
git commit -m "$(cat <<'EOF'
|
||
Track existing modulair-rag brainstorm capture
|
||
|
||
Pre-promotion commit so the next 'git mv' to .archive/ shows as a rename.
|
||
|
||
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
EOF
|
||
)"
|
||
```
|
||
|
||
- [ ] **Step 2: Запустить `meeting-room-promote-brainstorm` на `.brainstorm/modulair-rag.md`**
|
||
|
||
В сессии: «промоутни брейнсторм modulair-rag».
|
||
|
||
Ответы пользователя:
|
||
- Тип: **room-meta** (process trace, не доменное).
|
||
- Имя файла промо: `modulair-rag-brainstorm-trace.md` (предлагается; если скил иначе — поправить).
|
||
- Action-items: те, что уже в §«Следующие шаги» исходника (3 пункта). Из них:
|
||
1. «Брейнсторм per остальным 5 sub-projects» — таска в проект `meeting-room` (или явно отказаться, если `meeting-room` ещё не зарегистрирован в `projects-meta`).
|
||
2. «Поднять структуру modulair-rag» — таска в проект `modulair-rag`, если он зарегистрирован, иначе пропустить.
|
||
3. «Заведение golden-set» — таска в проект `modulair-rag`.
|
||
|
||
Если ни один из проектов не виден `projects-meta` — пропустить tasks_create целиком, продолжить только промоушен контента.
|
||
|
||
- [ ] **Step 3: Verify side effects**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
test -f .wiki/concepts/modulair-rag-brainstorm-trace.md && echo "concept ok"
|
||
test -f .archive/2026-05-05-modulair-rag.md && echo "archive ok"
|
||
test ! -f .brainstorm/modulair-rag.md && echo "buffer cleared"
|
||
tail -3 .wiki/log.md
|
||
```
|
||
|
||
Expected: `concept ok`, `archive ok`, `buffer cleared`, последняя запись лога — `2026-05-05 promoted modulair-rag → .wiki/concepts/modulair-rag-brainstorm-trace.md ...`.
|
||
|
||
- [ ] **Step 4: Commit**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
git add .wiki/concepts/modulair-rag-brainstorm-trace.md \
|
||
.archive/ \
|
||
.wiki/log.md
|
||
git status --short # must show .brainstorm/modulair-rag.md as 'D' or part of rename
|
||
git commit -m "$(cat <<'EOF'
|
||
Promote modulair-rag brainstorm trace to .wiki/concepts/
|
||
|
||
First real run of meeting-room-promote-brainstorm. Process trace classified
|
||
as room-meta (domain design already lives in ~/projects/.wiki/). Buffer
|
||
archived as 2026-05-05-modulair-rag.md.
|
||
|
||
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
EOF
|
||
)"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 11: Self-promotion — `meeting-room-redesign.md` + `meeting-room-redesign-plan.md`
|
||
|
||
**Files (created/moved by skill):**
|
||
- Create: `.wiki/concepts/meeting-room-architecture.md` (промо spec'а; план реализации в него либо вшивается приложением, либо архивируется отдельно)
|
||
- Move: `.brainstorm/meeting-room-redesign.md` → `.archive/2026-05-05-meeting-room-redesign.md`
|
||
- Move: `.brainstorm/meeting-room-redesign-plan.md` → `.archive/2026-05-05-meeting-room-redesign-plan.md`
|
||
- Modify: `.wiki/log.md` (append)
|
||
|
||
- [ ] **Step 1: Запустить `meeting-room-promote-brainstorm` на `.brainstorm/meeting-room-redesign.md`**
|
||
|
||
В сессии: «промоутни брейнсторм meeting-room-redesign».
|
||
|
||
Ответы пользователя:
|
||
- Тип: **room-meta**.
|
||
- Имя файла промо: `meeting-room-architecture.md`.
|
||
- Action-items: пусто (план уже исполнен — это тоже сигнал, что промоушен закрывает цикл). Если скил предложит — отвергнуть.
|
||
|
||
- [ ] **Step 2: Архивировать план отдельно**
|
||
|
||
`meeting-room-redesign-plan.md` — это implementation plan, не methodology spec. Не нужно его повторно ингестить в `concepts/`. Просто переместить в `.archive/`:
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
git mv .brainstorm/meeting-room-redesign-plan.md .archive/2026-05-05-meeting-room-redesign-plan.md
|
||
```
|
||
|
||
- [ ] **Step 3: Verify**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
test -f .wiki/concepts/meeting-room-architecture.md && echo "concept ok"
|
||
test -f .archive/2026-05-05-meeting-room-redesign.md && echo "spec archived"
|
||
test -f .archive/2026-05-05-meeting-room-redesign-plan.md && echo "plan archived"
|
||
ls .brainstorm/ | grep -v gitkeep | wc -l
|
||
```
|
||
|
||
Expected: первые три проверки — ok; в `.brainstorm/` остались только `.gitkeep` или вообще ноль файлов (буфер чист).
|
||
|
||
- [ ] **Step 4: Commit**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
git add .wiki/concepts/meeting-room-architecture.md .archive/ .wiki/log.md .brainstorm/
|
||
git commit -m "$(cat <<'EOF'
|
||
Self-promote redesign spec; archive implementation plan
|
||
|
||
Final closure: redesign spec lives at .wiki/concepts/meeting-room-architecture.md;
|
||
both spec and plan archived under .archive/2026-05-05-*. Buffer .brainstorm/
|
||
back to empty. System bootstrapped on its own artifacts.
|
||
|
||
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
EOF
|
||
)"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 12: Final state validation
|
||
|
||
- [ ] **Step 1: Folder layout matches spec §3**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
tree -L 3 -a -I '.git|.gitkeep' || ls -laR .wiki .claude/skills
|
||
```
|
||
|
||
Expected: видна иерархия из spec §3, без `source/`, без `sessions/`, с `.wiki/concepts/` содержащим 2 файла (`modulair-rag-brainstorm-trace.md`, `meeting-room-architecture.md`), с `.wiki/entities/persons/` содержащим 4 карточки, с `.archive/` содержащим 3 файла.
|
||
|
||
- [ ] **Step 2: All commits clean, на master, не запушены**
|
||
|
||
```bash
|
||
cd C:/Users/vitya/projects/.meeting-room
|
||
git status
|
||
git log --oneline -20
|
||
git rev-list --count origin/master..HEAD 2>/dev/null || echo "no upstream tracking — ok per project-discipline"
|
||
```
|
||
|
||
Expected: working tree clean; все коммиты на master; ветка опережает origin (если upstream есть) — не пушим без явного разрешения.
|
||
|
||
- [ ] **Step 3: Skills загружены и видны**
|
||
|
||
В сессии Claude Code сделать `/skills` или эквивалент. Expected: три скила `meeting-room-*` видны.
|
||
|
||
- [ ] **Step 4: Memory todo может быть закрыт**
|
||
|
||
Открытый todo `project_extend_discipline_for_meeting_room.md` в `MEMORY.md` — корневой `CLAUDE.md` теперь явно overrides `project-discipline` для этой комнаты. Memory можно обновить статусом «закрыт через локальный CLAUDE.md». Это вне scope plan'а — пометить пользователю.
|
||
|
||
---
|
||
|
||
## Self-Review
|
||
|
||
**Spec coverage:**
|
||
|
||
- §3 (Целевая структура) → Tasks 1, 3.
|
||
- §4 (Lifecycle) → описывается, реализуется через скилы Tasks 5–7.
|
||
- §5.1 (`promote-brainstorm`) → Task 7 (write), Tasks 10–11 (test).
|
||
- §5.2 (`start-meeting`) → Task 6 (write), Task 9 (smoke-test).
|
||
- §5.3 (`register-persona`) → Task 5 (write), Task 8 (test ×4).
|
||
- §6 (root `CLAUDE.md`) → Task 2.
|
||
- §7 (`.wiki/CLAUDE.md`) → Task 1, Step 2.
|
||
- §8.1 (миграция папок) → Tasks 3, 4.
|
||
- §8.2 (`modulair-rag.md`) → Task 10.
|
||
- §8.3 (self-promotion spec) → Task 11.
|
||
- §9 (открытые вопросы) — informational, не требует таски.
|
||
|
||
Покрытие полное.
|
||
|
||
**Placeholder scan:** В планe нет TBD/TODO/«implement later». Каждый шаг содержит либо конкретный код/файл, либо проверяемую команду, либо явные ответы для интерактивного скила.
|
||
|
||
**Type consistency:**
|
||
- `role-id` (snake_case) используется единообразно во всех скилах и frontmatter.
|
||
- Имена скилов: `meeting-room-{promote-brainstorm,start-meeting,register-persona}` — везде с дефисом, без двоеточия (двоеточие — это plugin-namespace, не для project-skill).
|
||
- `<date>` формат `YYYY-MM-DD` единый.
|
||
- `mcp__projects-meta__{knowledge_ingest,tasks_create,meta_status}` — единое написание.
|
||
|
||
Проблем не найдено.
|