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>
This commit is contained in:
2026-05-05 14:34:28 +03:00
parent 1f471afa4e
commit f10a341afa

View File

@@ -0,0 +1,84 @@
---
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` | число 01.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 парсера.
- Не удаляй существующие роли без явной команды пользователя.