From f10a341afad795ce4dd49818ebd28b76c52e5462 Mon Sep 17 00:00:00 2001 From: vitya Date: Tue, 5 May 2026 14:34:28 +0300 Subject: [PATCH] Add skill: meeting-room-register-persona Registers a persona in config/config.yaml (SoT) and generates the .wiki/entities/persons/.md card. Round-trip YAML edit, append-only log. Only writer of entities/persons/. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../meeting-room-register-persona/SKILL.md | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 .claude/skills/meeting-room-register-persona/SKILL.md diff --git a/.claude/skills/meeting-room-register-persona/SKILL.md b/.claude/skills/meeting-room-register-persona/SKILL.md new file mode 100644 index 0000000..47bf38d --- /dev/null +++ b/.claude/skills/meeting-room-register-persona/SKILL.md @@ -0,0 +1,84 @@ +--- +name: meeting-room-register-persona +description: Use when user says "добавь персону", "новый агент в комнату", "register persona ", 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/.md. Only this skill writes to entities/persons/. +--- + +# meeting-room-register-persona + +Регистрирует новую persona-роль в meeting-room: пишет в `config/config.yaml` (рантайм SoT) и генерирует карточку в `.wiki/entities/persons/.md`. + +## When to use + +- Пользователь говорит «добавь персону», «новый агент в комнату», «register persona ». +- Пользователь вручную поправил `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.` уже существует: + - Если поля совпадают со словами пользователя — это регенерация, идти к шагу 4. + - Иначе спросить: **overwrite** / **abort** / **новый id**. +2. **Записать в `config.yaml`** под ключом `roles.` со всеми полями. + - Использовать YAML-парсер с round-trip (`ruamel.yaml` для Python, или ручной insert по структуре). **Не** перезаписывать файл `yaml.dump`-ом без round-trip — порвёт комментарии и порядок ключей. +3. **Сгенерировать `.wiki/entities/persons/.md`:** + + ```markdown + --- + role-id: + model: + provider: + source: config/config.yaml + --- + + # + + **Model:** (), temperature + **Tools:** + + ## System prompt + + <первые 500 символов system_prompt>... + + ## Source of truth + + Полное определение — в `config/config.yaml#roles.`. Эта карточка генерируется скилом `meeting-room-register-persona`; не редактировать вручную. + ``` + +4. **Дописать в `.wiki/log.md`:** + + ``` + registered + ``` + +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/.md`. +- Аппендит строку в `.wiki/log.md`. + +## What NOT to do + +- Не пиши в `entities/persons/` ничего, кроме как через эту последовательность. +- Не редактируй `config.yaml` без round-trip парсера. +- Не удаляй существующие роли без явной команды пользователя.