a299377fd7
#22 ESLint: «лит js/vue» (опечатка из Tooling §4.2:410) → «lint js/vue». #30 Frontend Design: «ui: компоненты» (двоеточие из Tooling §4.4:444 списка «UI: компоненты, паттерны...») → «ui компоненты» (split-by-comma выдавал keyword с разделителем темы; keyword был мертворождённый). Tooling §4.2/§4.4 будут починены при следующем auto-rerender (Task 10). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
589 lines
15 KiB
YAML
589 lines
15 KiB
YAML
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: []
|
|
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: []
|
|
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: []
|
|
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}
|
|
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}
|
|
boundaries: []
|
|
chain_membership: []
|
|
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: ["L1", "L8"]
|
|
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: ["L8"]
|
|
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}
|
|
boundaries:
|
|
- {relation: "связка binary+mcp"}
|
|
chain_membership: []
|
|
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: []
|
|
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}
|
|
boundaries: []
|
|
chain_membership: []
|
|
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}
|
|
boundaries:
|
|
- {relation: "read-only"}
|
|
chain_membership: []
|
|
attributes:
|
|
tooling_section: "§4.9 #35"
|
|
|
|
chains:
|
|
L1:
|
|
name: "Brainstorming chain"
|
|
sequence:
|
|
- "superpowers:brainstorming"
|
|
- "superpowers:writing-plans"
|
|
- "superpowers:executing-plans"
|
|
triggers:
|
|
- {classification: "feature"}
|
|
- {classification: "planning"}
|
|
|
|
L8:
|
|
name: "TDD chain"
|
|
sequence:
|
|
- "superpowers:test-driven-development"
|
|
- "#18"
|
|
triggers:
|
|
- {classification: "bugfix"}
|
|
- {keyword: "tdd"}
|