3.0 KiB
3.0 KiB
DSH role loader — план
Ветка: feat/39-dsh-role-loader (issue #39).
Спека/дизайн: dsh/PORT.md.
Цель
Дать модели DSH штатный способ загрузить роль: skill role, который читает
~/.dsh/roles/<r>.md. /role остаётся пользовательской командой; глобальные
инструкции больше не требуют от модели вызвать slash-команду.
Scope
dsh/skills/role/SKILL.md— model-invocable инструкция: определить роль, прочитать файл, объявить роль, следовать процессу.dsh/install.sh --skills: копировать локальныеdsh/skills/*в$DSH_HOME/skillsвместе с superpowers.install_global: adapter-строка «модель использует skillrole;/role— пользовательская команда».- Тесты: наличие/содержимое skill, install-копирование,
--check. - README/PORT.
Non-goals
- Кастомный
ctx.tools.register('role')— отдельный вариант, если skill окажется недостаточно. - Автоматическая инъекция роли в
agent/pre-step— возможный следующий шаг. - Изменение
global/CLAUDE.md(он общий с Claude Code и ограничен 3 КБ).
Задачи
- Task 1: skill
role- Create:
dsh/skills/role/SKILL.md - Frontmatter:
name: role, description для каталога. - Body: роль из первого сообщения; пути
~/.dsh/roles,~/.claude/roles, reporoles/; прочитать файл; объявить «Роль: ; если не так — скажи». - Не вызывать
/role; это команда пользователя.
- Create:
- Task 2: install.sh
- Modify:
dsh/install.sh install_local_skills()копирует$ROOT/dsh/skills/*в$DSH_HOME/skills.--skillsвызывает superpowers + local;--allуже включает.checkпроверяет$DSH_HOME/skills/role/SKILL.md.install_globalдобавляет adapter-строку про skillrole.
- Modify:
- Task 3: тесты
- Modify:
dsh/tests/install.test.mjs— role skill скопирован. - Add:
dsh/tests/role-skill.test.mjs— frontmatter, пути, запрет/role.
- Modify:
- Task 4: docs
- Modify:
dsh/README.md,dsh/PORT.md— skillrolevs/role.
- Modify:
- Task 5: проверки и коммит
bash dsh/tests/run.shbash tests/run.sh- Commit, push, PR #40 (base main).
Acceptance
Свежая сессия DSH, «Let's make a react todo list»:
- модель вызывает
skill({name:"role"}); - читает
~/.dsh/roles/dev.md; - объявляет роль и следует процессу, без ручного
/role.