B+1+C+ii: local .wiki/ for room-meta only, Karpathy folder layout, no local .tasks (action items go to target projects via projects-meta), buffers move to .archive/ after promotion. Skills v1: promote-brainstorm, start-meeting, register-persona. Spec promotes itself once the system is in place. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
18 KiB
date, topic, status, type, promotes_to
| date | topic | status | type | promotes_to |
|---|---|---|---|---|
| 2026-05-05 | meeting-room-redesign | draft | room-meta | .wiki/concepts/meeting-room-architecture.md |
Meeting-Room Redesign — design spec
1. Контекст
.meeting-room/ сейчас объявлена транзитной зоной (README.md: «❌ NO .tasks/.wiki внутри»). На практике:
- В
.brainstorm/modulair-rag.mdуже копится содержательный артефакт прошедшей сессии — ему некуда уехать кроме.archive/или ручного копирования в глобал. - Реестр персон (
config/config.yaml) — операционный конфиг без человекочитаемого вики-слоя. - Два типа сырья (pre-loaded research в
source/и транскрипты вsessions/) разнесены по плоским папкам без общей семантики. - В памяти
MEMORY.mdесть открытый todoproject_extend_discipline_for_meeting_room.md—project-disciplineмолчит про brainstorm-workspace.
Цель редизайна — достроить комнату как «микро-проект про методологию совещаний» без превращения её в полноценный проект с локальным backlog. Опереться на Karpathy LLM Wiki pattern для структуры знаний и на projects-meta для связи с глобальным скоупом.
2. Принятые решения
| # | Развилка | Решение |
|---|---|---|
| 1 | Wiki/Tasks семантика | B: локальный .wiki/ есть, локальных .tasks/ нет |
| 2 | Folder-миграция | 1 (чистый Karpathy): всё «сырое» централизовано в .wiki/raw/ |
| 3 | Промоушен | C: локальный .wiki/concepts/ зарезервирован под room-meta; доменное идёт сразу в глобал, без hop |
| 4 | Судьба буфера после промоушена | (ii): .brainstorm/<topic>.md → .archive/<date>-<topic>.md |
| 5 | Skill v1 | promote-brainstorm, start-meeting, register-persona |
| 6 | Persona sync | α: писать в обе стороны имеет право только register-persona; config.yaml — SoT |
| 7 | Project-discipline | master-only ✅, push-by-permission ✅, semver — N/A, локальные tasks — N/A |
| 8 | Spec этого редизайна | живёт здесь, после сборки промоутим своей же системой в .wiki/concepts/meeting-room-architecture.md |
3. Целевая структура
.meeting-room/
├── CLAUDE.md ← корневой контракт работы в комнате (см. §6)
├── README.md ← обновлённый, ссылка на CLAUDE.md и .wiki/
│
├── .wiki/ ← Karpathy-canonical, room-meta only
│ ├── CLAUDE.md ← вики-схема (см. §7)
│ ├── index.md ← навигация
│ ├── overview.md ← что такое meeting-room
│ ├── log.md ← хронологический лог: meetings, promotions, persona changes
│ ├── raw/
│ │ ├── README.md
│ │ ├── research/ ← бывший source/: pre-loaded clippings, транскрипты внешних чатов
│ │ └── transcripts/ ← бывший sessions/: транскрипты прошедших совещаний
│ ├── entities/
│ │ ├── persons/ ← карточки persona (генерируются из config.yaml)
│ │ └── projects/ ← pointer-карточки для целевых проектов (modulair-rag, books, …)
│ ├── concepts/ ← room-meta: методология, ретроспективы, паттерны
│ ├── packages/ ← инструменты комнаты (runner, framework, schema)
│ └── sources/ ← внешняя литература (Karpathy gist, фасилитация, multi-agent)
│
├── scenarios/ ← runtime: frontmatter-сценарии для запуска multi-agent
├── config/ ← runtime: config.yaml — single source of truth для persona
├── .brainstorm/ ← рабочий буфер: черновики, single-agent capture
├── .archive/ ← post-promotion: исходники из .brainstorm/, старые сценарии
└── .claude/ ← локальные скилы и settings.local.json
└── skills/
├── meeting-room/
│ ├── promote-brainstorm/SKILL.md
│ ├── start-meeting/SKILL.md
│ └── register-persona/SKILL.md
Различие .wiki/raw/ ↔ .brainstorm/: raw — immutable, append-only, сырое. .brainstorm/ — рабочий, редактируемый, чистится промоушеном.
Различие .wiki/concepts/ ↔ ~/projects/.wiki/concepts/: локальный — только про то, как комната работает. Глобал — доменное содержимое, рождённое в комнате.
4. Lifecycle
PRE-MEETING
user clip → .wiki/raw/research/<date>-<topic>.md
user writes → scenarios/<topic>.md (frontmatter: name, participants, problem)
MEETING
start-meeting <s> → создаёт .wiki/raw/transcripts/<date>-<topic>.md (skeleton)
создаёт .brainstorm/<topic>.md (shell)
логирует в .wiki/log.md
multi-agent run → дописывает транскрипт в .wiki/raw/transcripts/<date>-<topic>.md
single-agent CSO → ведёт активный диалог в .brainstorm/<topic>.md
POST-MEETING
promote-brainstorm → парсит .brainstorm/<topic>.md
спрашивает: room-meta или domain?
room-meta → .wiki/concepts/<topic>.md
domain → ~/projects/<proj>/.wiki/concepts/<topic>.md
via mcp__projects-meta__knowledge_ingest
парсит action-items, создаёт в .tasks/ target-проекта
via mcp__projects-meta__tasks_create
git mv .brainstorm/<topic>.md → .archive/<date>-<topic>.md
логирует в .wiki/log.md
5. Skills v1
Каждый скил живёт в .claude/skills/meeting-room/<name>/SKILL.md. Триггер-фразы — в frontmatter description, чтобы автодиспетчер их подхватывал.
5.1 meeting-room:promote-brainstorm
Триггеры: «промоутни брейнсторм», «finalize <topic>», «выкати в вики», «promote <topic>».
Аргумент: путь к файлу .brainstorm/<topic>.md или topic-name.
Интерактивные шаги:
- Прочитать файл, показать summary (1–2 абзаца).
- Спросить: room-meta или domain?
- Если domain — спросить целевой проект; валидация
~/projects/<proj>/существует и виденprojects-meta. - Распарсить action-items (checkbox
- [ ], секции «TODO», «следующие шаги», «next steps»). Показать список, дать отредактировать.
Действия (в порядке, atomic-ish):
- Промоушен контента:
- room-meta:
Write→.wiki/concepts/<topic>.mdс frontmatter (date,source: .brainstorm/<topic>.md,status: promoted). - domain:
mcp__projects-meta__knowledge_ingestс target-проектом и контентом.
- room-meta:
- Создание тасок: для каждого action-item —
mcp__projects-meta__tasks_createс target-проектом, title, description. - Архивация:
git mv .brainstorm/<topic>.md .archive/<YYYY-MM-DD>-<topic>.md. - Лог: дописать строку в
.wiki/log.md:<date> promoted <topic> → <destination>; created N tasks in <proj>.
Failure modes:
- Целевой проект не найден /
projects-metaнедоступен → abort до любых записей. - Промоушен прошёл,
tasks_createупал на N-м экшене → продолжить, в логе зафиксировать частичный успех;.brainstorm/не перемещать пока пользователь не подтвердит. - Файла
.brainstorm/<topic>.mdнет → abort, ничего не делать.
5.2 meeting-room:start-meeting
Триггеры: «запусти совещание <topic>», «start meeting <scenario>», «новое совещание <topic>».
Аргумент: путь scenarios/<topic>.md или topic-name.
Шаги:
- Прочитать
scenarios/<topic>.md, распарсить YAML frontmatter. - Валидация:
name,problemнепустые;- все
participantsприсутствуют как роли вconfig/config.yaml; max_rounds— целое (если есть).
- Сегодняшняя дата →
<date> = YYYY-MM-DD. - Создать
.wiki/raw/transcripts/<date>-<topic>.mdсо скелетом (frontmatter:date,scenario: scenarios/<topic>.md,participants,problem). - Создать
.brainstorm/<topic>.mdсо skeleton (заголовок, ссылки на сценарий и транскрипт). - Дописать в
.wiki/log.md:<date> started <topic> ({participants}). - Вернуть пользователю созданные пути и подсказку, как запустить multi-agent runner.
Failure modes:
- Frontmatter невалидный → перечислить ошибки, ничего не создавать.
.brainstorm/<topic>.mdуже есть → спросить: продолжить (append-skip) или прервать.
5.3 meeting-room:register-persona
Триггеры: «добавь персону», «новый агент в комнату», «register persona <role>».
Интерактивный сбор полей:
role-id(snake_case, уникальный)name(display)model,provider,temperature,tools,system_prompt
Шаги:
- Прочитать
config/config.yaml. Еслиroles.<role-id>существует — спросить: overwrite, abort, новый id. - Обновить
config.yaml, сохраняя YAML-форматирование (использовать YAML-парсер с round-trip — иначе комментарии и порядок ключей побьются). - Сгенерировать
.wiki/entities/persons/<role-id>.mdс frontmatter (role-id,model,provider,source: config/config.yaml) и body — summary поведения роли, цитатаsystem_prompt, ссылка наconfig.yaml. - Дописать в
.wiki/log.md:<date> registered persona <role-id>.
Sync-правило (α): все автоматические записи в entities/persons/ идут только через этот скил. Ручные правки разрешены только в config.yaml; для пере-генерации карточки — снова register-persona <role> (он определит, что роль уже есть, и пере-сгенерирует).
6. Корневой CLAUDE.md
Содержание (outline):
- Идентичность: «Это
.meeting-room— workspace для кросс-проектных брейнштормов и круглых столов. Не код-проект.» - Семантика артефактов (короткая шпаргалка из §3 + §4).
- Жёсткие правила:
- Доменное содержимое никогда не оседает в локальном
.wiki/— всегда в глобал черезprojects-meta. - Локальный
.wiki/— только room-meta (методология, persona-карточки, лог встреч, ретро). - Локальные
.tasks/не создавать — экшены идут в.tasks/целевого проекта черезprojects-meta__tasks_create. - Перед любым предложением tooling/архитектуры — прочитать
.wiki/raw/research/для текущего топика (закрепляетfeedback_read_source_transcripts.mdиз памяти).
- Доменное содержимое никогда не оседает в локальном
- Триггеры скилов v1: перечень фраз → скил.
- Override
project-discipline:- master-only ✅
- commit freely / push by permission ✅
- semver-bump — N/A (нет versioned-артефактов в комнате)
- локальные
.tasks/— N/A (запрещены §6.3)
- Persona registry: SoT —
config/config.yaml. Карточки.wiki/entities/persons/— производное, пишется только скиломregister-persona.
7. .wiki/CLAUDE.md (схема)
Karpathy-канон от setup-wiki + meeting-room-специфика:
entities/persons/<role-id>.md— frontmatter обязателен (role-id,model,provider,source); body — summary и цитата system_prompt.entities/projects/<proj>.md— pointer-карточка к глобальному проекту (минимум: путь, краткая роль в контексте комнаты, ссылки на встречи где он фигурировал).concepts/<topic>.md— room-meta: методология, ретро. Frontmatter:date,source: .brainstorm/<topic>.md(или.archive/...).raw/research/<date>-<topic>.md— внешний clipping. Frontmatter:date,source(URL),topic.raw/transcripts/<date>-<topic>.md— транскрипт встречи. Frontmatter:date,scenario,participants.log.md— append-only, формат:<date> <event-type> <topic> [details].
8. Migration plan
8.1 Существующие папки
| Источник | Назначение | Способ |
|---|---|---|
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 mv |
sessions/ (пусто) |
.wiki/raw/transcripts/ (пусто) |
создать новую |
.archive/ (пусто) |
остаётся .archive/ |
без изменений |
scenarios/ |
остаётся scenarios/ |
без изменений |
config/ |
остаётся config/ |
без изменений |
.brainstorm/modulair-rag.md |
особый кейс — см. §8.2 | через promote-brainstorm (первый прогон) |
README.md |
обновить: ссылки на CLAUDE.md, .wiki/, удалить устаревшее правило «❌ NO .wiki внутри» |
edit |
8.2 modulair-rag.md — особый кейс
Содержимое — process trace прошедшей single-agent сессии. Финальный design уже лежит в ~/projects/.wiki/concepts/modulair-rag-design.md (упомянут в шапке самого файла). То есть доменный layer уже промочен, что осталось в .brainstorm/ — это методологический след: «как развивался брейнсторм, какие развилки выбрали, что отвергнуто и почему».
Это room-meta. Назначение при промоушене — .wiki/concepts/modulair-rag-brainstorm-trace.md (или похожее имя). Тасок не порождает (всё доменное уже зафиксировано). Исходник → .archive/2026-05-05-modulair-rag.md.
Использовать как первый end-to-end тест promote-brainstorm.
8.3 Spec этого редизайна
После сборки структуры и v1-скилов — прогнать meeting-room:promote-brainstorm на самом этом файле. Назначение: .wiki/concepts/meeting-room-architecture.md. Тасок не порождает (план реализации идёт через writing-plans отдельно). Исходник → .archive/2026-05-05-meeting-room-redesign.md.
9. Открытые вопросы (не блокируют реализацию)
- Имя файла промо для
modulair-rag.md—modulair-rag-brainstorm-trace.mdрабочая идея, финальное при первом прогоне. - Парсер action-items в
promote-brainstorm— начнём с regex по- [ ]и явным секциям; LLM-парсер только если regex окажется недостаточным. - Что писать в
entities/projects/<proj>.md— формат карточки утрясём после первой реальной встречи post-redesign (сейчас нет данных). - Расширение
project-disciplineдля brainstorm-workspaces — после стабилизации этой комнаты подать как PR в самproject-discipline(закрытие memory-todoproject_extend_discipline_for_meeting_room.md).