feat(registry): +16 chains L1-L16 + chain_membership на 83 узлах (task 9)

Заменил pilot chains (L1 brainstorming-skill / L8 TDD-skill) на полные
16 цепочек из routing-off-phase.md §4 v1.6:
  L1 feature discovery & implementation
  L2 system orientation
  L3 as-is ↔ to-be process
  L4 diagram rendering
  L5 architecture triangle
  L6 security layered
  L7 integration development
  L8 runtime debug (Sentry+Redis+systematic-debug)
  L9 project management
  L10 LLM feature
  L11 Claude infra extension
  L12 CLAUDE.md capture
  L13 finance chain
  L14 backend-quality chain
  L15 security go-live chain
  L16 marketing chain

chain_membership обновлён на каждом участвующем узле (sorted).
Pilot L1/L8 переопределены под routing-off-phase: #19 Superpowers
больше не в L1/L8; #18 Pest перенесён в L13.

Task 9 закрывает Phase B плана (Task 8+9). Task 10 - render check.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-05-23 16:21:00 +03:00
parent 9d00371c05
commit cede06c768
2 changed files with 167 additions and 53 deletions
+164 -51
View File
@@ -30,7 +30,7 @@ nodes:
- {keyword: "commits", weight: 1.0}
- {keyword: "открытые вопросы", weight: 1.0}
boundaries: []
chain_membership: []
chain_membership: ["L9"]
attributes:
tooling_section: "§2.4 #3"
@@ -110,7 +110,7 @@ nodes:
- {keyword: "секреты в diff", weight: 1.0}
- {keyword: "pre-commit hook", weight: 1.0}
boundaries: []
chain_membership: []
chain_membership: ["L15"]
attributes:
tooling_section: "§2.4 #8"
@@ -145,7 +145,7 @@ nodes:
- {keyword: "roster auto-detect", weight: 1.0}
boundaries:
- {pair: "#1", relation: "replaces"}
chain_membership: []
chain_membership: ["L7", "L13"]
attributes:
tooling_section: "§3.5 #10"
install: "composer require laravel/boost --dev"
@@ -177,7 +177,7 @@ nodes:
- {keyword: "статанализ php", weight: 1.0}
- {keyword: "типы", weight: 1.0}
boundaries: []
chain_membership: []
chain_membership: ["L14"]
attributes:
tooling_section: "§3.5 #12"
install: "composer stan"
@@ -274,7 +274,7 @@ nodes:
boundaries:
- {adr: "ADR-011", role: "hard-floor source"}
- {pair: "#30", relation: "paired stack"}
chain_membership: ["L1", "L8"]
chain_membership: []
attributes:
tooling_section: "§3.3 #19"
install: "marketplace plugin, enabled in ~/.claude/settings.json"
@@ -292,7 +292,7 @@ nodes:
- {keyword: "тест", weight: 1.0}
- {file_pattern: "tests/**/*.php", weight: 1.0}
boundaries: []
chain_membership: ["L8"]
chain_membership: ["L13"]
attributes:
tooling_section: "§3.2 #18"
install: "composer require pestphp/pest --dev"
@@ -402,7 +402,7 @@ nodes:
- {keyword: "security static analysis", weight: 1.0}
boundaries:
- {relation: "связка binary+mcp"}
chain_membership: []
chain_membership: ["L6", "L15"]
attributes:
tooling_section: "§5.1 #25"
install: "npm run sast"
@@ -531,7 +531,7 @@ nodes:
- {keyword: "обязательный канал", weight: 1.0}
boundaries:
- {relation: "CLAUDE.md §5 п.10 + PSR_v1 R10.1"}
chain_membership: []
chain_membership: ["L12"]
attributes:
tooling_section: "§4.7 #33"
install: "enabledPlugins.claude-md-management@claude-plugins-official в ~/.claude/settings.json"
@@ -546,7 +546,7 @@ nodes:
triggers:
- {keyword: "отладка production runtime errors", weight: 1.0}
boundaries: []
chain_membership: []
chain_membership: ["L8", "L13"]
attributes:
tooling_section: "§4.8 #34"
@@ -563,7 +563,7 @@ nodes:
- {keyword: "pest-race", weight: 1.0}
boundaries:
- {relation: "read-only"}
chain_membership: []
chain_membership: ["L8", "L13"]
attributes:
tooling_section: "§4.9 #35"
@@ -580,7 +580,7 @@ nodes:
- {keyword: "enforcement", weight: 1.0}
boundaries:
- {relation: "adr-judge lefthook job 9"}
chain_membership: []
chain_membership: ["L4", "L5"]
attributes:
tooling_section: "§4.11 #36"
install: "claude plugin install adr-kit@rvdbreemen-adr-kit"
@@ -596,7 +596,7 @@ nodes:
- {keyword: "c4", weight: 1.0}
- {keyword: "architecture-диаграммы", weight: 1.0}
boundaries: []
chain_membership: []
chain_membership: ["L4"]
attributes:
tooling_section: "§4.12 #37"
install: "vendored в .claude/skills/mermaid/"
@@ -611,7 +611,7 @@ nodes:
triggers:
- {keyword: "справочник архитектурных паттернов", weight: 1.0}
boundaries: []
chain_membership: []
chain_membership: ["L5"]
attributes:
tooling_section: "§4.13 #38"
install: "claude plugin install architecture-patterns@claude-skills"
@@ -628,7 +628,7 @@ nodes:
- {keyword: "diff", weight: 1.0}
- {keyword: "supply-chain", weight: 1.0}
boundaries: []
chain_membership: []
chain_membership: ["L6", "L15"]
attributes:
tooling_section: "§4.14 #39"
install: "enabledPlugins subsets из trailofbits/skills"
@@ -644,7 +644,7 @@ nodes:
- {keyword: "inline-блокировка уязвимых паттернов", weight: 1.0}
boundaries:
- {relation: "блокирующий PreToolUse (sys.exit 2)"}
chain_membership: []
chain_membership: ["L6"]
attributes:
tooling_section: "§4.15 #40"
install: "claude plugin install security-guidance@claude-plugins-official"
@@ -660,7 +660,7 @@ nodes:
- {keyword: "prd эпик issue код", weight: 1.0}
- {keyword: "dev-проекты", weight: 1.0}
boundaries: []
chain_membership: []
chain_membership: ["L9"]
attributes:
tooling_section: "§4.16 #41"
install: "vendored в .claude/skills/ccpm/"
@@ -678,7 +678,7 @@ nodes:
- {keyword: "метрики", weight: 1.0}
- {keyword: "продуктовые церемонии", weight: 1.0}
boundaries: []
chain_membership: []
chain_membership: ["L9"]
attributes:
tooling_section: "§4.17 #42"
install: "claude plugin install product-management@knowledge-work-plugins"
@@ -695,7 +695,7 @@ nodes:
- {keyword: "границы слоёв", weight: 1.0}
boundaries:
- {relation: "lefthook job 10"}
chain_membership: []
chain_membership: ["L5", "L14"]
attributes:
tooling_section: "§4.18 #43"
install: "composer require --dev deptrac/deptrac"
@@ -759,7 +759,7 @@ nodes:
- {keyword: "introspection openapi/rest-спек", weight: 1.0}
boundaries:
- {relation: "read-only"}
chain_membership: []
chain_membership: ["L7"]
attributes:
tooling_section: "§4.22 #47"
install: "npm install @ivotoby/openapi-mcp-server (в .mcp.json)"
@@ -776,7 +776,7 @@ nodes:
- {keyword: "eval", weight: 1.0}
boundaries:
- {relation: "только вручную/CI, никогда в хук"}
chain_membership: []
chain_membership: ["L10"]
attributes:
tooling_section: "§4.23 #48"
install: "npm install --save-dev promptfoo"
@@ -791,7 +791,7 @@ nodes:
triggers:
- {keyword: "классический ml-воркфлоу", weight: 1.0}
boundaries: []
chain_membership: []
chain_membership: ["L10"]
attributes:
tooling_section: "§4.24 #49"
install: "vendored в .claude/skills/data-scientist/"
@@ -820,7 +820,7 @@ nodes:
triggers:
- {keyword: "документирование/оптимизация бизнес-процессов", weight: 1.0}
boundaries: []
chain_membership: []
chain_membership: ["L4"]
attributes:
tooling_section: "§4.26 #51"
install: "claude plugin install operations@knowledge-work-plugins"
@@ -837,7 +837,7 @@ nodes:
- {keyword: "bpmn 2.0", weight: 1.0}
boundaries:
- {relation: "self-authored project skill"}
chain_membership: []
chain_membership: ["L3", "L4"]
attributes:
tooling_section: "§4.27 #52"
@@ -853,7 +853,7 @@ nodes:
- {keyword: "discovery из кода", weight: 1.0}
boundaries:
- {relation: "self-authored project skill; ADR-009 граница с #55"}
chain_membership: []
chain_membership: ["L3"]
attributes:
tooling_section: "§4.28 #53"
@@ -884,7 +884,7 @@ nodes:
- {keyword: "feature system режим", weight: 1.0}
boundaries:
- {adr: "ADR-009", role: "граница с #53 process-analysis: discovery-interview = интервью человека; process-analysis = discovery из кода"}
chain_membership: []
chain_membership: ["L1", "L2"]
attributes:
tooling_section: "§4.30 #55"
@@ -899,7 +899,7 @@ nodes:
- {keyword: "создание standalone-скилов", weight: 1.0}
- {keyword: "eval", weight: 1.0}
boundaries: []
chain_membership: []
chain_membership: ["L11"]
attributes:
tooling_section: "§4.31 #56"
@@ -913,7 +913,7 @@ nodes:
triggers:
- {keyword: "разработка claude-плагинов", weight: 1.0}
boundaries: []
chain_membership: []
chain_membership: ["L11"]
attributes:
tooling_section: "§4.32 #57"
@@ -928,7 +928,7 @@ nodes:
- {keyword: "генерация хуков (только по явному /hookify)", weight: 1.0}
boundaries:
- {adr: "ADR-010", role: "HK1 pre-check коллизии с существующими хуками перед генерацией"}
chain_membership: []
chain_membership: ["L11"]
attributes:
tooling_section: "§4.33 #58"
@@ -996,7 +996,7 @@ nodes:
- {keyword: "дрейф reconcile", weight: 1.0}
boundaries:
- {adr: "ADR-012", role: "граница с process-*/D3/ru-tax; аудит кода биллинга, не налогов и не процесса"}
chain_membership: []
chain_membership: ["L13"]
attributes:
tooling_section: "§4.37 #62"
@@ -1015,7 +1015,7 @@ nodes:
- {keyword: "выгрузка бухгалтеру", weight: 1.0}
boundaries:
- {adr: "ADR-012", role: "закрывает РФ-gap US-GAAP-плагина #61; ≠ billing-audit #62 (корректность кода), ≠ D1/D2"}
chain_membership: []
chain_membership: ["L13"]
attributes:
tooling_section: "§4.38 #63"
@@ -1032,7 +1032,7 @@ nodes:
- {keyword: "удаление мёртвого кода", weight: 1.0}
boundaries:
- {adr: "ADR-013", role: "BT1 vs Pint (трансформация vs форматирование); BT2 vs Larastan (комплементарны); BT3 vs deptrac"}
chain_membership: []
chain_membership: ["L14"]
attributes:
tooling_section: "§4.39 #64"
install: "composer require rector/rector --dev"
@@ -1048,7 +1048,7 @@ nodes:
- {keyword: "метрики качества/сложности/архитектуры php-кода", weight: 1.0}
boundaries:
- {adr: "ADR-013", role: "BT4 vs Pint/Larastan; уникум — оси complexity + architecture"}
chain_membership: []
chain_membership: ["L14"]
attributes:
tooling_section: "§4.40 #65"
install: "composer require nunomaduro/phpinsights --dev"
@@ -1100,7 +1100,7 @@ nodes:
- {keyword: "xss", weight: 1.0}
boundaries:
- {adr: "ADR-014", role: "IS1 ≠ Semgrep #25 (динамика vs статика); IS2 ≠ Nuclei #69 (глубина vs широта)"}
chain_membership: []
chain_membership: ["L15"]
attributes:
tooling_section: "§4.43 #68"
@@ -1115,7 +1115,7 @@ nodes:
- {keyword: "известные уязвимости/экспозиция/слабый tls снаружи", weight: 1.0}
boundaries:
- {adr: "ADR-014", role: "IS2 ≠ ZAP #68 (широта vs глубина — комплементарны)"}
chain_membership: []
chain_membership: ["L15"]
attributes:
tooling_section: "§4.44 #69"
@@ -1131,7 +1131,7 @@ nodes:
- {keyword: ".env/config/заголовки/cookie/secrets/deps", weight: 1.0}
boundaries:
- {adr: "ADR-014", role: "IS3 ≠ Larastan #12/Semgrep #25; заменил Enlightn (abandoned/L13)"}
chain_membership: []
chain_membership: ["L15"]
attributes:
tooling_section: "§4.45 #70"
@@ -1146,7 +1146,7 @@ nodes:
- {keyword: "аудит пдн / соответствие 152-фз", weight: 1.0}
boundaries:
- {adr: "ADR-014", role: "IS4 ≠ pg_anonymizer #29 (аудит vs инструмент маскирования); IS5 ≠ D2 (техника vs юридическое оформление)"}
chain_membership: []
chain_membership: ["L15"]
attributes:
tooling_section: "§4.46 #71"
@@ -1163,7 +1163,7 @@ nodes:
- {keyword: "что защищать первым", weight: 1.0}
boundaries:
- {adr: "ADR-014", role: "IS6 ≠ Trail of Bits #39 (портал+STRIDE+going-public vs generic deep code-audit)"}
chain_membership: []
chain_membership: ["L15"]
attributes:
tooling_section: "§4.47 #72"
@@ -1179,7 +1179,7 @@ nodes:
- {keyword: "go/no-go", weight: 1.0}
boundaries:
- {adr: "ADR-014", role: "IS7 ≠ audit-portal (только безопасность + go-live-вердикт vs полный 14-фазный аудит)"}
chain_membership: []
chain_membership: ["L15"]
attributes:
tooling_section: "§4.48 #73"
@@ -1199,7 +1199,7 @@ nodes:
- {keyword: "performance-report", weight: 1.0}
boundaries:
- {adr: "ADR-015", role: "MKT1 vs C2/C3; MKT2 vs product-management #42; MKT3 vs marketingskills #75 (решатель, не материал)"}
chain_membership: []
chain_membership: ["L16"]
attributes:
tooling_section: "§4.49 #74"
install: "claude plugin install marketing@knowledge-work-plugins"
@@ -1260,7 +1260,7 @@ nodes:
- {keyword: "маркетинг 152-фз согласия на рассылки", weight: 1.0}
boundaries:
- {adr: "ADR-015", role: "MKT9 — 152-ФЗ cross-ref #71; закрывает РФ-специфику маркетинга"}
chain_membership: []
chain_membership: ["L16"]
attributes:
tooling_section: "§4.52 #77"
@@ -1280,7 +1280,7 @@ nodes:
- {keyword: "поведение", weight: 1.0}
boundaries:
- {adr: "ADR-015", role: "MKT8 READ-ONLY; активация при живом лендинге (Б-1)"}
chain_membership: []
chain_membership: ["L16"]
attributes:
tooling_section: "§4.53 #78"
@@ -1296,7 +1296,7 @@ nodes:
- {keyword: "частотность запросов рф", weight: 1.0}
boundaries:
- {adr: "ADR-015", role: "MKT8 — Direct-мутации НЕ активированы; только Wordstat-модуль (5 read-only tools)"}
chain_membership: []
chain_membership: ["L16"]
attributes:
tooling_section: "§4.54 #79"
@@ -1313,7 +1313,7 @@ nodes:
- {keyword: "получение аналитики канала", weight: 1.0}
boundaries:
- {adr: "ADR-015", role: "MKT8 — SESSION_STRING только .env; выделенный аккаунт"}
chain_membership: []
chain_membership: ["L16"]
attributes:
tooling_section: "§4.55 #80"
@@ -1329,7 +1329,7 @@ nodes:
- {keyword: "контент-календарь", weight: 1.0}
boundaries:
- {adr: "ADR-015", role: "MKT7 AGPL self-host без дистрибуции; покрывает VK-постинг"}
chain_membership: []
chain_membership: ["L16"]
attributes:
tooling_section: "§4.56 #81"
@@ -1368,20 +1368,133 @@ nodes:
chains:
L1:
name: "Brainstorming chain"
name: "feature discovery & implementation chain"
sequence:
- "#55"
- "superpowers:brainstorming"
- "superpowers:writing-plans"
- "superpowers:executing-plans"
- "superpowers:subagent-driven-development"
triggers:
- {classification: "feature"}
- {classification: "planning"}
L8:
name: "TDD chain"
L2:
name: "system orientation chain"
sequence:
- "superpowers:test-driven-development"
- "#18"
- "#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: "tdd"}
- {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"
+3 -2
View File
@@ -56,8 +56,9 @@ describe('registry-load', () => {
it('findChainsByNode returns chain membership', () => {
const r = loadRegistry();
const tddChains = findChainsByNode(r, 'superpowers:test-driven-development');
expect(tddChains.map(c => c.chainId)).toContain('L8');
// L8 = runtime debug chain: systematic-debugging + Sentry (#34) + Redis (#35)
const sentryChains = findChainsByNode(r, '#34');
expect(sentryChains.map(c => c.chainId)).toContain('L8');
});
it('caches across calls in same process', () => {