From 2b38e7be322db5e490b50efcca75ec429a2186ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Thu, 14 May 2026 09:16:02 +0300 Subject: [PATCH] =?UTF-8?q?feat(graph):=20when+limits=20content=20for=20sk?= =?UTF-8?q?ills=20(14=20SP=20+=202=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=BD=D1=8B=D1=85)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/automation-graph.html | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/docs/automation-graph.html b/docs/automation-graph.html index 65095c3c..5a6cdd5f 100644 --- a/docs/automation-graph.html +++ b/docs/automation-graph.html @@ -455,60 +455,80 @@ const NODE_DETAILS = { // ── СКИЛЫ SUPERPOWERS ──────────────────────────── sk_brainstorm: nd( 'Продумывает задачу вместе с заказчиком, формулирует варианты A/B/C и согласует дизайн до написания кода.', + 'При creative задаче — новая фича, нетривиальный refactor, дизайн-решение; ПЕРЕД любым кодом или планом.', + 'Обязательно «Approved» от заказчика до перехода к writing-plans. HARD-GATE: нельзя инвокировать implementation skill до утверждения дизайна.', [{ name: 'Superpowers', cond: 'содержит' }, { name: 'Pravila §12', cond: 'обязателен для creative задач' }], [], [{ name: 'writing-plans', cond: 'вызывается сразу после brainstorming для создания плана' }] ), sk_tdd: nd( 'Ведёт разработку через написание провального теста до кода — failing test first, потом GREEN.', + 'При любом новом production коде — backend (Pest) и frontend (Vitest).', + 'Failing test ДО написания implementation; код «должен работать» без verified теста — нарушение §12.', [{ name: 'Superpowers', cond: 'содержит' }, { name: 'Pravila §12', cond: 'обязателен для любого нового кода' }], [], [{ name: 'executing-plans', cond: 'TDD встроен в каждый шаг плана выполнения' }] ), sk_debug: nd( 'Системный дебаг: минимум 3 гипотезы, фальсификация каждой перед исправлением — никаких «должно работать».', + 'При unexpected behavior, фейле теста, runtime ошибке, неожиданном выводе.', + 'Минимум 3 гипотезы. Фальсификация через реальные команды/тесты, не «логика подсказывает». Никаких «попробую исправить» без проверки причины.', [{ name: 'Superpowers', cond: 'содержит' }, { name: 'Pravila §12', cond: 'обязателен при unexpected behavior' }], [], [{ name: 'MCP: redis', cond: 'используется для дебага Redis-очередей' }] ), sk_wplans: nd( 'Создаёт детальный план реализации с полным кодом, командами и шагами по 2-5 минут.', + 'После brainstorming (creative задача) или сразу для multi-step (≥3 шага) технической задачи.', + 'Никаких placeholder\'ов (TBD, TODO, «add validation»). Каждый шаг — реальный код или команда. Spec coverage обязателен.', [{ name: 'Superpowers', cond: 'содержит' }, { name: 'Pravila §12', cond: 'обязателен для multi-step задач (≥3 шага)' }], [], [{ name: 'executing-plans или subagent-driven', cond: 'план передаётся в один из них для выполнения' }] ), sk_eplans: nd( 'Выполняет готовый план шаг за шагом, отмечает чекбоксы, делает коммиты после каждого шага.', + 'После writing-plans (если выбран inline execution); альтернатива — subagent-driven для same-session.', + 'Каждый шаг отмечается checkbox\'ом, не batch\'ит коммиты — атомарно (Pravila §4.2).', [{ name: 'Superpowers', cond: 'содержит' }], [], [{ name: 'writing-plans', cond: 'получает план от writing-plans' }, { name: 'subagent-driven', cond: 'альтернатива — зависит от выбора пользователя' }] ), sk_verify: nd( 'Обязательная проверка перед «готово» — запускает тесты, видит реальный вывод, никаких предположений.', + 'Перед любым claim «готово»/«passed»/«closed»/«merged» — обязательно (§12 + economy 0% hard requirement).', + 'Реальный запуск, не «должно пройти». Output виден полностью. Cherry-picking запрещён («tests pass» = ровно столько, сколько прошло).', [{ name: 'Superpowers', cond: 'содержит' }, { name: 'Pravila §12', cond: 'обязателен перед любым claim «готово»' }], [], [{ name: 'MCP: laravel-boost', cond: 'запросы к БД для проверки данных' }] ), sk_parallel: nd( 'Разбивает независимые задачи на параллельные потоки с изоляцией через git worktrees.', + 'При наличии нескольких независимых рабочих фронтов (CTO-task + Plan task + audit-fix) одновременно.', + 'Изоляция через worktree обязательна — никакого «работаю в одной директории на 3 ветках сразу». Risk of contention.', [{ name: 'Superpowers', cond: 'содержит' }], [], [{ name: 'worktree скил', cond: 'parallel-work использует worktree для изоляции' }] ), sk_worktree: nd( 'Создаёт изолированную копию репозитория для рискованной или параллельной работы.', + 'При parallel-work или при рискованной работе (refactor с возможностью abort, ветка экспериментов).', + 'Cleanup через ExitWorktree обязателен. Не оставлять untracked worktree\'ы — захламляют файловую систему.', [{ name: 'Superpowers', cond: 'содержит' }], [], [{ name: 'parallel-work', cond: 'worktree — инструмент для parallel-work' }] ), sk_pr: nd( 'Чеклист финальной готовности PR — тесты, документация, чистота кода, pre-push хуки.', + 'Перед `gh pr create` или `git push` на upstream — обязательная проверка готовности.', + 'Pre-push хуки (gitleaks full-history + lychee) — не bypass\'ить через `--no-verify`. Pravila §4.2.', [{ name: 'Superpowers', cond: 'содержит' }], [], [{ name: 'MCP: github', cond: 'создаёт PR через GitHub MCP' }, { name: 'lefthook pre-push', cond: 'запускает gitleaks + lychee' }] ), sk_subagent: nd( 'Запускает суб-агентов для крупных задач — каждый в отдельном контексте без накопленного шума.', + 'При plan-driven execution в same-session ИЛИ при делегировании поиска/анализа большого scope.', + 'Subagent в режиме экономии 0%: запрашивать raw output, не summary — решения принимать самому.', [{ name: 'Superpowers', cond: 'содержит' }], [ { name: 'Explore агент', cond: 'запускает для поиска по кодовой базе' }, @@ -519,24 +539,32 @@ const NODE_DETAILS = { ), sk_wskills: nd( 'Создаёт новые скилы по стандартному шаблону с SKILL.md, frontmatter, workflow.', + 'При формализации повторяющегося workflow в reusable skill (после 2-3 примеров одинаковой работы).', + 'Шаблон SKILL.md, frontmatter (name, description, when_to_use, allowed-tools), workflow с DOT-диаграммой.', [{ name: 'Superpowers', cond: 'содержит' }], [], [{ name: 'plugin-dev:skill-reviewer', cond: 'агент проверяет созданный скил' }] ), sk_spreview: nd( 'Проверяет spec-документ на полноту, противоречия, placeholder\'ы и scope.', + 'После writing-plans на отдельном этапе ДО implementation — для крупных multi-task планов.', + 'Inline self-review в режиме brainstorming достаточно для small spec; для крупных — выделенная инвокация.', [{ name: 'Superpowers', cond: 'содержит' }], [], [{ name: 'brainstorming', cond: 'spec-review вызывается в конце brainstorming после записи спека' }] ), sk_coderev: nd( 'Систематический code review — безопасность, тесты, архитектура, соответствие правилам.', + 'Перед merge PR; после крупной серии коммитов; при подготовке к релизу; при подозрении на регрессию.', + 'Не cherry-pick: review всех diff\'ов, не только tarred. SAST (Semgrep) включается обязательно.', [{ name: 'Superpowers', cond: 'содержит' }], [], [{ name: 'MCP: semgrep', cond: 'SAST-проверка при code review' }] ), sk_elements: nd( 'Улучшает написание текстов и документации — ясность, лаконичность, без воды.', + 'При написании spec/plan/CHANGELOG/PR description — для коммуникации с командой.', + 'Без воды. Без «легко», «просто», «всего лишь». Каждое утверждение — измеримое.', [{ name: 'Superpowers', cond: 'содержит' }], [], [] @@ -545,6 +573,8 @@ const NODE_DETAILS = { // ── СКИЛЫ ПРОЕКТА ──────────────────────────────── sk_rls: nd( '7-шаговый чеклист RLS для новой таблицы: tenant_id, ENABLE RLS, политики, 5-role GRANTs, CHANGELOG, squawk, smoke test.', + 'При создании новой таблицы в db/schema.sql ИЛИ при правках существующих RLS политик.', + '5-role GRANTs обязательны (crm_app_user / crm_app_admin / crm_supplier_worker BYPASSRLS / crm_readonly / crm_migrator). CHANGELOG_schema.md обязателен.', [{ name: 'Tooling §3.2', cond: 'использует squawk (#15) и команды grep' }], [], [{ name: 'MCP: laravel-boost', cond: 'SQL запросы к schema.sql для проверки' }], @@ -552,6 +582,8 @@ const NODE_DETAILS = { ), sk_qitem: nd( 'Добавляет новый открытый вопрос в реестр Открытые_вопросы_v8_3.md с обновлением счётчиков §0 и версии.', + 'При появлении нового открытого вопроса (Биз-/CTO-/Ю-/Диз-/DO-/OPEN-) — формальный input в реестр.', + 'Категоризация (Биз-/CTO-/...) обязательна. Связанные документы (CLAUDE.md/Pravila/PSR_v1/Tooling) — синхронизируются.', [], [], [{ name: 'claude-md-mgmt', cond: 'скил делегирует правку CLAUDE.md через плагин (§5п.10)' }]