chore(graph): rewrite group C (agents + MCP, 18 nodes) — plain language
Переписаны nd() блоки для 11 агентов (ag_pest/ag_rls/ag_explore/ag_general/ag_plan/ag_guide/ag_statusline/ag_hookify/ag_pcreator/ag_pvalid/ag_skreview) и 7 MCP (mcp_pw/mcp_gh/mcp_boost/mcp_semgrep/mcp_sentry/mcp_redis/mcp_21st). Иностранные аббревиатуры расшифрованы (SAST/CVE/SQLi/XSS/ПДн). Iter2 spec §3 group C. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+62
-62
@@ -661,152 +661,152 @@ const NODE_DETAILS = {
|
||||
|
||||
// ── АГЕНТЫ ───────────────────────────────────────
|
||||
ag_pest: nd(
|
||||
'Диагностирует падения Pest --parallel: классифицирует как реальный баг или один из 5 квирков (72-73-77...).',
|
||||
'При падении Pest --parallel ИЛИ при subdir-only flake (как в audit Phase 3 SyncSupplierProjectsJobTest).',
|
||||
'READ-ONLY на коде, не правит самостоятельно. Falsify каждую гипотезу через реальный запуск, не «вероятно квирк».',
|
||||
'Разбирает падения тестов Pest --parallel: отличает настоящую ошибку от одного из пяти известных квирков (72/73/77...).',
|
||||
'При падении Pest --parallel ИЛИ при subdir-only flake (как в аудите Phase 3 SyncSupplierProjectsJobTest).',
|
||||
'READ-ONLY (только читает код, ничего не правит). Каждую гипотезу подтверждает реальным запуском, а не «похоже на квирк».',
|
||||
[{ name: 'CLAUDE.md §6', cond: 'описывает когда вызывать' }],
|
||||
[],
|
||||
[{ name: 'MCP: redis', cond: 'читает Redis для дебага quirk 72 (supplier:session race)' }]
|
||||
[{ name: 'MCP: redis', cond: 'читает Redis для дебага квирка 72 (supplier:session race)' }]
|
||||
),
|
||||
ag_rls: nd(
|
||||
'Проверяет RLS compliance в миграциях — 7-item чеклист с реальными запусками команд, READ-ONLY.',
|
||||
'При создании/правке миграции в db/migrations/ ИЛИ при правке db/schema.sql ИЛИ при PR review с DB-изменениями.',
|
||||
'READ-ONLY (только Read/Grep/Glob/Bash) — не пишет код. Не альтернатива sk_rls skill, у них разные сценарии.',
|
||||
[{ name: 'CLAUDE.md', cond: 'описывает в §6 и агенты/ директории' }],
|
||||
'Проверяет миграции на соответствие RLS (защите строк по тенанту) — 7 пунктов чеклиста с реальными командами, только чтение.',
|
||||
'При создании/правке миграции в db/migrations/ ИЛИ при правке db/schema.sql ИЛИ при ревью PR с изменениями БД.',
|
||||
'READ-ONLY (только Read/Grep/Glob/Bash) — код не пишет. Не замена скилу sk_rls — у них разные сценарии.',
|
||||
[{ name: 'CLAUDE.md', cond: 'описывает в §6 и в директории агентов' }],
|
||||
[],
|
||||
[{ name: 'MCP: laravel-boost', cond: 'SQL запросы к db/schema.sql' }],
|
||||
[{ name: 'rls-check скил', desc: 'оба покрывают RLS compliance, нет чёткой границы: агент — для PR/diff, скил — для ручной таблицы' }]
|
||||
[{ name: 'rls-check скил', desc: 'оба покрывают соответствие RLS, чёткой границы нет: агент — для PR и диффов, скил — для ручной проверки таблицы' }]
|
||||
),
|
||||
ag_statusline: nd(
|
||||
'Настраивает строку состояния Claude Code через редактирование файла конфига.',
|
||||
'Настраивает строку состояния Claude Code через правку файла настроек.',
|
||||
'При запросе пользователя «настрой statusline» — редкая разовая задача.',
|
||||
'Правит только settings.json statusline-секцию, не другие части конфига.',
|
||||
'Правит только секцию statusline в settings.json, другие части файла не трогает.',
|
||||
[],
|
||||
[],
|
||||
[]
|
||||
),
|
||||
ag_guide: nd(
|
||||
'Отвечает на вопросы об API Claude Code, SDK, MCP серверах, хуках, slash commands.',
|
||||
'Отвечает на вопросы про API Claude Code, SDK, MCP-серверы, хуки, slash-команды.',
|
||||
'При вопросе про возможности Claude Code/SDK/API — «Can Claude...», «How do I...», «Does Claude...».',
|
||||
'READ-ONLY: ищет в документации, не правит код. Не для дебага кода — только для вопросов о platform.',
|
||||
'READ-ONLY: ищет в документации, код не правит. Не для отладки кода — только вопросы о платформе.',
|
||||
[],
|
||||
[],
|
||||
[{ name: 'MCP: github', cond: 'ищет примеры в репозитории при необходимости' }]
|
||||
[{ name: 'MCP: github', cond: 'при необходимости ищет примеры в репозитории' }]
|
||||
),
|
||||
ag_explore: nd(
|
||||
'Быстрый поиск файлов по паттерну или символу — только чтение, без анализа.',
|
||||
'При targeted lookup — найти файл по имени или grep по символу/keyword.',
|
||||
'Не для open-ended exploration. Не для review/audit (читает excerpts, миссует content past read window).',
|
||||
'Быстрый поиск файлов по шаблону имени или по символу — только чтение, без анализа.',
|
||||
'При точечном поиске — найти файл по имени или сделать grep по символу/ключевому слову.',
|
||||
'Не для свободного исследования. Не для ревью/аудита (читает отрывки, теряет контекст за пределами окна чтения).',
|
||||
[{ name: 'subagent-driven скил', cond: 'запускается для задач поиска' }],
|
||||
[],
|
||||
[]
|
||||
),
|
||||
ag_general: nd(
|
||||
'Универсальный агент для сложных multi-step исследований с полным доступом к инструментам.',
|
||||
'При сложных multi-step research / coding задачах, когда Explore недостаточно (нужен анализ, не только поиск).',
|
||||
'Полный доступ к инструментам — может писать код. Дороже Explore по токенам.',
|
||||
'Универсальный агент для сложных многошаговых исследований — с полным набором инструментов.',
|
||||
'При сложных multi-step research / coding задачах, когда Explore не хватает (нужен анализ, не только поиск).',
|
||||
'Полный набор инструментов — может писать код. Дороже Explore по токенам.',
|
||||
[{ name: 'subagent-driven скил', cond: 'запускается для основных задач' }],
|
||||
[],
|
||||
[]
|
||||
),
|
||||
ag_plan: nd(
|
||||
'Архитектор: разрабатывает планы реализации, выявляет критичные файлы, рассматривает trade-offs.',
|
||||
'При архитектурном планировании multi-component задачи (не для small refactor).',
|
||||
'READ-ONLY (no Edit/Write/NotebookEdit). Возвращает план, не реализует его.',
|
||||
'Архитектор: разрабатывает планы реализации, находит критичные файлы, разбирает компромиссы.',
|
||||
'При архитектурном планировании multi-component задачи (не для мелкого рефакторинга).',
|
||||
'READ-ONLY (без Edit/Write/NotebookEdit). Возвращает план, сам его не реализует.',
|
||||
[{ name: 'subagent-driven скил', cond: 'запускается для архитектурных задач' }],
|
||||
[],
|
||||
[{ name: 'writing-plans скил', cond: 'Plan агент и writing-plans решают похожую задачу для разных контекстов' }]
|
||||
[{ name: 'writing-plans скил', cond: 'агент Plan и скил writing-plans решают похожую задачу в разных контекстах' }]
|
||||
),
|
||||
ag_hookify: nd(
|
||||
'Анализирует транскрипты разговоров для поиска поведений, которые стоит предотвратить хуком.',
|
||||
'Разбирает транскрипты диалогов и ищет поведение, которое стоит предотвратить хуком.',
|
||||
'При триггере /hookify без аргументов ИЛИ при запросе «look back at this conversation, what mistakes to prevent».',
|
||||
'READ-ONLY (Read+Grep only). Рекомендует хуки, не создаёт их сам — передаёт в hookify plugin.',
|
||||
'READ-ONLY (только Read+Grep). Рекомендует хуки, сам их не создаёт — передаёт в плагин hookify.',
|
||||
[],
|
||||
[],
|
||||
[{ name: 'hookify (плагин)', cond: 'агент передаёт рекомендации в плагин' }]
|
||||
),
|
||||
ag_pcreator: nd(
|
||||
'Создаёт конфигурацию новых агентов по описанию пользователя.',
|
||||
'Создаёт настройку новых агентов по описанию от пользователя.',
|
||||
'При запросе «create an agent that...» — генерация agent.md по описанию функциональности.',
|
||||
'Только Write/Read tools. Не валидирует созданного агента — передаёт в plugin-validator.',
|
||||
'Только инструменты Write/Read. Созданного агента сам не проверяет — передаёт в plugin-validator.',
|
||||
[],
|
||||
[],
|
||||
[{ name: 'plugin-dev:plugin-validator', cond: 'validator проверяет созданного агента' }]
|
||||
[{ name: 'plugin-dev:plugin-validator', cond: 'валидатор проверяет созданного агента' }]
|
||||
),
|
||||
ag_pvalid: nd(
|
||||
'Проверяет структуру плагина на корректность — plugin.json, tools, manifest.',
|
||||
'После создания/изменения plugin.json или plugin component\'ов — proactive validation.',
|
||||
'READ-ONLY (Read/Grep/Glob/Bash). Сам не правит — даёт список нарушений.',
|
||||
'Проверяет структуру плагина на корректность — plugin.json, инструменты, манифест.',
|
||||
'После создания/правки plugin.json или компонентов плагина — превентивная проверка.',
|
||||
'READ-ONLY (Read/Grep/Glob/Bash). Сам не правит — выдаёт список нарушений.',
|
||||
[],
|
||||
[],
|
||||
[{ name: 'plugin-dev:agent-creator', cond: 'validator и creator работают в паре' }]
|
||||
[{ name: 'plugin-dev:agent-creator', cond: 'валидатор и creator работают в паре' }]
|
||||
),
|
||||
ag_skreview: nd(
|
||||
'Оценивает качество написанного скила — описание, workflow, примеры, best practices.',
|
||||
'После создания/изменения скила через writing-skills — proactive review.',
|
||||
'Оценивает качество написанного скила — описание, ход работы, примеры, лучшие практики.',
|
||||
'После создания/правки скила через writing-skills — превентивное ревью.',
|
||||
'READ-ONLY (Read/Grep/Glob). Не правит — выдаёт рекомендации.',
|
||||
[],
|
||||
[],
|
||||
[{ name: 'writing-skills скил', cond: 'skill-reviewer проверяет то, что writing-skills создал' }]
|
||||
[{ name: 'writing-skills скил', cond: 'skill-reviewer проверяет то, что создал writing-skills' }]
|
||||
),
|
||||
|
||||
// ── MCP-СЕРВЕРЫ ──────────────────────────────────
|
||||
mcp_pw: nd(
|
||||
'Управляет браузером — снимает скриншоты, кликает, заполняет формы для smoke и a11y тестов.',
|
||||
'Управляет браузером — снимает скриншоты, кликает, заполняет формы для smoke- и a11y-тестов.',
|
||||
'При визуальной проверке прототипов (фаза 0), при a11y smoke (axe-core), при UI integration smoke.',
|
||||
'Не для production users. На каждой сессии один shared browser — конфликты при parallel-work (см. квирк #2 в memory).',
|
||||
'Не для боевых пользователей. На сессию один общий браузер — при parallel-work возможны столкновения (см. квирк #2 в memory).',
|
||||
[{ name: 'CLAUDE.md §3.1 #2', cond: 'активен с фазы 0' }],
|
||||
[],
|
||||
[{ name: 'SessionStart хук', cond: 'используется для визуальной проверки прототипов' }]
|
||||
),
|
||||
mcp_gh: nd(
|
||||
'GitHub API — читает/создаёт PR, issues, коммиты, branches в репозитории CoralMinister/lidpotok.',
|
||||
'При работе с PR/issues, при поиске в репозитории, при создании PR через finishing-pr skill.',
|
||||
'Не push на main без явного одобрения. Pravila §4: атомарные коммиты, не batch\'ить через MCP.',
|
||||
'GitHub API — читает/создаёт PR, issues, коммиты, ветки в репозитории CoralMinister/lidpotok.',
|
||||
'При работе с PR/issues, при поиске в репозитории, при создании PR через скил finishing-pr.',
|
||||
'Не делать push в main без явного одобрения. Pravila §4: атомарные коммиты, не объединять их через MCP.',
|
||||
[{ name: 'CLAUDE.md §3.1 #3', cond: 'активен с фазы 0' }],
|
||||
[],
|
||||
[{ name: 'finishing-pr скил', cond: 'создаёт PR через этот MCP' }]
|
||||
),
|
||||
mcp_boost: nd(
|
||||
'Laravel Boost — SQL запросы к dev-БД, схема таблиц, логи ошибок, поиск в docs Laravel.',
|
||||
'Фаза 1+: при SQL запросах, при поиске в Laravel docs, при работе с Eloquent моделями.',
|
||||
'**READ-ONLY к prod** — `.env.production` не должен попадать в локальный конфиг. Не использовать Inertia/Livewire/Tailwind/Filament guidelines.',
|
||||
[{ name: 'CLAUDE.md §3.2 #10', cond: 'активен с фазы 1, READ-ONLY к prod запрещено' }],
|
||||
'Laravel Boost — SQL-запросы к dev-БД, схема таблиц, журналы ошибок, поиск по документации Laravel.',
|
||||
'Фаза 1+: при SQL-запросах, при поиске в документации Laravel, при работе с моделями Eloquent.',
|
||||
'**READ-ONLY к prod** — `.env.production` не должен попадать в локальный конфиг. Не использовать правила-подсказки Inertia/Livewire/Tailwind/Filament.',
|
||||
[{ name: 'CLAUDE.md §3.2 #10', cond: 'активен с фазы 1, доступ к prod только на чтение' }],
|
||||
[],
|
||||
[{ name: 'ag_rls агент', cond: 'rls-reviewer использует Boost для SQL' }, { name: 'sk_rls скил', cond: 'rls-check использует Boost' }]
|
||||
),
|
||||
mcp_semgrep: nd(
|
||||
'SAST анализ кода — ищет уязвимости, XSS, SQLi, нарушения правил по паттернам.',
|
||||
'Фаза 3 pre-production: при code review (sk_coderev), при CI перед релизом.',
|
||||
'Конфигурация в .semgrep.yml. False-positive\'ы документируются inline.',
|
||||
'SAST (статический анализ кода на уязвимости) — ищет уязвимости, XSS (внедрение JS), SQLi (внедрение SQL), нарушения правил по шаблонам.',
|
||||
'Фаза 3 pre-production: при ревью кода (sk_coderev), при CI перед релизом.',
|
||||
'Настройка в .semgrep.yml. Ложные срабатывания документируются прямо в коде.',
|
||||
[{ name: 'CLAUDE.md §3.4 #25', cond: 'фаза 3 pre-production' }],
|
||||
[],
|
||||
[{ name: 'code-review скил', cond: 'Semgrep MCP используется при code review' }]
|
||||
[{ name: 'code-review скил', cond: 'Semgrep MCP используется при ревью кода' }]
|
||||
),
|
||||
mcp_sentry: nd(
|
||||
'Читает ошибки из self-hosted Sentry в Yandex Cloud — события, стектрейсы, метрики. READ-ONLY.',
|
||||
'При расследовании production runtime ошибок (после deployment Б-1).',
|
||||
'**READ-ONLY** scope (org:read/project:read/event:read). Pending Sentry instance deployment Б-1 (зависит от ООО registration).',
|
||||
[{ name: 'CLAUDE.md §3.3 #34', cond: 'off-phase debug-runtime; pending Sentry deployment Б-1' }],
|
||||
'Читает ошибки из self-hosted Sentry в Yandex Cloud — события, стектрейсы, метрики. READ-ONLY (только чтение).',
|
||||
'При расследовании ошибок боевой среды во время работы (после развёртывания Б-1).',
|
||||
'**READ-ONLY** (org:read/project:read/event:read). Ждёт развёртывания инстанса Sentry по Б-1 (зависит от регистрации ООО).',
|
||||
[{ name: 'CLAUDE.md §3.3 #34', cond: 'off-phase debug-runtime; ждёт развёртывания Sentry по Б-1' }],
|
||||
[],
|
||||
[]
|
||||
),
|
||||
mcp_redis: nd(
|
||||
'Читает Redis/Memurai — ключи, очереди, кэш для дебага race conditions. СТРОГО READ-ONLY.',
|
||||
'При дебаге Redis-очередей (Pest --parallel quirk 72), при анализе кэш-инвалидации.',
|
||||
'**СТРОГО READ-ONLY** — никаких DEL/FLUSHDB/SET/LPUSH из Claude (только GET/KEYS/LIST). Deprecated Anthropic source — миграция post-MVP.',
|
||||
'Читает Redis/Memurai — ключи, очереди, кэш для отладки гонок (race conditions). СТРОГО READ-ONLY.',
|
||||
'При отладке очередей Redis (Pest --parallel квирк 72), при анализе инвалидации кэша.',
|
||||
'**СТРОГО READ-ONLY** — никаких DEL/FLUSHDB/SET/LPUSH из Claude (только GET/KEYS/LIST). Источник Anthropic устарел — миграция post-MVP.',
|
||||
[{ name: 'CLAUDE.md §3.3 #35', cond: 'off-phase debug-runtime; PSR_v1 R10.1 блок 3' }],
|
||||
[],
|
||||
[{ name: 'pest-parallel-debugger агент', cond: 'агент использует для quirk 72 (Redis race)' }]
|
||||
[{ name: 'pest-parallel-debugger агент', cond: 'агент использует для квирка 72 (гонка в Redis)' }]
|
||||
),
|
||||
mcp_21st: nd(
|
||||
'Генератор стартовых шаблонов UI-компонентов через LLM. Активация только через R14.4 pipeline.',
|
||||
'Только через PSR_v1 R14.4 pipeline: pre-check 9 условий (брендовый App*? Vuetify-эквивалент? существующий компонент?).',
|
||||
'R14.5: не параллельно с FD/UPM. JSX→Vue, Tailwind→utility, shadcn→Vuetify обязательны. Pa11y a11y на deployable.',
|
||||
[{ name: 'PSR_v1 R14.4', cond: 'строгий pre-check: 9 условий перед активацией' }],
|
||||
'Генератор стартовых шаблонов UI-компонентов через LLM. Активация только через процедуру R14.4.',
|
||||
'Только через процедуру PSR_v1 R14.4: предпроверка из 9 условий (брендовый App*? есть аналог в Vuetify? есть уже существующий компонент?).',
|
||||
'R14.5: не запускать параллельно с FD/UPM. Обязательны: JSX→Vue, Tailwind→utility, shadcn→Vuetify. Pa11y a11y на готовом виде.',
|
||||
[{ name: 'PSR_v1 R14.4', cond: 'строгая предпроверка: 9 условий перед активацией' }],
|
||||
[],
|
||||
[],
|
||||
[{ name: 'Frontend Design', desc: 'PSR_v1 R14.5: нельзя параллельно — 21st как генератор материала, FD как решатель; риск смешивания ролей и нарушения R6 фильтра стека' }]
|
||||
[{ name: 'Frontend Design', desc: 'PSR_v1 R14.5: нельзя параллельно — 21st как генератор материала, FD как решатель; риск смешать роли и нарушить R6 (фильтр стека)' }]
|
||||
),
|
||||
|
||||
// ── LEFTHOOK JOBS ─────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user