diff --git a/docs/registry/nodes.yaml b/docs/registry/nodes.yaml index e445720c..42f54523 100644 --- a/docs/registry/nodes.yaml +++ b/docs/registry/nodes.yaml @@ -8,6 +8,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Управляет headless Chromium-браузером через MCP: делает скриншоты, кликает по элементам, заполняет формы, проверяет визуальное поведение HTML-прототипов и живого SPA." triggers: - {keyword: "html prototype", weight: 1.0} - {keyword: "screenshot", weight: 1.0} @@ -24,6 +25,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Предоставляет полный доступ к GitHub API через MCP: чтение и создание issues, pull requests, комментариев, просмотр коммитов, управление ветками и нотификациями." triggers: - {keyword: "issues", weight: 1.0} - {keyword: "pr", weight: 1.0} @@ -41,6 +43,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Линтует Markdown-файлы по набору правил стиля (заголовки, таблицы, пробелы, переносы строк); запускается через `npm run lint:md` и в pre-commit хуке." triggers: - {keyword: "lint .md", weight: 1.0} - {keyword: "markdown style", weight: 1.0} @@ -58,6 +61,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Проверяет орфографию в `.md`-файлах на русском и английском языках, поддерживает пользовательский словарь проекта (`cspell-words.txt`); запускается через `npm run spell`." triggers: - {keyword: "орфография ru/en", weight: 1.0} - {keyword: "кастомный словарь", weight: 1.0} @@ -74,6 +78,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Сканирует все ссылки в Markdown-документах (внутренние и внешние), находит битые URL и якоря; запускается через `npm run links`." triggers: - {keyword: "проверка ссылок .md", weight: 1.0} - {keyword: "кросс-ссылки архива", weight: 1.0} @@ -90,6 +95,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Линтует CSS-код в `.vue`-компонентах и отдельных CSS-файлах: порядок свойств, именование, синтаксические ошибки; запускается через `npm run lint:css`." triggers: - {keyword: "css lint", weight: 1.0} - {keyword: "vue sfc style", weight: 1.0} @@ -106,6 +112,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Сканирует diff и историю репозитория на утечку секретов (API-ключи, токены, пароли, DSN-строки); работает через pre-commit и pre-push хуки lefthook." triggers: - {keyword: "секреты в diff", weight: 1.0} - {keyword: "pre-commit hook", weight: 1.0} @@ -121,6 +128,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Проверяет веб-страницы на соответствие WCAG 2.1 AA: контраст, alt-тексты, роли, фокус-порядок; единственный технический SoT a11y в проекте; `npm run a11y`." triggers: - {keyword: "a11y wcag 2.1 aa", weight: 1.0} - {keyword: "прототипы", weight: 1.0} @@ -138,6 +146,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "MCP-сервер Laravel Boost: выполняет SQL-запросы к dev-БД через Eloquent, отдаёт документацию по Laravel и установленным пакетам через Roster auto-detect; заменил PostgreSQL MCP (#1)." triggers: - {keyword: "sql", weight: 1.0} - {keyword: "eloquent", weight: 1.0} @@ -157,6 +166,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Автоматически форматирует PHP-код по PSR-12 и Laravel code style (пробелы, запятые, скобки, импорты); запускается через `composer pint`." triggers: - {keyword: "php code style", weight: 1.0} - {keyword: "форматтер", weight: 1.0} @@ -175,6 +185,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Выполняет статический анализ PHP-кода на уровне типов с помощью PHPStan + Laravel-расширений (Larastan); находит ошибки типов, несовместимые сигнатуры, undefined-переменные; `composer stan`." triggers: - {keyword: "статанализ php", weight: 1.0} - {keyword: "типы", weight: 1.0} @@ -193,6 +204,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Блокирует установку Composer-пакетов с известными CVE-уязвимостями через conflict-список; срабатывает автоматически при `composer install` / `composer update`." triggers: - {keyword: "cve на install", weight: 1.0} boundaries: [] @@ -208,6 +220,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Генерирует IDE-заглушки (stubs) для Laravel facades, Eloquent-моделей и хелперов (`@mixin IdeHelper*`); обеспечивает autocomplete и type-inference в PHPStorm/VSCode." triggers: - {keyword: "ide-stubs php", weight: 1.0} - {keyword: "@mixin", weight: 1.0} @@ -224,6 +237,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Линтует SQL-миграции PostgreSQL на наличие опасных паттернов: блокирующие операции, отсутствие `CONCURRENTLY`, ненадёжные DEFAULT; запускается в pre-commit для `database/migrations/`." triggers: - {keyword: "линт миграций postgresql", weight: 1.0} boundaries: [] @@ -238,6 +252,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Форматирует SQL-файлы (отступы, регистр ключевых слов, выравнивание) по стандарту pgFormatter; активируется хуком при изменении `db/schema.sql`." triggers: - {keyword: "форматирование sql", weight: 1.0} boundaries: [] @@ -252,6 +267,7 @@ nodes: subcategory: null status: "dormant" dormancy_reason: "native Windows PG не поддерживает расширение; заменён ручным cron'ом partitions:create-months" + capabilities: "Расширение PostgreSQL для автоматического создания и удаления partition-таблиц по расписанию — dormant: недоступно на native-Windows, заменено Artisan-командой `partitions:create-months`." triggers: - {keyword: "партиционирование pg", weight: 1.0} boundaries: @@ -267,6 +283,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Набор из 14 meta-skills для организации процесса разработки: TDD, отладка, brainstorming, writing-plans, параллельные агенты, code review, verify-before-completion, worktrees, finishing branch, subagent-driven development." triggers: - {classification: "feature", weight: 1.0} - {classification: "planning", weight: 1.0} @@ -290,6 +307,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Тестовый фреймворк PHP (Pest 4): unit, feature, RLS smoke, parallel-mode; поддерживает browser/stress/mutation-тесты; запускается через `composer test`." triggers: - {classification: "bugfix", weight: 1.0} - {keyword: "test", weight: 1.0} @@ -308,6 +326,7 @@ nodes: subcategory: null status: "historic" dormancy_reason: "Заменён #10 Laravel Boost в фазе 1 (08.05.2026)" + capabilities: "Исторический PostgreSQL MCP-сервер для прямых SQL-запросов к dev-БД — заменён Laravel Boost (#10); dormant, не используется." triggers: [] boundaries: - {pair: "#10", relation: "replaced by"} @@ -322,6 +341,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Vue Language Server (Volar) для VSCode: предоставляет IntelliSense, go-to-definition, hover-документацию и диагностику типов для `.vue`-файлов в редакторе." triggers: - {keyword: "vue language server (vscode)", weight: 1.0} boundaries: [] @@ -336,6 +356,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Выполняет полную проверку типов TypeScript в `.vue`-компонентах через `vue-tsc`; запускается только в CI, находит несоответствия типов в шаблонах и script-блоках." triggers: - {keyword: "type-check vue (ci only)", weight: 1.0} boundaries: [] @@ -351,6 +372,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Связка линтера и форматтера для JS/Vue: ESLint (flat-config, plugin-vue, @vue/eslint-config-typescript) + Prettier + config-prettier; `npm run lint:vue` + `npm run format`." triggers: - {keyword: "lint js/vue", weight: 1.0} - {keyword: "форматтер", weight: 1.0} @@ -368,6 +390,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Тестовый фреймворк для Vue-компонентов: unit и component-тесты с @vue/test-utils, jsdom, Pinia; `npm run test:vue`." triggers: - {keyword: "тесты vue", weight: 1.0} - {keyword: "unit/component", weight: 1.0} @@ -384,6 +407,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Каталог Vue-компонентов в стиле Histoire (не Storybook): визуальная документация stories и variants, поддерживает Vuetify через setupFile; `npm run story`." triggers: - {keyword: "каталог компонентов", weight: 1.0} - {keyword: "stories", weight: 1.0} @@ -401,6 +425,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Статический анализ безопасности кода (SAST): сканирует PHP/JS/Vue на паттерны уязвимостей (инъекции, небезопасная конфигурация, XSS); бинарь + MCP-сервер; `npm run sast`." triggers: - {keyword: "sast", weight: 1.0} - {keyword: "security static analysis", weight: 1.0} @@ -423,6 +448,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Сканирует Docker-образы на CVE-уязвимости в OS-пакетах и зависимостях; запускается в CI перед push в Yandex Container Registry (`trivy image liderra:latest`)." triggers: - {keyword: "docker image scan", weight: 1.0} - {keyword: "container vulnerabilities", weight: 1.0} @@ -438,6 +464,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "GitHub Dependabot автоматически создаёт pull requests при обнаружении CVE в Composer/npm-зависимостях; настраивается через `.github/dependabot.yml`." triggers: - {keyword: "cve pr auto", weight: 1.0} - {keyword: "dependency updates", weight: 1.0} @@ -453,6 +480,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Расширение PostgreSQL для аудит-журнала DDL/DML/DCL операций на уровне БД; конфигурировано `pgaudit.log='ddl, role, write'`, `log_parameter=off`; установлено на продакшне liderra.ru, закрывает 152-ФЗ требование." triggers: - {keyword: "audit logs postgresql", weight: 1.0} - {keyword: "mutation tracking", weight: 1.0} @@ -468,6 +496,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Расширение PostgreSQL для маскирования персональных данных в дампах (анонимизация телефонов, имён, email); загрузка по требованию `LOAD 'anon'`; установлено на продакшне liderra.ru." triggers: - {keyword: "маскирование пдн в дампах", weight: 1.0} boundaries: [] @@ -482,6 +511,7 @@ nodes: subcategory: null status: "active" dormancy_reason: null + capabilities: "Доменная база знаний UI/UX для Vue+Vuetify: компоненты, паттерны состояний, принципы доступности, design critique; paired с Superpowers (#19); проходит фильтр стека R6.0." triggers: - {keyword: "ui компоненты", weight: 1.0} - {keyword: "паттерны", weight: 1.0} @@ -501,6 +531,7 @@ nodes: subcategory: "UI-pool" status: "active" dormancy_reason: null + capabilities: "Резервная библиотека UI-материалов: стили, цветовые палитры, UX-гайдлайны, паттерны графиков и визуализаций; активируется только через PSR_v1 R14.3 pipeline как материал, не решатель." triggers: - {keyword: "резерв ui", weight: 1.0} - {keyword: "стили", weight: 1.0} @@ -520,6 +551,7 @@ nodes: subcategory: "UI-pool" status: "active" dormancy_reason: null + capabilities: "LLM-генератор стартовых UI-шаблонов (компоненты, лейауты, формы) через 21st.dev Magic MCP; активируется через PSR_v1 R14.4 pipeline; Pa11y проверка обязательна после генерации." triggers: - {keyword: "генератор ui-шаблонов (llm-based)", weight: 1.0} boundaries: @@ -535,6 +567,7 @@ nodes: subcategory: "infrastructure" status: "active" dormancy_reason: null + capabilities: "Плагин для управления файлом `CLAUDE.md`: аудит, целевые правки (claude-md-improver) и захват learnings из сессии (revise-claude-md); единственный разрешённый канал изменения CLAUDE.md." triggers: - {keyword: "правки claude.md", weight: 1.0} - {keyword: "обязательный канал", weight: 1.0} @@ -552,6 +585,7 @@ nodes: subcategory: "debug-runtime" status: "active" dormancy_reason: null + capabilities: "MCP-сервер для чтения событий, ошибок и трассировок из self-hosted Sentry; READ-ONLY; помогает диагностировать production runtime ошибки; pending активации (Б-1)." triggers: - {keyword: "отладка production runtime errors", weight: 1.0} - {classification: "bugfix", weight: 1.0} @@ -568,6 +602,7 @@ nodes: subcategory: "debug-runtime" status: "active" dormancy_reason: null + capabilities: "MCP-сервер для чтения состояния Redis/Memurai: ключи, очереди, TTL, паттерны; READ-ONLY; помогает диагностировать состояние кэша, очередей и Pest race-условий." triggers: - {keyword: "отладка redis/memurai очередей", weight: 1.0} - {keyword: "кэша", weight: 1.0} @@ -586,6 +621,7 @@ nodes: subcategory: "architecture-tooling" status: "active" dormancy_reason: null + capabilities: "Создаёт и хранит Architecture Decision Records (ADR) в `docs/adr/`; `adr-judge` проверяет соответствие кода решениям в lefthook pre-commit job 9 (без LLM-вызовов)." triggers: - {keyword: "архитектурные решения", weight: 1.0} - {keyword: "adr", weight: 1.0} @@ -606,6 +642,7 @@ nodes: subcategory: "architecture-tooling" status: "active" dormancy_reason: null + capabilities: "Генерирует архитектурные диаграммы в нотации Mermaid и C4 (context, container, component); вендоренный скил в `.claude/skills/mermaid/`; диаграммы сохраняются в `docs/architecture/`." triggers: - {keyword: "c4", weight: 1.0} - {keyword: "architecture-диаграммы", weight: 1.0} @@ -625,6 +662,7 @@ nodes: subcategory: "architecture-tooling" status: "active" dormancy_reason: null + capabilities: "Справочник архитектурных паттернов: Clean Architecture, Hexagonal, DDD, CQRS, Event Sourcing и другие; предоставляет описания, примеры применения и критерии выбора." triggers: - {keyword: "справочник архитектурных паттернов", weight: 1.0} - {keyword: "clean architecture", weight: 1.0} @@ -644,6 +682,7 @@ nodes: subcategory: "audit-security" status: "active" dormancy_reason: null + capabilities: "Набор из 8 аудит-скилов Trail of Bits для глубокого on-demand security-анализа: diff-review, supply-chain risk, variant analysis, static analysis, инвентаризация уязвимостей." triggers: - {keyword: "deep аудит безопасности", weight: 1.0} - {keyword: "diff", weight: 1.0} @@ -665,6 +704,7 @@ nodes: subcategory: "audit-security" status: "active" dormancy_reason: null + capabilities: "Блокирующий PreToolUse-хук (sys.exit 2): перехватывает правку файлов и выводит предупреждение при обнаружении уязвимых паттернов кода (SQL-инъекции, XSS, небезопасная десериализация); одноразовый speed-bump per файл+правило." triggers: - {keyword: "inline-блокировка уязвимых паттернов", weight: 1.0} - {keyword: "inline уязвимость", weight: 1.0} @@ -685,6 +725,7 @@ nodes: subcategory: "project-management" status: "active" dormancy_reason: null + capabilities: "Скил управления dev-проектом: PRD → эпики → issues → код; хранит артефакты в `.claude/prds/` и `.claude/epics/`; 14 bash-скриптов без lifecycle-хуков." triggers: - {keyword: "prd эпик issue код", weight: 1.0} - {keyword: "dev-проекты", weight: 1.0} @@ -702,6 +743,7 @@ nodes: subcategory: "project-management" status: "active" dormancy_reason: null + capabilities: "Плагин для продуктовых церемоний: написание спецификаций (`/write-spec`), обновление роадмапа (`/roadmap-update`), анализ метрик (`/metrics-review`), конкурентные брифы." triggers: - {keyword: "prd", weight: 1.0} - {keyword: "роадмап", weight: 1.0} @@ -721,6 +763,7 @@ nodes: subcategory: "architecture-tooling" status: "active" dormancy_reason: null + capabilities: "Статический анализ направления зависимостей между PHP-слоями (Controller/Service/Model/Job/…) по конфигу `app/deptrac.yaml`; блокирует нарушения в lefthook pre-commit job 10." triggers: - {keyword: "направление зависимостей", weight: 1.0} - {keyword: "границы слоёв", weight: 1.0} @@ -742,6 +785,7 @@ nodes: subcategory: "design-tooling" status: "deferred" dormancy_reason: "нет Figma-аккаунта; дизайн-источник Лидерры — статический handoff Платона, не Figma-файл" + capabilities: "MCP-сервер для извлечения дизайн-токенов, компонентов и стилей из Figma-файлов — DEFERRED: у проекта нет Figma-аккаунта, дизайн-источник — статический handoff Платона." triggers: - {keyword: "извлечение дизайн-токенов из figma", weight: 1.0} boundaries: [] @@ -756,6 +800,7 @@ nodes: subcategory: "design-tooling" status: "active" dormancy_reason: null + capabilities: "MCP-сервер для поиска и вставки SVG-иконок из 10+ коллекций (Material, Tabler, Phosphor и др.); используется только для не-Lucide коллекций (ADR-006: Lucide иконки — через `lucide-vue-next`)." triggers: - {keyword: "svg-иконки non-lucide коллекции", weight: 1.0} boundaries: @@ -772,6 +817,7 @@ nodes: subcategory: "design-tooling" status: "active" dormancy_reason: null + capabilities: "Плагин для дизайн-критики, UX-копирайтинга и research synthesis на стадии до написания кода; a11y-принципы дизайн-уровня (технический SoT остаётся за Pa11y #9)." triggers: - {keyword: "дизайн-критика", weight: 1.0} - {keyword: "ux-копирайт", weight: 1.0} @@ -790,6 +836,7 @@ nodes: subcategory: "integration-tooling" status: "active" dormancy_reason: null + capabilities: "MCP-сервер для интроспекции OpenAPI/REST-спецификаций: отдаёт эндпоинты, схемы, параметры как MCP-ресурсы и инструменты; READ-ONLY; в `.mcp.json`." triggers: - {keyword: "introspection openapi/rest-спек", weight: 1.0} - {keyword: "openapi", weight: 1.0} @@ -810,6 +857,7 @@ nodes: subcategory: "ml-ai-tooling" status: "active" dormancy_reason: null + capabilities: "CLI-инструмент для eval и регрессионного тестирования LLM-промптов: ассерты, LLM-judge, red-team-сценарии; запуск вручную или в CI — не в хуке lefthook." triggers: - {keyword: "тестирование llm-промптов", weight: 1.0} - {keyword: "eval", weight: 1.0} @@ -830,6 +878,7 @@ nodes: subcategory: "ml-ai-tooling" status: "active" dormancy_reason: null + capabilities: "Вендоренный скил для классического ML-воркфлоу: загрузка данных, feature engineering, обучение моделей, оценка метрик, визуализация результатов." triggers: - {keyword: "классический ml-воркфлоу", weight: 1.0} - {keyword: "ml модель", weight: 1.0} @@ -849,6 +898,7 @@ nodes: subcategory: "ml-ai-tooling" status: "deferred" dormancy_reason: "нет Python ML-окружения (pandas/scikit-learn/Jupyter) на native-Windows машине" + capabilities: "MCP-сервер для выполнения кода в Jupyter-ноутбуках — DEFERRED: требует Python ML-окружения, отсутствующего на native-Windows машине." triggers: - {keyword: "исполняемые jupyter-ноутбуки", weight: 1.0} boundaries: [] @@ -863,6 +913,7 @@ nodes: subcategory: "business-process" status: "active" dormancy_reason: null + capabilities: "Плагин с 9 скилами для документирования и оптимизации бизнес-процессов: process-doc, runbook, capacity-plan, risk-assessment, compliance-tracking, change-request, vendor-review, status-report." triggers: - {keyword: "документирование/оптимизация бизнес-процессов", weight: 1.0} - {keyword: "бизнес-процесс документ", weight: 1.0} @@ -882,6 +933,7 @@ nodes: subcategory: "business-process" status: "active" dormancy_reason: null + capabilities: "Скил для BPMN 2.0 моделирования to-be бизнес-процессов: swimlane-диаграммы, события, шлюзы, потоки управления; результаты в `docs/process/`." triggers: - {keyword: "моделирование to-be процесса", weight: 1.0} - {keyword: "bpmn 2.0", weight: 1.0} @@ -901,6 +953,7 @@ nodes: subcategory: "business-process" status: "active" dormancy_reason: null + capabilities: "Скил для as-is анализа бизнес-процессов через discovery из исходного кода Laravel: маршруты, контроллеры, джобы, очереди; выявляет узкие места и несоответствия." triggers: - {keyword: "анализ as-is процесса", weight: 1.0} - {keyword: "discovery из кода", weight: 1.0} @@ -921,6 +974,7 @@ nodes: subcategory: "business-process" status: "deferred" dormancy_reason: "n8n не в стеке; движок процессов = очередь Laravel; принятие n8n — отдельное архитектурное решение" + capabilities: "MCP-сервер для workflow-движка n8n (автоматизация процессов) — DEFERRED: n8n не входит в стек портала, движок процессов — очередь Laravel." triggers: - {keyword: "workflow-движок автоматизации", weight: 1.0} boundaries: [] @@ -935,6 +989,7 @@ nodes: subcategory: "discovery-tooling" status: "active" dormancy_reason: null + capabilities: "Скил для структурированного интервью-discovery: режим FEATURE (JTBD-интервью заказчика перед проектированием фичи → discovery-brief) + режим SYSTEM (ориентация по мета-слою проекта)." triggers: - {keyword: "интервью-discovery", weight: 1.0} - {keyword: "jtbd", weight: 1.0} @@ -954,6 +1009,7 @@ nodes: subcategory: "authoring-tooling" status: "active" dormancy_reason: null + capabilities: "Плагин-конструктор standalone Claude-скилов: scaffold SKILL.md, evals.json, references/; помогает оформить skill-артефакт с eval-набором для проверки точности." triggers: - {keyword: "создание standalone-скилов", weight: 1.0} - {keyword: "eval", weight: 1.0} @@ -972,6 +1028,7 @@ nodes: subcategory: "authoring-tooling" status: "active" dormancy_reason: null + capabilities: "Плагин для разработки marketplace Claude-плагинов: 8 sub-skills (plugin.json, MCP-интеграция, хуки, документация, публикация) + 3 специализированных агента." triggers: - {keyword: "разработка claude-плагинов", weight: 1.0} - {keyword: "плагин claude code", weight: 1.0} @@ -990,6 +1047,7 @@ nodes: subcategory: "authoring-tooling" status: "active" dormancy_reason: null + capabilities: "Плагин для генерации Claude Code хуков (PreToolUse, PostToolUse, Stop, UserPromptSubmit): только по явному `/hookify`; HK1 pre-check проверяет коллизии с существующей хук-архитектурой." triggers: - {keyword: "генерация хуков (только по явному /hookify)", weight: 1.0} - {keyword: "хук claude", weight: 1.0} @@ -1009,6 +1067,7 @@ nodes: subcategory: "dev-support" status: "active" dormancy_reason: null + capabilities: "Рекомендатель автоматизаций Claude Code (hooks, permissions, settings): предлагает настройки на основе паттернов использования; READ-ONLY, не меняет конфигурацию." triggers: - {keyword: "рекомендатель claude code automations (read-only)", weight: 1.0} boundaries: [] @@ -1023,6 +1082,7 @@ nodes: subcategory: "dev-support" status: "active" dormancy_reason: null + capabilities: "MCP-сервер для получения актуальной документации библиотек и SDK (Laravel, Vue, Vuetify, npm-пакеты и др.); первый выбор для вопросов по API конкретного пакета." triggers: - {keyword: "актуальная документация библиотек/sdk", weight: 1.0} - {keyword: "актуальная документация библиотеки", weight: 1.0} @@ -1042,6 +1102,7 @@ nodes: subcategory: "finance-tooling" status: "active" dormancy_reason: null + capabilities: "Плагин для финансовых операций: сверка (reconciliation), variance-анализ, подготовка проводок, финансовая отчётность; US-GAAP-ориентирован, частично применим для РФ; SOX not-applicable." triggers: - {keyword: "сверка", weight: 1.0} - {keyword: "variance-анализ", weight: 1.0} @@ -1067,6 +1128,7 @@ nodes: subcategory: "finance-tooling" status: "active" dormancy_reason: null + capabilities: "Проектный скил аудита корректности биллинга: инварианты bcmath-арифметики, идемпотентность списаний, tier-резолюция тарифов, дрейф CSV-reconcile, корректность `lead_charges`." triggers: - {keyword: "аудит списания", weight: 1.0} - {keyword: "money-инварианты", weight: 1.0} @@ -1096,6 +1158,7 @@ nodes: subcategory: "finance-tooling" status: "active" dormancy_reason: null + capabilities: "Проектный скил по РСБУ и НК РФ: НДС/УСН расчёты, налогооблагаемые события, формирование проводок ДТ/КТ, подготовка выгрузок для бухгалтера; закрывает РФ-gap плагина finance (#61)." triggers: - {keyword: "рсбу", weight: 1.0} - {keyword: "ндс/усн", weight: 1.0} @@ -1122,6 +1185,7 @@ nodes: subcategory: "backend-tooling" status: "active" dormancy_reason: null + capabilities: "Автоматический рефакторинг PHP-кода: обновление до новых версий PHP/Laravel, удаление мёртвого кода, modernization паттернов; запускается вручную или в CI (`composer rector`), не блокирует коммит." triggers: - {keyword: "авто-рефакторинг", weight: 1.0} - {keyword: "version-upgrade laravel", weight: 1.0} @@ -1145,6 +1209,7 @@ nodes: subcategory: "backend-tooling" status: "active" dormancy_reason: null + capabilities: "Измеряет метрики качества PHP-кода: цикломатическая сложность, архитектурные зависимости, code style score; базовые пороги 78/79/73; on-demand или CI (`composer insights`)." triggers: - {keyword: "метрики качества/сложности/архитектуры php-кода", weight: 1.0} - {keyword: "метрики качества кода", weight: 1.0} @@ -1166,6 +1231,7 @@ nodes: subcategory: "backend-tooling" status: "active" dormancy_reason: null + capabilities: "Справочник проектных backend-конвенций Лидерры: слоистость controller→service→job, RLS-aware паттерны, bcmath-деньги, идемпотентность джобов, partition-aware запросы." triggers: - {keyword: "как писать backend в лидерре", weight: 1.0} - {keyword: "паттерн controller/service/job", weight: 1.0} @@ -1191,6 +1257,7 @@ nodes: subcategory: "backend-tooling" status: "deferred" dormancy_reason: "pending Б-1/Linux: native-Windows нет pcntl/posix; OSS без MCP; hosted 152-ФЗ риск" + capabilities: "Self-hosted runtime-телеметрия для сквозной корреляции request/job/query трассировок — DEFERRED: требует pcntl/posix (недоступны на native-Windows), pending Б-1/Linux." triggers: - {keyword: "коррелированный runtime-трейс request/job/query (self-hosted)", weight: 1.0} boundaries: @@ -1206,6 +1273,7 @@ nodes: subcategory: "infosec-tooling" status: "active" dormancy_reason: null + capabilities: "DAST-сканер работающего веб-приложения (OWASP ZAP): активно тестирует инъекции, XSS, обход аутентификации, IDOR; MCP-интеграция; установлен портативно (`bin/ZAP_2.17.0/`)." triggers: - {keyword: "глубокая боевая dast", weight: 1.0} - {keyword: "обход входа", weight: 1.0} @@ -1228,6 +1296,7 @@ nodes: subcategory: "infosec-tooling" status: "active" dormancy_reason: null + capabilities: "CLI-сканер известных уязвимостей по шаблонам (Nuclei): CVE, экспозиция эндпоинтов, слабый TLS, misconfiguration; установлен как `bin/nuclei.exe`; цель 127.0.0.1." triggers: - {keyword: "известные уязвимости/экспозиция/слабый tls снаружи", weight: 1.0} - {keyword: "nuclei", weight: 1.0} @@ -1248,6 +1317,7 @@ nodes: subcategory: "infosec-tooling" status: "active" dormancy_reason: null + capabilities: "Go CLI-инструмент аудита безопасности настроек Laravel: `.env`, конфигурация cookie, HTTP-заголовки, секреты, зависимости; установлен как `bin/ward.exe`; заменил abandoned Enlightn." triggers: - {keyword: "безопасность настроек laravel", weight: 1.0} - {keyword: ".env/config/заголовки/cookie/secrets/deps", weight: 1.0} @@ -1268,6 +1338,7 @@ nodes: subcategory: "infosec-tooling" status: "active" dormancy_reason: null + capabilities: "Проектный скил аудита соответствия 152-ФЗ: инвентаризация ПДн в схеме/коде, проверка согласий, маскирование, логирование доступа, работа с `pd_subject_request`." triggers: - {keyword: "аудит пдн / соответствие 152-фз", weight: 1.0} - {keyword: "пдн", weight: 1.0} @@ -1291,6 +1362,7 @@ nodes: subcategory: "infosec-tooling" status: "active" dormancy_reason: null + capabilities: "Проектный скил моделирования угроз по методологии STRIDE: анализ attack surface портала, приоритизация защитных мер перед публичным запуском (going-public)." triggers: - {keyword: "stride угрозы портала", weight: 1.0} - {keyword: "going-public", weight: 1.0} @@ -1313,6 +1385,7 @@ nodes: subcategory: "infosec-tooling" status: "active" dormancy_reason: null + capabilities: "Проектный скил-оркестратор предрелизной проверки безопасности: запускает #68-72 + D3, собирает результаты и выносит вердикт GO/NO-GO перед выходом в интернет." triggers: - {keyword: "прогон безопасности перед релизом", weight: 1.0} - {keyword: "go/no-go", weight: 1.0} @@ -1334,6 +1407,7 @@ nodes: subcategory: "marketing-tooling" status: "active" dormancy_reason: null + capabilities: "Маркетинговый плагин с 8 скилами: создание контента, email-цепочки, SEO-аудит, конкурентные брифы, performance-отчёты, планирование кампаний; первичный resolver раздела C1." triggers: - {keyword: "маркетинговый контент", weight: 1.0} - {keyword: "кампания", weight: 1.0} @@ -1361,6 +1435,7 @@ nodes: subcategory: "marketing-tooling" status: "active" dormancy_reason: null + capabilities: "Библиотека из 40 маркетинговых фреймворков (AIDA, PAS, FAB, USP, CRO, cold-email, lead-magnets, pricing-psychology и др.); выступает как материал/резерв-библиотека, решатель — marketing (#74)." triggers: - {keyword: "фреймворки cro", weight: 1.0} - {keyword: "копирайтинг", weight: 1.0} @@ -1389,6 +1464,7 @@ nodes: subcategory: "marketing-tooling" status: "active" dormancy_reason: null + capabilities: "Плагин для разработки и проверки голоса бренда: создание вербальных brand guidelines, проверка тональности текстов, обеспечение единого стиля коммуникации Лидерры." triggers: - {keyword: "тон бренда", weight: 1.0} - {keyword: "голос бренда", weight: 1.0} @@ -1411,6 +1487,7 @@ nodes: subcategory: "marketing-tooling" status: "active" dormancy_reason: null + capabilities: "Проектный скил маркетинга для российского рынка: Яндекс.Директ, ВКонтакте, Telegram-каналы, конверсия лендинга, 152-ФЗ согласия на рассылки; eval 20/20." triggers: - {keyword: "яндекс.директ", weight: 1.0} - {keyword: "яндекс.метрика", weight: 1.0} @@ -1437,6 +1514,7 @@ nodes: subcategory: "marketing-tooling" status: "active" dormancy_reason: null + capabilities: "MCP-сервер для чтения данных Яндекс.Метрики: визиты, источники трафика, гео, демография, поведение пользователей лендинга; READ-ONLY; активен при живом лендинге." triggers: - {keyword: "веб-аналитика лендинга", weight: 1.0} - {keyword: "визиты", weight: 1.0} @@ -1460,6 +1538,7 @@ nodes: subcategory: "marketing-tooling" status: "active" dormancy_reason: null + capabilities: "MCP-сервер для подбора ключевых слов через Яндекс.Wordstat: частотность запросов по РФ, сезонность, связанные фразы; Direct-мутации отключены (только 5 read-only Wordstat-инструментов)." triggers: - {keyword: "подбор ключевых слов wordstat", weight: 1.0} - {keyword: "частотность запросов рф", weight: 1.0} @@ -1480,6 +1559,7 @@ nodes: subcategory: "marketing-tooling" status: "active" dormancy_reason: null + capabilities: "MCP-сервер для управления Telegram-каналами: публикация постов, редактирование, получение аналитики, работа с медиа; использует выделенный аккаунт через SESSION_STRING." triggers: - {keyword: "постинг в telegram-канал", weight: 1.0} - {keyword: "управление", weight: 1.0} @@ -1500,6 +1580,7 @@ nodes: subcategory: "marketing-tooling" status: "active" dormancy_reason: null + capabilities: "Self-hosted SMM-планировщик Postiz (AGPL-3.0): создание контент-календаря, планирование публикаций в 30+ соцсетях включая ВКонтакте и Telegram." triggers: - {keyword: "планирование и публикация в 30+ соцсетей включая vk и telegram", weight: 1.0} - {keyword: "контент-календарь", weight: 1.0} @@ -1520,6 +1601,7 @@ nodes: subcategory: "marketing-tooling" status: "deferred" dormancy_reason: "post-Б-1: требует платного аккаунта DataForSEO" + capabilities: "MCP-сервер DataForSEO для SEO-данных по РФ: SERP-позиции, анализ ключевых слов, бэклинки, конкурентный анализ — DEFERRED: платный, pending Б-1." triggers: - {keyword: "serp-позиции", weight: 1.0} - {keyword: "ключевые слова", weight: 1.0} @@ -1538,6 +1620,7 @@ nodes: subcategory: "marketing-tooling" status: "deferred" dormancy_reason: "нет готового upstream MCP; своя обёртка по потребности массовых рассылок" + capabilities: "Кастомный MCP-обёртка для массовых email-рассылок через Unisender Go API — DEFERRED: отсутствует upstream MCP-сервер, требует разработки." triggers: - {keyword: "массовые email-рассылки через unisender go api", weight: 1.0} boundaries: @@ -1553,6 +1636,7 @@ nodes: subcategory: "project-agent" status: "active" dormancy_reason: null + capabilities: "Sonnet-агент для синхронизации четырёх нормативных документов (Pravila/PSR_v1/Tooling/CLAUDE.md): обновляет version bumps, §0 cross-refs, счётчики footer и §9 changelog-записи после завершённых интеграций." triggers: - {classification: "normative_sync_needed", weight: 1.0} - {keyword: "синкни нормативку", weight: 1.0} @@ -1574,6 +1658,7 @@ nodes: subcategory: "project-agent" status: "active" dormancy_reason: null + capabilities: "Sonnet-агент для предрелизной валидации боевого сервера liderra.ru: выполняет 8 READ-ONLY SSH-проверок (конфиг, сервисы, БД, очереди) и возвращает вердикт GO/NO-GO с указанием проблемы." triggers: - {classification: "prod_deploy_imminent", weight: 1.0} - {keyword: "готовность боевого", weight: 1.0} diff --git a/docs/registry/schema.json b/docs/registry/schema.json index 547424f5..56b75d1b 100644 --- a/docs/registry/schema.json +++ b/docs/registry/schema.json @@ -55,7 +55,8 @@ "type": "array", "items": { "type": "string", "pattern": "^L\\d+$" } }, - "attributes": { "type": "object" } + "attributes": { "type": "object" }, + "capabilities": { "type": "string", "minLength": 1 } }, "additionalProperties": false }, diff --git a/tools/router-config.mjs b/tools/router-config.mjs new file mode 100644 index 00000000..a500771c --- /dev/null +++ b/tools/router-config.mjs @@ -0,0 +1,10 @@ +// tools/router-config.mjs — central router constants (Phase 2 Task 8) +// Source: spec docs/superpowers/specs/2026-05-24-llm-first-router-overhaul-design.md v2.3 +// Resolved Sonnet/Opus IDs via ProxyAPI /v1/models 2026-05-25: +// ProxyAPI exposes Sonnet 4.6 only as alias `claude-sonnet-4-6` (no dated YYYYMMDD form) +// — alias is canonical here. Opus 4.7 — `claude-opus-4-7`. + +export const CLASSIFIER_MODEL = 'claude-sonnet-4-6'; +export const REVIEWER_MODEL = 'claude-opus-4-7'; +export const INHERITANCE_MAX_AGE_MIN = 30; +export const REVIEWER_MAX_NEIGHBOR_EPISODES = 10; diff --git a/tools/router-config.test.mjs b/tools/router-config.test.mjs new file mode 100644 index 00000000..4653a917 --- /dev/null +++ b/tools/router-config.test.mjs @@ -0,0 +1,23 @@ +// tools/router-config.test.mjs — TDD for Phase 2 Task 8 +import { describe, it, expect } from 'vitest'; +import * as cfg from './router-config.mjs'; + +describe('router-config exports', () => { + it('CLASSIFIER_MODEL is Sonnet 4.6 (alias on ProxyAPI — no dated form exposed 2026-05-25)', () => { + expect(cfg.CLASSIFIER_MODEL).toBe('claude-sonnet-4-6'); + }); + + it('REVIEWER_MODEL is Opus 4.7', () => { + expect(cfg.REVIEWER_MODEL).toBe('claude-opus-4-7'); + }); + + it('INHERITANCE_MAX_AGE_MIN === 30', () => { + expect(cfg.INHERITANCE_MAX_AGE_MIN).toBe(30); + expect(typeof cfg.INHERITANCE_MAX_AGE_MIN).toBe('number'); + }); + + it('REVIEWER_MAX_NEIGHBOR_EPISODES === 10', () => { + expect(cfg.REVIEWER_MAX_NEIGHBOR_EPISODES).toBe(10); + expect(typeof cfg.REVIEWER_MAX_NEIGHBOR_EPISODES).toBe('number'); + }); +});