feat(graph): when+limits content for skills (14 SP + 2 проектных)
This commit is contained in:
@@ -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)' }]
|
||||
|
||||
Reference in New Issue
Block a user