feat: разворачивание комка plugin-dev — 7 навыков (роутер-реестр)

Эпик роутер-реестр, спека v2 §2, этап 1. Зонтик plugin-dev развёрнут в
7 карточек-навыков + 7 под-узлов #57a..#57g.

- 7 карточек plugin-dev__<навык>.contract.json (agent/command/hook/mcp/
  plugin-structure/plugin-settings/skill-development)
- nodes.yaml: узел #57 → #57a..#57g; keyword-триггеры на plugin-structure;
  ссылка L11 обновлена на plugin-dev:plugin-structure
- зонтик plugin-dev убран (карточка + узел)
- registry-load.test: 109 узлов / 101 active

Регрессия (без 5 pre-existing node:test файлов): 4361 passed, exit 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-06-18 23:05:06 +03:00
parent 5a7c5c255c
commit ded5372f4e
11 changed files with 299 additions and 24 deletions
@@ -1,12 +0,0 @@
{
"skill": "plugin-dev",
"kind": "external",
"needs": ["намерение разработать marketplace Claude-плагин"],
"produces": ["scaffold плагина (plugin.json, MCP, хуки, доки, публикация)"],
"constraints": ["8 sub-skills + 3 агента", "НЕ standalone-скилы (skill-creator)"],
"preview-form": "outline",
"defaults": ["plugin.json + структура компонентов"],
"key-decisions": ["состав компонентов плагина"],
"acceptance-criteria": ["плагин валиден и публикуем"],
"source": { "version": "n/a", "hash": "0000000000000000000000000000000000000000000000000000000000000000", "path": "" }
}
@@ -0,0 +1,29 @@
{
"skill": "plugin-dev:agent-development",
"kind": "external",
"needs": [
"намерение создать субагента плагина"
],
"produces": [
"субагент: frontmatter + when-to-use + системный промпт"
],
"constraints": [
"под-навык зонтика plugin-dev (разработка Claude-плагинов)",
"компоненты плагина, НЕ standalone-навыки (skill-creator)"
],
"preview-form": "outline",
"defaults": [
"структура агента и условия срабатывания"
],
"key-decisions": [
"scope и триггеры агента"
],
"acceptance-criteria": [
"агент оформлен по best-practices"
],
"source": {
"version": "n/a",
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
"path": ""
}
}
@@ -0,0 +1,29 @@
{
"skill": "plugin-dev:command-development",
"kind": "external",
"needs": [
"намерение создать слэш-команду плагина"
],
"produces": [
"слэш-команда: YAML-frontmatter + аргументы + bash"
],
"constraints": [
"под-навык зонтика plugin-dev (разработка Claude-плагинов)",
"компоненты плагина, НЕ standalone-навыки (skill-creator)"
],
"preview-form": "outline",
"defaults": [
"frontmatter и динамические аргументы"
],
"key-decisions": [
"аргументы и интерактивность команды"
],
"acceptance-criteria": [
"команда работает с аргументами"
],
"source": {
"version": "n/a",
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
"path": ""
}
}
@@ -0,0 +1,29 @@
{
"skill": "plugin-dev:hook-development",
"kind": "external",
"needs": [
"намерение создать хук плагина (PreToolUse/PostToolUse/...)"
],
"produces": [
"хук: событие + matcher + скрипт ${CLAUDE_PLUGIN_ROOT}"
],
"constraints": [
"под-навык зонтика plugin-dev (разработка Claude-плагинов)",
"компоненты плагина, НЕ standalone-навыки (skill-creator)"
],
"preview-form": "outline",
"defaults": [
"событие хука и matcher"
],
"key-decisions": [
"какое событие перехватывать"
],
"acceptance-criteria": [
"хук срабатывает и не ломает поток"
],
"source": {
"version": "n/a",
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
"path": ""
}
}
@@ -0,0 +1,29 @@
{
"skill": "plugin-dev:mcp-integration",
"kind": "external",
"needs": [
"намерение подключить MCP-сервер в плагин"
],
"produces": [
".mcp.json: stdio/SSE/HTTP-сервер в плагине"
],
"constraints": [
"под-навык зонтика plugin-dev (разработка Claude-плагинов)",
"компоненты плагина, НЕ standalone-навыки (skill-creator)"
],
"preview-form": "outline",
"defaults": [
"тип MCP-сервера и конфиг"
],
"key-decisions": [
"тип транспорта MCP"
],
"acceptance-criteria": [
"MCP-сервер подключён через плагин"
],
"source": {
"version": "n/a",
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
"path": ""
}
}
@@ -0,0 +1,29 @@
{
"skill": "plugin-dev:plugin-settings",
"kind": "external",
"needs": [
"намерение сделать поведение плагина настраиваемым"
],
"produces": [
".local.md настройки плагина (YAML-frontmatter + состояние)"
],
"constraints": [
"под-навык зонтика plugin-dev (разработка Claude-плагинов)",
"компоненты плагина, НЕ standalone-навыки (skill-creator)"
],
"preview-form": "outline",
"defaults": [
"per-project конфиг плагина"
],
"key-decisions": [
"какие настройки выносить"
],
"acceptance-criteria": [
"настройки читаются плагином"
],
"source": {
"version": "n/a",
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
"path": ""
}
}
@@ -0,0 +1,29 @@
{
"skill": "plugin-dev:plugin-structure",
"kind": "external",
"needs": [
"намерение создать или организовать плагин"
],
"produces": [
"структура плагина: plugin.json + раскладка компонентов"
],
"constraints": [
"под-навык зонтика plugin-dev (разработка Claude-плагинов)",
"компоненты плагина, НЕ standalone-навыки (skill-creator)"
],
"preview-form": "outline",
"defaults": [
"раскладка каталогов и манифест"
],
"key-decisions": [
"организация компонентов плагина"
],
"acceptance-criteria": [
"структура плагина валидна"
],
"source": {
"version": "n/a",
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
"path": ""
}
}
@@ -0,0 +1,29 @@
{
"skill": "plugin-dev:skill-development",
"kind": "external",
"needs": [
"намерение создать навык внутри плагина"
],
"produces": [
"навык плагина: SKILL.md + прогрессивное раскрытие"
],
"constraints": [
"под-навык зонтика plugin-dev (разработка Claude-плагинов)",
"компоненты плагина, НЕ standalone-навыки (skill-creator)"
],
"preview-form": "outline",
"defaults": [
"структура навыка и прогрессивное раскрытие"
],
"key-decisions": [
"scope и описание навыка"
],
"acceptance-criteria": [
"навык оформлен и триггерится"
],
"source": {
"version": "n/a",
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
"path": ""
}
}