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:
84
.claude/skills/meeting-room-register-persona/SKILL.md
Normal file
84
.claude/skills/meeting-room-register-persona/SKILL.md
Normal 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` | число 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 парсера.
|
||||
- Не удаляй существующие роли без явной команды пользователя.
|
||||
Reference in New Issue
Block a user