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>
85 lines
4.0 KiB
Markdown
85 lines
4.0 KiB
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 парсера.
|
||
- Не удаляй существующие роли без явной команды пользователя.
|