version: "0.1.0"

nodes:
  - id: "#2"
    name: "Playwright MCP"
    slug: "playwright-mcp"
    category: "phase-0"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "html prototype", weight: 1.0}
      - {keyword: "screenshot", weight: 1.0}
      - {keyword: "interaction smoke", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§2.4 #2"

  - id: "#3"
    name: "GitHub MCP"
    slug: "github-mcp"
    category: "phase-0"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "issues", weight: 1.0}
      - {keyword: "pr", weight: 1.0}
      - {keyword: "commits", weight: 1.0}
      - {keyword: "открытые вопросы", weight: 1.0}
    boundaries: []
    chain_membership: ["L9"]
    attributes:
      tooling_section: "§2.4 #3"

  - id: "#4"
    name: "markdownlint-cli2"
    slug: "markdownlint"
    category: "phase-0"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "lint .md", weight: 1.0}
      - {keyword: "markdown style", weight: 1.0}
      - {keyword: "заголовки/таблицы", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§2.4 #4"
      install: "npm run lint:md"

  - id: "#5"
    name: "cspell"
    slug: "cspell"
    category: "phase-0"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "орфография ru/en", weight: 1.0}
      - {keyword: "кастомный словарь", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§2.4 #5"
      install: "npm run spell"

  - id: "#6"
    name: "lychee"
    slug: "lychee"
    category: "phase-0"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "проверка ссылок .md", weight: 1.0}
      - {keyword: "кросс-ссылки архива", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§2.4 #6"
      install: "npm run links"

  - id: "#7"
    name: "Stylelint"
    slug: "stylelint"
    category: "phase-0"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "css lint", weight: 1.0}
      - {keyword: "vue sfc style", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§2.4 #7"
      install: "npm run lint:css"

  - id: "#8"
    name: "gitleaks"
    slug: "gitleaks"
    category: "phase-0"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "секреты в diff", weight: 1.0}
      - {keyword: "pre-commit hook", weight: 1.0}
    boundaries: []
    chain_membership: ["L15"]
    attributes:
      tooling_section: "§2.4 #8"

  - id: "#9"
    name: "Pa11y"
    slug: "pa11y"
    category: "phase-0"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "a11y wcag 2.1 aa", weight: 1.0}
      - {keyword: "прототипы", weight: 1.0}
      - {keyword: "технический sot", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§2.4 #9"
      install: "npm run a11y"

  - id: "#10"
    name: "Laravel Boost"
    slug: "boost"
    category: "phase-1"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "sql", weight: 1.0}
      - {keyword: "eloquent", weight: 1.0}
      - {keyword: "docs laravel", weight: 1.0}
      - {keyword: "roster auto-detect", weight: 1.0}
    boundaries:
      - {pair: "#1", relation: "replaces"}
    chain_membership: ["L13", "L7"]
    attributes:
      tooling_section: "§3.5 #10"
      install: "composer require laravel/boost --dev"

  - id: "#11"
    name: "Laravel Pint"
    slug: "pint"
    category: "phase-1"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "php code style", weight: 1.0}
      - {keyword: "форматтер", weight: 1.0}
      - {classification: "refactor", weight: 1.0}
      - {classification: "cleanup", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§3.5 #11"
      install: "composer pint"

  - id: "#12"
    name: "Larastan"
    slug: "larastan"
    category: "phase-1"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "статанализ php", weight: 1.0}
      - {keyword: "типы", weight: 1.0}
      - {classification: "refactor", weight: 1.0}
      - {classification: "cleanup", weight: 1.0}
    boundaries: []
    chain_membership: ["L14"]
    attributes:
      tooling_section: "§3.5 #12"
      install: "composer stan"

  - id: "#13"
    name: "Roave/SecurityAdvisories"
    slug: "roave-security"
    category: "phase-1"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "cve на install", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§3.5 #13"
      install: "composer install (автоматически)"

  - id: "#14"
    name: "Laravel IDE Helper"
    slug: "ide-helper"
    category: "phase-1"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "ide-stubs php", weight: 1.0}
      - {keyword: "@mixin", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§3.5 #14"
      install: "php artisan ide-helper:generate"

  - id: "#15"
    name: "squawk"
    slug: "squawk"
    category: "phase-1"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "линт миграций postgresql", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§3.5 #15"

  - id: "#16"
    name: "pgFormatter"
    slug: "pg-formatter"
    category: "phase-1"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "форматирование sql", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§3.5 #16"

  - id: "#17"
    name: "pg_partman"
    slug: "pg-partman"
    category: "phase-1"
    subcategory: null
    status: "dormant"
    dormancy_reason: "native Windows PG не поддерживает расширение; заменён ручным cron'ом partitions:create-months"
    triggers:
      - {keyword: "партиционирование pg", weight: 1.0}
    boundaries:
      - {relation: "replaced by Artisan partitions:create-months (CLAUDE.md §6)"}
    chain_membership: []
    attributes:
      tooling_section: "§3.5 #17"

  - id: "#19"
    name: "Superpowers v5.1.0"
    slug: "superpowers"
    category: "phase-2"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {classification: "feature", weight: 1.0}
      - {classification: "planning", weight: 1.0}
      - {classification: "bugfix", weight: 0.8}
      - {classification: "refactor", weight: 0.8}
      - {keyword: "tdd", weight: 1.0}
      - {keyword: "brainstorm", weight: 1.0}
      - {keyword: "debug", weight: 0.8}
    boundaries:
      - {adr: "ADR-011", role: "hard-floor source"}
      - {pair: "#30", relation: "paired stack"}
    chain_membership: []
    attributes:
      tooling_section: "§3.3 #19"
      install: "marketplace plugin, enabled in ~/.claude/settings.json"

  - id: "#18"
    name: "Pest 4"
    slug: "pest"
    category: "phase-1"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {classification: "bugfix", weight: 1.0}
      - {keyword: "test", weight: 1.0}
      - {keyword: "тест", weight: 1.0}
      - {file_pattern: "tests/**/*.php", weight: 1.0}
    boundaries: []
    chain_membership: ["L13"]
    attributes:
      tooling_section: "§3.2 #18"
      install: "composer require pestphp/pest --dev"

  - id: "#1"
    name: "PostgreSQL MCP"
    slug: "postgres-mcp"
    category: "phase-0"
    subcategory: null
    status: "historic"
    dormancy_reason: "Заменён #10 Laravel Boost в фазе 1 (08.05.2026)"
    triggers: []
    boundaries:
      - {pair: "#10", relation: "replaced by"}
    chain_membership: []
    attributes:
      tooling_section: "§3.1 #1 (historic)"

  - id: "#20"
    name: "Volar"
    slug: "volar"
    category: "phase-2"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "vue language server (vscode)", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§4.2 #20"

  - id: "#21"
    name: "vue-tsc"
    slug: "vue-tsc"
    category: "phase-2"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "type-check vue (ci only)", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§4.2 #21"
      install: "npm i -D vue-tsc typescript"

  - id: "#22"
    name: "ESLint + Prettier + plugin-vue + config-prettier"
    slug: "eslint-prettier"
    category: "phase-2"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "lint js/vue", weight: 1.0}
      - {keyword: "форматтер", weight: 1.0}
    boundaries:
      - {relation: "связка (R0.4)"}
    chain_membership: []
    attributes:
      tooling_section: "§4.2 #22"
      install: "npm i -D eslint prettier eslint-config-prettier eslint-plugin-vue"

  - id: "#23"
    name: "Vitest"
    slug: "vitest"
    category: "phase-2"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "тесты vue", weight: 1.0}
      - {keyword: "unit/component", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§4.2 #23"
      install: "npm i -D vitest @vue/test-utils @vitest/ui"

  - id: "#24"
    name: "Histoire"
    slug: "histoire"
    category: "phase-2"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "каталог компонентов", weight: 1.0}
      - {keyword: "stories", weight: 1.0}
    boundaries:
      - {relation: "не storybook"}
    chain_membership: []
    attributes:
      tooling_section: "§4.3 #24"
      install: "npm i -D --legacy-peer-deps histoire @histoire/plugin-vue"

  - id: "#25"
    name: "Semgrep + Semgrep MCP"
    slug: "semgrep"
    category: "phase-3"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "sast", weight: 1.0}
      - {keyword: "security static analysis", weight: 1.0}
      - {keyword: "статический анализ", weight: 1.0}
      - {keyword: "sast scan", weight: 1.0}
      - {keyword: "secret pattern", weight: 1.0}
      - {keyword: "уязвимость в коде", weight: 1.0}
      - {classification: "analysis", weight: 1.0}
    boundaries:
      - {relation: "связка binary+mcp"}
    chain_membership: ["L15", "L6"]
    attributes:
      tooling_section: "§5.1 #25"
      install: "npm run sast"

  - id: "#26"
    name: "Trivy"
    slug: "trivy"
    category: "phase-3"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "docker image scan", weight: 1.0}
      - {keyword: "container vulnerabilities", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§5.1 #26"

  - id: "#27"
    name: "GitHub Dependabot"
    slug: "dependabot"
    category: "phase-3"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "cve pr auto", weight: 1.0}
      - {keyword: "dependency updates", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§5.1 #27"

  - id: "#28"
    name: "pg_audit"
    slug: "pg-audit"
    category: "phase-3"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "audit logs postgresql", weight: 1.0}
      - {keyword: "mutation tracking", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§5.1 #28"

  - id: "#29"
    name: "pg_anonymizer"
    slug: "pg-anonymizer"
    category: "phase-3"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "маскирование пдн в дампах", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§5.1 #29"

  - id: "#30"
    name: "Frontend Design plugin"
    slug: "frontend-design"
    category: "phase-2"
    subcategory: null
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "ui компоненты", weight: 1.0}
      - {keyword: "паттерны", weight: 1.0}
      - {keyword: "состояния", weight: 1.0}
      - {keyword: "a11y-принципы", weight: 1.0}
    boundaries:
      - {pair: "#19", relation: "paired stack"}
    chain_membership: []
    attributes:
      tooling_section: "§4.4 #30"
      install: "enabledPlugins.frontend-design@anthropics-claude-plugins в ~/.claude/settings.json"

  - id: "#31"
    name: "UI UX Pro Max"
    slug: "ui-ux-pro-max"
    category: "off-phase"
    subcategory: "UI-pool"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "резерв ui", weight: 1.0}
      - {keyword: "стили", weight: 1.0}
      - {keyword: "палитры", weight: 1.0}
      - {keyword: "графики", weight: 1.0}
      - {keyword: "ux-гайдлайны", weight: 1.0}
    boundaries:
      - {relation: "PSR_v1 R14.3 pipeline"}
    chain_membership: []
    attributes:
      tooling_section: "§4.5 #31"

  - id: "#32"
    name: "21st.dev Magic MCP"
    slug: "21st-magic"
    category: "off-phase"
    subcategory: "UI-pool"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "генератор ui-шаблонов (llm-based)", weight: 1.0}
    boundaries:
      - {relation: "PSR_v1 R14.4 pipeline + Pa11y mandatory"}
    chain_membership: []
    attributes:
      tooling_section: "§4.6 #32"

  - id: "#33"
    name: "claude-md-management"
    slug: "claude-md-management"
    category: "off-phase"
    subcategory: "infrastructure"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "правки claude.md", weight: 1.0}
      - {keyword: "обязательный канал", weight: 1.0}
    boundaries:
      - {relation: "CLAUDE.md §5 п.10 + PSR_v1 R10.1"}
    chain_membership: ["L12"]
    attributes:
      tooling_section: "§4.7 #33"
      install: "enabledPlugins.claude-md-management@claude-plugins-official в ~/.claude/settings.json"

  - id: "#34"
    name: "Sentry MCP"
    slug: "sentry-mcp"
    category: "off-phase"
    subcategory: "debug-runtime"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "отладка production runtime errors", weight: 1.0}
      - {classification: "bugfix", weight: 1.0}
      - {classification: "monitoring", weight: 1.0}
    boundaries: []
    chain_membership: ["L13", "L8"]
    attributes:
      tooling_section: "§4.8 #34"

  - id: "#35"
    name: "Redis MCP"
    slug: "redis-mcp"
    category: "off-phase"
    subcategory: "debug-runtime"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "отладка redis/memurai очередей", weight: 1.0}
      - {keyword: "кэша", weight: 1.0}
      - {keyword: "pest-race", weight: 1.0}
      - {classification: "monitoring", weight: 1.0}
    boundaries:
      - {relation: "read-only"}
    chain_membership: ["L13", "L8"]
    attributes:
      tooling_section: "§4.9 #35"

  - id: "#36"
    name: "adr-kit"
    slug: "adr-kit"
    category: "off-phase"
    subcategory: "architecture-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "архитектурные решения", weight: 1.0}
      - {keyword: "adr", weight: 1.0}
      - {keyword: "enforcement", weight: 1.0}
      - {keyword: "architecture decision record", weight: 1.0}
      - {keyword: "архитектурное решение", weight: 1.0}
    boundaries:
      - {relation: "adr-judge lefthook job 9"}
    chain_membership: ["L4", "L5"]
    attributes:
      tooling_section: "§4.11 #36"
      install: "claude plugin install adr-kit@rvdbreemen-adr-kit"

  - id: "#37"
    name: "mermaid-skill"
    slug: "mermaid"
    category: "off-phase"
    subcategory: "architecture-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "c4", weight: 1.0}
      - {keyword: "architecture-диаграммы", weight: 1.0}
      - {keyword: "mermaid диаграмма", weight: 1.0}
      - {keyword: "c4 диаграмма", weight: 1.0}
      - {keyword: "c4 модель", weight: 1.0}
    boundaries: []
    chain_membership: ["L4"]
    attributes:
      tooling_section: "§4.12 #37"
      install: "vendored в .claude/skills/mermaid/"

  - id: "#38"
    name: "architecture-patterns"
    slug: "architecture-patterns"
    category: "off-phase"
    subcategory: "architecture-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "справочник архитектурных паттернов", weight: 1.0}
      - {keyword: "clean architecture", weight: 1.0}
      - {keyword: "hexagonal", weight: 1.0}
      - {keyword: "ddd", weight: 1.0}
      - {keyword: "domain-driven", weight: 1.0}
    boundaries: []
    chain_membership: ["L5"]
    attributes:
      tooling_section: "§4.13 #38"
      install: "claude plugin install architecture-patterns@claude-skills"

  - id: "#39"
    name: "Trail of Bits Skills"
    slug: "trail-of-bits"
    category: "off-phase"
    subcategory: "audit-security"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "deep аудит безопасности", weight: 1.0}
      - {keyword: "diff", weight: 1.0}
      - {keyword: "supply-chain", weight: 1.0}
      - {keyword: "глубокий security audit", weight: 1.0}
      - {keyword: "supply chain risk", weight: 1.0}
      - {keyword: "audit context", weight: 1.0}
      - {classification: "analysis", weight: 1.0}
    boundaries: []
    chain_membership: ["L15", "L6"]
    attributes:
      tooling_section: "§4.14 #39"
      install: "enabledPlugins subsets из trailofbits/skills"

  - id: "#40"
    name: "Security Guidance"
    slug: "security-guidance"
    category: "off-phase"
    subcategory: "audit-security"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "inline-блокировка уязвимых паттернов", weight: 1.0}
      - {keyword: "inline уязвимость", weight: 1.0}
      - {keyword: "code security warning", weight: 1.0}
      - {keyword: "уязвимый паттерн", weight: 1.0}
      - {keyword: "secret pattern detection", weight: 1.0}
    boundaries:
      - {relation: "блокирующий PreToolUse (sys.exit 2)"}
    chain_membership: ["L6"]
    attributes:
      tooling_section: "§4.15 #40"
      install: "claude plugin install security-guidance@claude-plugins-official"

  - id: "#41"
    name: "CCPM"
    slug: "ccpm"
    category: "off-phase"
    subcategory: "project-management"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "prd эпик issue код", weight: 1.0}
      - {keyword: "dev-проекты", weight: 1.0}
      - {classification: "planning", weight: 1.0}
    boundaries: []
    chain_membership: ["L9"]
    attributes:
      tooling_section: "§4.16 #41"
      install: "vendored в .claude/skills/ccpm/"

  - id: "#42"
    name: "product-management"
    slug: "product-management"
    category: "off-phase"
    subcategory: "project-management"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "prd", weight: 1.0}
      - {keyword: "роадмап", weight: 1.0}
      - {keyword: "метрики", weight: 1.0}
      - {keyword: "продуктовые церемонии", weight: 1.0}
      - {classification: "planning", weight: 1.0}
    boundaries: []
    chain_membership: ["L9"]
    attributes:
      tooling_section: "§4.17 #42"
      install: "claude plugin install product-management@knowledge-work-plugins"

  - id: "#43"
    name: "deptrac"
    slug: "deptrac"
    category: "off-phase"
    subcategory: "architecture-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "направление зависимостей", weight: 1.0}
      - {keyword: "границы слоёв", weight: 1.0}
      - {keyword: "архитектурная зависимость", weight: 1.0}
      - {keyword: "layer dependency", weight: 1.0}
      - {keyword: "deptrac.yaml", weight: 1.0}
      - {classification: "refactor", weight: 1.0}
    boundaries:
      - {relation: "lefthook job 10"}
    chain_membership: ["L14", "L5"]
    attributes:
      tooling_section: "§4.18 #43"
      install: "composer require --dev deptrac/deptrac"

  - id: "#44"
    name: "Figma MCP"
    slug: "figma-mcp"
    category: "off-phase"
    subcategory: "design-tooling"
    status: "deferred"
    dormancy_reason: "нет Figma-аккаунта; дизайн-источник Лидерры — статический handoff Платона, не Figma-файл"
    triggers:
      - {keyword: "извлечение дизайн-токенов из figma", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§4.19 #44"

  - id: "#45"
    name: "Universal Icons MCP"
    slug: "universal-icons-mcp"
    category: "off-phase"
    subcategory: "design-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "svg-иконки non-lucide коллекции", weight: 1.0}
    boundaries:
      - {adr: "ADR-006", role: "Lucide → lucide-vue-next; raw-SVG только для не-Lucide коллекций"}
    chain_membership: []
    attributes:
      tooling_section: "§4.20 #45"
      install: "npx -y mcp-universal-icons (в .mcp.json)"

  - id: "#46"
    name: "Design plugin"
    slug: "design-plugin"
    category: "off-phase"
    subcategory: "design-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "дизайн-критика", weight: 1.0}
      - {keyword: "ux-копирайт", weight: 1.0}
      - {keyword: "research synthesis", weight: 1.0}
    boundaries:
      - {relation: "pre-code; Pa11y остаётся a11y SoT"}
    chain_membership: []
    attributes:
      tooling_section: "§4.21 #46"
      install: "claude plugin install design@knowledge-work-plugins"

  - id: "#47"
    name: "openapi-mcp-server"
    slug: "openapi-mcp"
    category: "off-phase"
    subcategory: "integration-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "introspection openapi/rest-спек", weight: 1.0}
      - {keyword: "openapi", weight: 1.0}
      - {keyword: "swagger", weight: 1.0}
      - {keyword: "спека api", weight: 1.0}
      - {keyword: "rest api", weight: 1.0}
    boundaries:
      - {relation: "read-only"}
    chain_membership: ["L7"]
    attributes:
      tooling_section: "§4.22 #47"
      install: "npm install @ivotoby/openapi-mcp-server (в .mcp.json)"

  - id: "#48"
    name: "promptfoo"
    slug: "promptfoo"
    category: "off-phase"
    subcategory: "ml-ai-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "тестирование llm-промптов", weight: 1.0}
      - {keyword: "eval", weight: 1.0}
      - {keyword: "eval промпта", weight: 1.0}
      - {keyword: "llm test", weight: 1.0}
      - {keyword: "prompt regression", weight: 1.0}
    boundaries:
      - {relation: "только вручную/CI, никогда в хук"}
    chain_membership: ["L10"]
    attributes:
      tooling_section: "§4.23 #48"
      install: "npm install --save-dev promptfoo"

  - id: "#49"
    name: "Data Scientist skill"
    slug: "data-scientist"
    category: "off-phase"
    subcategory: "ml-ai-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "классический ml-воркфлоу", weight: 1.0}
      - {keyword: "ml модель", weight: 1.0}
      - {keyword: "статистика", weight: 1.0}
      - {keyword: "корреляция", weight: 1.0}
      - {keyword: "машинное обучение", weight: 1.0}
    boundaries: []
    chain_membership: ["L10"]
    attributes:
      tooling_section: "§4.24 #49"
      install: "vendored в .claude/skills/data-scientist/"

  - id: "#50"
    name: "Jupyter MCP"
    slug: "jupyter-mcp"
    category: "off-phase"
    subcategory: "ml-ai-tooling"
    status: "deferred"
    dormancy_reason: "нет Python ML-окружения (pandas/scikit-learn/Jupyter) на native-Windows машине"
    triggers:
      - {keyword: "исполняемые jupyter-ноутбуки", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§4.25 #50"

  - id: "#51"
    name: "operations"
    slug: "operations"
    category: "off-phase"
    subcategory: "business-process"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "документирование/оптимизация бизнес-процессов", weight: 1.0}
      - {keyword: "бизнес-процесс документ", weight: 1.0}
      - {keyword: "runbook", weight: 1.0}
      - {keyword: "capacity plan", weight: 1.0}
      - {keyword: "risk assessment", weight: 1.0}
    boundaries: []
    chain_membership: ["L4"]
    attributes:
      tooling_section: "§4.26 #51"
      install: "claude plugin install operations@knowledge-work-plugins"

  - id: "#52"
    name: "process-modeling"
    slug: "process-modeling"
    category: "off-phase"
    subcategory: "business-process"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "моделирование to-be процесса", weight: 1.0}
      - {keyword: "bpmn 2.0", weight: 1.0}
      - {keyword: "bpmn", weight: 1.0}
      - {keyword: "моделирование процесса", weight: 1.0}
      - {keyword: "swimlane", weight: 1.0}
    boundaries:
      - {relation: "self-authored project skill"}
    chain_membership: ["L3", "L4"]
    attributes:
      tooling_section: "§4.27 #52"

  - id: "#53"
    name: "process-analysis"
    slug: "process-analysis"
    category: "off-phase"
    subcategory: "business-process"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "анализ as-is процесса", weight: 1.0}
      - {keyword: "discovery из кода", weight: 1.0}
      - {keyword: "discovery процесса", weight: 1.0}
      - {keyword: "узкое место", weight: 1.0}
      - {keyword: "bottleneck", weight: 1.0}
      - {classification: "analysis", weight: 1.0}
    boundaries:
      - {relation: "self-authored project skill; ADR-009 граница с #55"}
    chain_membership: ["L3"]
    attributes:
      tooling_section: "§4.28 #53"

  - id: "#54"
    name: "n8n-mcp"
    slug: "n8n-mcp"
    category: "off-phase"
    subcategory: "business-process"
    status: "deferred"
    dormancy_reason: "n8n не в стеке; движок процессов = очередь Laravel; принятие n8n — отдельное архитектурное решение"
    triggers:
      - {keyword: "workflow-движок автоматизации", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§4.29 #54"

  - id: "#55"
    name: "discovery-interview"
    slug: "discovery-interview"
    category: "off-phase"
    subcategory: "discovery-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "интервью-discovery", weight: 1.0}
      - {keyword: "jtbd", weight: 1.0}
      - {keyword: "feature system режим", weight: 1.0}
      - {keyword: "discovery", weight: 1.0}
      - {keyword: "интервью заказчика", weight: 1.0}
    boundaries:
      - {adr: "ADR-009", role: "граница с #53 process-analysis: discovery-interview = интервью человека; process-analysis = discovery из кода"}
    chain_membership: ["L1", "L2"]
    attributes:
      tooling_section: "§4.30 #55"

  - id: "#56"
    name: "skill-creator"
    slug: "skill-creator"
    category: "off-phase"
    subcategory: "authoring-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "создание standalone-скилов", weight: 1.0}
      - {keyword: "eval", weight: 1.0}
      - {keyword: "создать скил", weight: 1.0}
      - {keyword: "новый skill", weight: 1.0}
      - {keyword: "skill.md", weight: 1.0}
    boundaries: []
    chain_membership: ["L11"]
    attributes:
      tooling_section: "§4.31 #56"

  - id: "#57"
    name: "plugin-dev"
    slug: "plugin-dev"
    category: "off-phase"
    subcategory: "authoring-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "разработка claude-плагинов", weight: 1.0}
      - {keyword: "плагин claude code", weight: 1.0}
      - {keyword: "plugin.json", weight: 1.0}
      - {keyword: "новый плагин", weight: 1.0}
      - {keyword: "marketplace плагин", weight: 1.0}
    boundaries: []
    chain_membership: ["L11"]
    attributes:
      tooling_section: "§4.32 #57"

  - id: "#58"
    name: "hookify"
    slug: "hookify"
    category: "off-phase"
    subcategory: "authoring-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "генерация хуков (только по явному /hookify)", weight: 1.0}
      - {keyword: "хук claude", weight: 1.0}
      - {keyword: "новый hook", weight: 1.0}
      - {keyword: "pretooluse хук", weight: 1.0}
      - {keyword: "генерация хука", weight: 1.0}
    boundaries:
      - {adr: "ADR-010", role: "HK1 pre-check коллизии с существующими хуками перед генерацией"}
    chain_membership: ["L11"]
    attributes:
      tooling_section: "§4.33 #58"

  - id: "#59"
    name: "claude-code-setup"
    slug: "claude-code-setup"
    category: "off-phase"
    subcategory: "dev-support"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "рекомендатель claude code automations (read-only)", weight: 1.0}
    boundaries: []
    chain_membership: []
    attributes:
      tooling_section: "§4.34 #59"

  - id: "#60"
    name: "context7"
    slug: "context7"
    category: "off-phase"
    subcategory: "dev-support"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "актуальная документация библиотек/sdk", weight: 1.0}
      - {keyword: "актуальная документация библиотеки", weight: 1.0}
      - {keyword: "лайвдоки", weight: 1.0}
      - {keyword: "документация пакета", weight: 1.0}
      - {keyword: "документация sdk", weight: 1.0}
    boundaries:
      - {relation: "первый выбор для документации известной библиотеки; WebFetch — fallback на конкретный URL; WebSearch — без знания библиотеки"}
    chain_membership: []
    attributes:
      tooling_section: "§4.35 #60"

  - id: "#61"
    name: "finance plugin"
    slug: "finance-plugin"
    category: "off-phase"
    subcategory: "finance-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "сверка", weight: 1.0}
      - {keyword: "variance-анализ", weight: 1.0}
      - {keyword: "us-gaap-отчётность", weight: 1.0}
      - {keyword: "проводки", weight: 1.0}
      - {keyword: "close", weight: 1.0}
      - {keyword: "reconciliation", weight: 1.0}
      - {keyword: "variance", weight: 1.0}
      - {keyword: "journal entry", weight: 1.0}
      - {keyword: "financial statements", weight: 1.0}
      - {keyword: "audit support", weight: 1.0}
    boundaries:
      - {adr: "ADR-012", role: "граница C6/C7; US-GAAP-скилы частично применимы; SOX not-applicable РФ; warehouse-MCP DEFERRED"}
    chain_membership: []
    attributes:
      tooling_section: "§4.36 #61"
      install: "claude plugin install finance@knowledge-work-plugins"

  - id: "#62"
    name: "billing-audit"
    slug: "billing-audit"
    category: "off-phase"
    subcategory: "finance-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "аудит списания", weight: 1.0}
      - {keyword: "money-инварианты", weight: 1.0}
      - {keyword: "идемпотентность", weight: 1.0}
      - {keyword: "тариф-резолюция", weight: 1.0}
      - {keyword: "дрейф reconcile", weight: 1.0}
      - {keyword: "списание", weight: 1.0}
      - {keyword: "биллинг", weight: 1.0}
      - {keyword: "тариф", weight: 1.0}
      - {keyword: "баланс", weight: 1.0}
      - {keyword: "начисление лида", weight: 1.0}
      - {keyword: "lead_charges", weight: 1.0}
      - {keyword: "копейки", weight: 1.0}
      - {keyword: "csv reconcile", weight: 1.0}
      - {keyword: "bcmath", weight: 1.0}
      - {keyword: "bcadd", weight: 1.0}
    boundaries:
      - {adr: "ADR-012", role: "граница с process-*/D3/ru-tax; аудит кода биллинга, не налогов и не процесса"}
    chain_membership: ["L13"]
    attributes:
      tooling_section: "§4.37 #62"

  - id: "#63"
    name: "ru-tax-accounting"
    slug: "ru-tax-accounting"
    category: "off-phase"
    subcategory: "finance-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "рсбу", weight: 1.0}
      - {keyword: "ндс/усн", weight: 1.0}
      - {keyword: "налоговая база", weight: 1.0}
      - {keyword: "налогооблагаемое событие", weight: 1.0}
      - {keyword: "выгрузка бухгалтеру", weight: 1.0}
      - {keyword: "ндс", weight: 1.0}
      - {keyword: "усн", weight: 1.0}
      - {keyword: "налог на прибыль", weight: 1.0}
      - {keyword: "выручка", weight: 1.0}
      - {keyword: "проводка", weight: 1.0}
      - {keyword: "дт/кт", weight: 1.0}
      - {keyword: "бухгалтер", weight: 1.0}
    boundaries:
      - {adr: "ADR-012", role: "закрывает РФ-gap US-GAAP-плагина #61; ≠ billing-audit #62 (корректность кода), ≠ D1/D2"}
    chain_membership: ["L13"]
    attributes:
      tooling_section: "§4.38 #63"

  - id: "#64"
    name: "Rector"
    slug: "rector"
    category: "off-phase"
    subcategory: "backend-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "авто-рефакторинг", weight: 1.0}
      - {keyword: "version-upgrade laravel", weight: 1.0}
      - {keyword: "удаление мёртвого кода", weight: 1.0}
      - {keyword: "автоматический рефакторинг", weight: 1.0}
      - {keyword: "версия php", weight: 1.0}
      - {keyword: "deprecated php", weight: 1.0}
      - {keyword: "code modernization", weight: 1.0}
      - {classification: "refactor", weight: 1.0}
    boundaries:
      - {adr: "ADR-013", role: "BT1 vs Pint (трансформация vs форматирование); BT2 vs Larastan (комплементарны); BT3 vs deptrac"}
    chain_membership: ["L14"]
    attributes:
      tooling_section: "§4.39 #64"
      install: "composer require rector/rector --dev"

  - id: "#65"
    name: "PHP Insights"
    slug: "php-insights"
    category: "off-phase"
    subcategory: "backend-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "метрики качества/сложности/архитектуры php-кода", weight: 1.0}
      - {keyword: "метрики качества кода", weight: 1.0}
      - {keyword: "complexity", weight: 1.0}
      - {keyword: "architecture metrics", weight: 1.0}
      - {keyword: "качество кода php", weight: 1.0}
      - {classification: "refactor", weight: 1.0}
    boundaries:
      - {adr: "ADR-013", role: "BT4 vs Pint/Larastan; уникум — оси complexity + architecture"}
    chain_membership: ["L14"]
    attributes:
      tooling_section: "§4.40 #65"
      install: "composer require nunomaduro/phpinsights --dev"

  - id: "#66"
    name: "laravel-backend-patterns"
    slug: "laravel-backend-patterns"
    category: "off-phase"
    subcategory: "backend-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "как писать backend в лидерре", weight: 1.0}
      - {keyword: "паттерн controller/service/job", weight: 1.0}
      - {keyword: "rls", weight: 1.0}
      - {keyword: "деньги", weight: 1.0}
      - {keyword: "controller", weight: 1.0}
      - {keyword: "service", weight: 1.0}
      - {keyword: "job", weight: 1.0}
      - {keyword: "eloquent", weight: 1.0}
      - {keyword: "partition", weight: 1.0}
      - {keyword: "lockforupdate", weight: 1.0}
      - {keyword: "dispatch", weight: 1.0}
    boundaries:
      - {adr: "ADR-013", role: "BT5 ≠ architecture-patterns #38 (generic vs проектные конвенции); BT6 ≠ billing-audit #62"}
    chain_membership: []
    attributes:
      tooling_section: "§4.41 #66"

  - id: "#67"
    name: "NightOwl"
    slug: "nightowl"
    category: "off-phase"
    subcategory: "backend-tooling"
    status: "deferred"
    dormancy_reason: "pending Б-1/Linux: native-Windows нет pcntl/posix; OSS без MCP; hosted 152-ФЗ риск"
    triggers:
      - {keyword: "коррелированный runtime-трейс request/job/query (self-hosted)", weight: 1.0}
    boundaries:
      - {adr: "ADR-013", role: "BT7 ≠ Sentry #34 (трейс vs ошибки); BT8 ≠ Pail/Boost (сквозной трейс vs tail/снапшот)"}
    chain_membership: []
    attributes:
      tooling_section: "§4.42 #67"

  - id: "#68"
    name: "OWASP ZAP"
    slug: "owasp-zap"
    category: "off-phase"
    subcategory: "infosec-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "глубокая боевая dast", weight: 1.0}
      - {keyword: "обход входа", weight: 1.0}
      - {keyword: "инъекции", weight: 1.0}
      - {keyword: "xss", weight: 1.0}
      - {keyword: "dast", weight: 1.0}
      - {keyword: "scan running portal", weight: 1.0}
      - {keyword: "проникновение в работающий портал", weight: 1.0}
      - {classification: "security", weight: 1.0}
    boundaries:
      - {adr: "ADR-014", role: "IS1 ≠ Semgrep #25 (динамика vs статика); IS2 ≠ Nuclei #69 (глубина vs широта)"}
    chain_membership: ["L15"]
    attributes:
      tooling_section: "§4.43 #68"

  - id: "#69"
    name: "Nuclei"
    slug: "nuclei"
    category: "off-phase"
    subcategory: "infosec-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "известные уязвимости/экспозиция/слабый tls снаружи", weight: 1.0}
      - {keyword: "nuclei", weight: 1.0}
      - {keyword: "уязвимость по шаблону", weight: 1.0}
      - {keyword: "cve scan", weight: 1.0}
      - {keyword: "nuclei сканер", weight: 1.0}
      - {classification: "security", weight: 1.0}
    boundaries:
      - {adr: "ADR-014", role: "IS2 ≠ ZAP #68 (широта vs глубина — комплементарны)"}
    chain_membership: ["L15"]
    attributes:
      tooling_section: "§4.44 #69"

  - id: "#70"
    name: "Ward"
    slug: "ward"
    category: "off-phase"
    subcategory: "infosec-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "безопасность настроек laravel", weight: 1.0}
      - {keyword: ".env/config/заголовки/cookie/secrets/deps", weight: 1.0}
      - {keyword: "laravel security config", weight: 1.0}
      - {keyword: "env audit", weight: 1.0}
      - {keyword: "secrets config", weight: 1.0}
      - {classification: "security", weight: 1.0}
    boundaries:
      - {adr: "ADR-014", role: "IS3 ≠ Larastan #12/Semgrep #25; заменил Enlightn (abandoned/L13)"}
    chain_membership: ["L15"]
    attributes:
      tooling_section: "§4.45 #70"

  - id: "#71"
    name: "pdn-152fz-audit"
    slug: "pdn-152fz-audit"
    category: "off-phase"
    subcategory: "infosec-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "аудит пдн / соответствие 152-фз", weight: 1.0}
      - {keyword: "пдн", weight: 1.0}
      - {keyword: "персональные данные", weight: 1.0}
      - {keyword: "152-фз", weight: 1.0}
      - {keyword: "согласие на обработку", weight: 1.0}
      - {keyword: "телефон лида", weight: 1.0}
      - {keyword: "маскирование", weight: 1.0}
      - {keyword: "pd_subject_request", weight: 1.0}
      - {classification: "security", weight: 1.0}
    boundaries:
      - {adr: "ADR-014", role: "IS4 ≠ pg_anonymizer #29 (аудит vs инструмент маскирования); IS5 ≠ D2 (техника vs юридическое оформление)"}
    chain_membership: ["L15"]
    attributes:
      tooling_section: "§4.46 #71"

  - id: "#72"
    name: "threat-model"
    slug: "threat-model"
    category: "off-phase"
    subcategory: "infosec-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "stride угрозы портала", weight: 1.0}
      - {keyword: "going-public", weight: 1.0}
      - {keyword: "что защищать первым", weight: 1.0}
      - {keyword: "stride", weight: 1.0}
      - {keyword: "моделирование угроз", weight: 1.0}
      - {keyword: "attack surface", weight: 1.0}
      - {keyword: "точки входа", weight: 1.0}
      - {classification: "security", weight: 1.0}
    boundaries:
      - {adr: "ADR-014", role: "IS6 ≠ Trail of Bits #39 (портал+STRIDE+going-public vs generic deep code-audit)"}
    chain_membership: ["L15"]
    attributes:
      tooling_section: "§4.47 #72"

  - id: "#73"
    name: "security-go-live"
    slug: "security-go-live"
    category: "off-phase"
    subcategory: "infosec-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "прогон безопасности перед релизом", weight: 1.0}
      - {keyword: "go/no-go", weight: 1.0}
      - {keyword: "go-live", weight: 1.0}
      - {keyword: "выход в интернет", weight: 1.0}
      - {keyword: "публикация в прод", weight: 1.0}
      - {keyword: "security release gate", weight: 1.0}
      - {classification: "security", weight: 1.0}
    boundaries:
      - {adr: "ADR-014", role: "IS7 ≠ audit-portal (только безопасность + go-live-вердикт vs полный 14-фазный аудит)"}
    chain_membership: ["L15"]
    attributes:
      tooling_section: "§4.48 #73"

  - id: "#74"
    name: "marketing"
    slug: "marketing-plugin"
    category: "off-phase"
    subcategory: "marketing-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "маркетинговый контент", weight: 1.0}
      - {keyword: "кампания", weight: 1.0}
      - {keyword: "seo-аудит", weight: 1.0}
      - {keyword: "email-цепочка", weight: 1.0}
      - {keyword: "конкурент-бриф", weight: 1.0}
      - {keyword: "performance-report", weight: 1.0}
      - {keyword: "email-рассылка", weight: 1.0}
      - {keyword: "лендинг", weight: 1.0}
      - {keyword: "реклама", weight: 1.0}
      - {keyword: "лидген", weight: 1.0}
      - {keyword: "вебинар", weight: 1.0}
      - {classification: "marketing", weight: 1.0}
    boundaries:
      - {adr: "ADR-015", role: "MKT1 vs C2/C3; MKT2 vs product-management #42; MKT3 vs marketingskills #75 (решатель, не материал)"}
    chain_membership: ["L16"]
    attributes:
      tooling_section: "§4.49 #74"
      install: "claude plugin install marketing@knowledge-work-plugins"

  - id: "#75"
    name: "marketingskills"
    slug: "marketingskills"
    category: "off-phase"
    subcategory: "marketing-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "фреймворки cro", weight: 1.0}
      - {keyword: "копирайтинг", weight: 1.0}
      - {keyword: "programmatic-seo", weight: 1.0}
      - {keyword: "ad-creative", weight: 1.0}
      - {keyword: "cold-email", weight: 1.0}
      - {keyword: "lead-magnets", weight: 1.0}
      - {keyword: "pricing", weight: 1.0}
      - {keyword: "marketing-psychology", weight: 1.0}
      - {keyword: "маркетинговая фреймворк", weight: 1.0}
      - {keyword: "aida", weight: 1.0}
      - {keyword: "pas", weight: 1.0}
      - {keyword: "fab", weight: 1.0}
      - {keyword: "usp", weight: 1.0}
      - {classification: "marketing", weight: 1.0}
    boundaries:
      - {adr: "ADR-015", role: "MKT3 — материал/резерв-библиотека, не решатель; решатель = marketing #74"}
    chain_membership: []
    attributes:
      tooling_section: "§4.50 #75"

  - id: "#76"
    name: "brand-voice"
    slug: "brand-voice"
    category: "off-phase"
    subcategory: "marketing-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "тон бренда", weight: 1.0}
      - {keyword: "голос бренда", weight: 1.0}
      - {keyword: "brand guidelines для текстов", weight: 1.0}
      - {keyword: "тон копирайта", weight: 1.0}
      - {keyword: "voice", weight: 1.0}
      - {keyword: "тональность", weight: 1.0}
      - {keyword: "позиционирование", weight: 1.0}
      - {classification: "marketing", weight: 1.0}
    boundaries:
      - {adr: "ADR-015", role: "MKT6 — вербальный бренд vs Brandbook v2 визуальный бренд; взаимодополняют"}
    chain_membership: []
    attributes:
      tooling_section: "§4.51 #76"

  - id: "#77"
    name: "marketing-ru"
    slug: "marketing-ru"
    category: "off-phase"
    subcategory: "marketing-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "яндекс.директ", weight: 1.0}
      - {keyword: "яндекс.метрика", weight: 1.0}
      - {keyword: "vk", weight: 1.0}
      - {keyword: "telegram как каналы", weight: 1.0}
      - {keyword: "конверсия лендинга лидерры", weight: 1.0}
      - {keyword: "маркетинг 152-фз согласия на рассылки", weight: 1.0}
      - {keyword: "рф-канал", weight: 1.0}
      - {keyword: "вконтакте", weight: 1.0}
      - {keyword: "telegram-канал", weight: 1.0}
      - {keyword: "unisender", weight: 1.0}
      - {keyword: "российский рынок", weight: 1.0}
      - {classification: "marketing", weight: 1.0}
    boundaries:
      - {adr: "ADR-015", role: "MKT9 — 152-ФЗ cross-ref #71; закрывает РФ-специфику маркетинга"}
    chain_membership: ["L16"]
    attributes:
      tooling_section: "§4.52 #77"

  - id: "#78"
    name: "Яндекс.Метрика MCP"
    slug: "yandex-metrika-mcp"
    category: "off-phase"
    subcategory: "marketing-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "веб-аналитика лендинга", weight: 1.0}
      - {keyword: "визиты", weight: 1.0}
      - {keyword: "источники трафика", weight: 1.0}
      - {keyword: "гео", weight: 1.0}
      - {keyword: "демография", weight: 1.0}
      - {keyword: "поведение", weight: 1.0}
      - {keyword: "яндекс.метрика", weight: 1.0}
      - {keyword: "статистика посещений", weight: 1.0}
      - {classification: "marketing", weight: 1.0}
    boundaries:
      - {adr: "ADR-015", role: "MKT8 READ-ONLY; активация при живом лендинге (Б-1)"}
    chain_membership: ["L16"]
    attributes:
      tooling_section: "§4.53 #78"

  - id: "#79"
    name: "Яндекс.Директ+Wordstat MCP"
    slug: "yandex-wordstat-mcp"
    category: "off-phase"
    subcategory: "marketing-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "подбор ключевых слов wordstat", weight: 1.0}
      - {keyword: "частотность запросов рф", weight: 1.0}
      - {keyword: "ключевые слова", weight: 1.0}
      - {keyword: "wordstat", weight: 1.0}
      - {keyword: "поисковые запросы", weight: 1.0}
      - {classification: "marketing", weight: 1.0}
    boundaries:
      - {adr: "ADR-015", role: "MKT8 — Direct-мутации НЕ активированы; только Wordstat-модуль (5 read-only tools)"}
    chain_membership: ["L16"]
    attributes:
      tooling_section: "§4.54 #79"

  - id: "#80"
    name: "Telegram MCP"
    slug: "telegram-mcp"
    category: "off-phase"
    subcategory: "marketing-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "постинг в telegram-канал", weight: 1.0}
      - {keyword: "управление", weight: 1.0}
      - {keyword: "получение аналитики канала", weight: 1.0}
      - {keyword: "telegram", weight: 1.0}
      - {keyword: "telegram-бот", weight: 1.0}
      - {classification: "marketing", weight: 1.0}
    boundaries:
      - {adr: "ADR-015", role: "MKT8 — SESSION_STRING только .env; выделенный аккаунт"}
    chain_membership: ["L16"]
    attributes:
      tooling_section: "§4.55 #80"

  - id: "#81"
    name: "Postiz"
    slug: "postiz"
    category: "off-phase"
    subcategory: "marketing-tooling"
    status: "active"
    dormancy_reason: null
    triggers:
      - {keyword: "планирование и публикация в 30+ соцсетей включая vk и telegram", weight: 1.0}
      - {keyword: "контент-календарь", weight: 1.0}
      - {keyword: "smm-планировщик", weight: 1.0}
      - {keyword: "постинг в соцсети", weight: 1.0}
      - {keyword: "postiz", weight: 1.0}
      - {classification: "marketing", weight: 1.0}
    boundaries:
      - {adr: "ADR-015", role: "MKT7 AGPL self-host без дистрибуции; покрывает VK-постинг"}
    chain_membership: ["L16"]
    attributes:
      tooling_section: "§4.56 #81"

  - id: "#82"
    name: "DataForSEO MCP"
    slug: "dataforseo-mcp"
    category: "off-phase"
    subcategory: "marketing-tooling"
    status: "deferred"
    dormancy_reason: "post-Б-1: требует платного аккаунта DataForSEO"
    triggers:
      - {keyword: "serp-позиции", weight: 1.0}
      - {keyword: "ключевые слова", weight: 1.0}
      - {keyword: "бэклинки", weight: 1.0}
      - {keyword: "данные рф-выдачи", weight: 1.0}
    boundaries:
      - {adr: "ADR-015", role: "комплементарен Wordstat #79; даёт SERP + бэклинки + широкую аналитику"}
    chain_membership: []
    attributes:
      tooling_section: "§4.57 #82"

  - id: "#83"
    name: "Unisender Go MCP"
    slug: "unisender-go-mcp"
    category: "off-phase"
    subcategory: "marketing-tooling"
    status: "deferred"
    dormancy_reason: "нет готового upstream MCP; своя обёртка по потребности массовых рассылок"
    triggers:
      - {keyword: "массовые email-рассылки через unisender go api", weight: 1.0}
    boundaries:
      - {adr: "ADR-015", role: "MKT5 — транзакционный email (продуктовый код) vs маркетинговые рассылки; 152-ФЗ согласия cross-ref #77/#71"}
    chain_membership: []
    attributes:
      tooling_section: "§4.58 #83"

  - id: "#84"
    name: "normative-sync"
    slug: "normative-sync"
    category: "off-phase"
    subcategory: "project-agent"
    status: "active"
    dormancy_reason: null
    triggers:
      - {classification: "normative_sync_needed", weight: 1.0}
      - {keyword: "синкни нормативку", weight: 1.0}
      - {keyword: "нормативный синк", weight: 1.0}
      - {keyword: "закрыли задачу синк", weight: 0.9}
    boundaries:
      - {relation: "Контроллер обязан звать после закрытия крупной off-phase интеграции, brain governance артефакта, принятого ADR — Pravila §2.4"}
      - {pair: "#85", relation: "Парный project-агент — оба не входят в Tooling-канон счётчиков (#1-#83), это .claude/agents/ файлы"}
    chain_membership: []
    attributes:
      agent_file: ".claude/agents/normative-sync.md"
      spec: "docs/superpowers/specs/2026-05-24-controller-offload-agents-design.md §3"
      tooling_section: null

  - id: "#85"
    name: "prod-deploy-validator"
    slug: "prod-deploy-validator"
    category: "off-phase"
    subcategory: "project-agent"
    status: "active"
    dormancy_reason: null
    triggers:
      - {classification: "prod_deploy_imminent", weight: 1.0}
      - {keyword: "готовность боевого", weight: 1.0}
      - {keyword: "проверь прод", weight: 1.0}
      - {keyword: "ready to deploy", weight: 1.0}
    boundaries:
      - {relation: "Контроллер обязан звать перед любым выкатом на liderra.ru — Pravila §2.4. READ-ONLY по дизайну."}
      - {pair: "#84", relation: "Парный project-агент"}
    chain_membership: []
    attributes:
      agent_file: ".claude/agents/prod-deploy-validator.md"
      spec: "docs/superpowers/specs/2026-05-24-controller-offload-agents-design.md §4"
      tooling_section: null

chains:
  L1:
    name: "feature discovery & implementation chain"
    sequence:
      - "#55"
      - "superpowers:brainstorming"
      - "superpowers:writing-plans"
      - "superpowers:subagent-driven-development"
    triggers:
      - {classification: "feature"}
      - {classification: "planning"}

  L2:
    name: "system orientation chain"
    sequence:
      - "#55"
      - "audit-portal"

  L3:
    name: "as-is ↔ to-be process chain"
    sequence:
      - "#53"
      - "#52"

  L4:
    name: "diagram rendering chain"
    sequence:
      - "#36"
      - "#37"
      - "#51"
      - "#52"

  L5:
    name: "architecture triangle chain"
    sequence:
      - "#36"
      - "#38"
      - "#43"

  L6:
    name: "security layered chain"
    sequence:
      - "#40"
      - "#25"
      - "#39"
      - "/security-review"

  L7:
    name: "integration development chain"
    sequence:
      - "#47"
      - "api-docs"
      - "#10"

  L8:
    name: "runtime debug chain"
    sequence:
      - "superpowers:systematic-debugging"
      - "#34"
      - "#35"
    triggers:
      - {classification: "bugfix"}
      - {keyword: "runtime bug"}

  L9:
    name: "project management chain"
    sequence:
      - "#41"
      - "#42"
      - "#3"

  L10:
    name: "LLM feature chain"
    sequence:
      - "#48"
      - "#49"
      - "claude-api"

  L11:
    name: "Claude infra extension chain"
    sequence:
      - "#56"
      - "#58"
      - "#57"

  L12:
    name: "CLAUDE.md capture chain"
    sequence:
      - "#33"
      - "claude-md-management:revise-claude-md"

  L13:
    name: "finance chain"
    sequence:
      - "#62"
      - "#18"
      - "#10"
      - "#34"
      - "#35"
      - "#63"

  L14:
    name: "backend-quality chain"
    sequence:
      - "#64"
      - "#65"
      - "#12"
      - "#43"

  L15:
    name: "security go-live chain"
    sequence:
      - "#73"
      - "#8"
      - "#25"
      - "#70"
      - "#39"
      - "#71"
      - "#72"
      - "#69"
      - "#68"

  L16:
    name: "marketing chain"
    sequence:
      - "superpowers:brainstorming"
      - "#74"
      - "#77"
      - "#78"
      - "#79"
      - "#80"
      - "#81"
