24 Commits

Author SHA1 Message Date
Дмитрий 8d08ef3684 docs(brain-routing): bump v1.1 → v1.2 with Phase 1 entries; chore brain-version v1.2 → v1.3
Routing.md v1.2 финализирует brain v1.3 release.

Changes в routing.md:
- §2.1 +1 row context7 (active-in-brain via target=user-level+consumer)
- §3.1 +1 row «Документация API/SDK/marketplace» → context7 default, WebFetch fallback
- §3.2 +1 tie-breaker #4 (community-managed rule — Context7/telegram precedent)
- §4.2 +5 rows status updates (context7 installed, 4 others registered)
- История версий +1 entry v1.2 от 2026-05-11

manifest.json:version bumped brain-v1.2 → brain-v1.3.
.brain-version bumped с sha=spec-doc-commit (3509260 full SHA, per brain pattern
"foundational commit of release cycle").

Это финальный commit Phase 1B. После commit'а — git tag brain-v1.3 + invoke
superpowers:verification-before-completion перед claim 'готов'.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 15:42:57 +03:00
Дмитрий b639ae9821 feat(brain-plugins): register and activate context7 user-level+consumer
Phase 1 deliverable: Context7 (Upstash MCP server для docs lookup) активирован
в brain runtime + распространяется в consumer через target=user-level+consumer.

Plugin несёт bundled .mcp.json (npx -y @upstash/context7-mcp) — auto-register'ится
как MCP-сервер при enabledPlugins.context7=true.

Side-effect (filesystem, не git-tracked):
  cp -r ~/.claude/plugins/marketplaces/claude-plugins-official/external_plugins/context7/.
        ~/.claude/plugins/cache/claude-plugins-official/context7/00679aef889e/

installMethod=manual-cp-from-marketplace-Path2 (Path 2 manual install per Phase 0).

Pre-flight verified:
- npx 11.12.1 available (/c/Program Files/nodejs/npx)
- Runtime smoke: npx -y @upstash/context7-mcp --help → help text displayed,
  exit 0 (server can start; transport stdio default, optional --api-key или
  CONTEXT7_API_KEY env var для auth)

Conflicts addressed:
- C5: Context7 vs WebFetch — routing.md §3.1 +1 row (Task 4 финализирует) делает
  Context7 default для API/SDK docs, WebFetch fallback
- C6: npx runtime — verified выше
- C8: MCP coexistence с magic (21st.dev) — отдельные keys в mcpServers, structurally OK
- C9: community-managed (Upstash) — disclaimer в spec §9.3 + routing.md §3.2
  tie-breaker #4 (Task 4 add'ит)

manifest.json brain-internal sha256 updated:
- plugins-manifest.json: d88008b2... → 05abd904...
- settings-fragment.json: 1af1b05e... → f9cf40f2...

Filter regression: 9 user (+context7), 7 consumer (+context7) — context7 в обоих
filter'ах правильно через target=user-level+consumer.

T3 implementer subagent был cut off mid-execution (после plugins-manifest edit,
до settings-fragment + manifest sync). Direct controller execution завершил
remaining steps: cache cp (re-run, был empty), settings-fragment enabledPlugins
edit, sha256 sync, verify + smoke.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 15:33:02 +03:00
Дмитрий 8b956e08b9 fix(brain-plugins): correct lastUpdated date for 4 T2 entries (was future-dated)
Code-quality review T2 (commit 6425725) flagged I2: `lastUpdated`
"2026-05-12T00:00:00.000Z" was future-dated. Actual T2 commit was on
2026-05-11 (commit timestamp Mon May 11 15:17:53 2026 +0300). Plan
filename used 2026-05-12 prefix (plan date), и это leaked в данные.

Fix: 4 entries (code-review, security-guidance, pr-review-toolkit, telegram)
lastUpdated → "2026-05-11T12:18:00.000Z" (близко к actual T2 commit time).

manifest.json brain-internal sha for plugins-manifest.json updated:
  a3390463... → d88008b2...

I1 (`scope: "user"` vs `target: "consumer"` semantic concern) — НЕ исправляется
этим commit'ом. Reasoning: brain's install-plugins.sh не читает `scope` field
(только filter по `target`). `claude plugin install` CLI принимает scope
через flag, не из manifest. Значение `scope: "user"` для registered-only
entries = documentation-intent "destination user-level when installed on
consumer's machine" — consistent с pattern существующих 8 entries (все
scope: "user"). Reviewer's concern valid as readability, не functional bug.
Документация semantics будет в routing.md v1.2 (Task 4).

verify.sh exit 0 после fix; filter regression unchanged (8 user, 6 consumer).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 15:27:15 +03:00
Дмитрий 6425725f18 feat(brain-plugins): register 4 consumer-universal plugins (code-review, security-guidance, pr-review-toolkit, telegram)
Phase 1 deliverable: добавлены entries для distribute в consumer (Liderra и
будущие) через scripts/install.sh --target=<consumer> --with-plugins=yes.

В brain runtime НЕ активируются (target=consumer; filter в install-plugins.sh
отсекает при --install-target=user). enabledPlugins в settings-fragment.json
не трогается.

installMethod=registered-only-not-cached — physical cache cp не делается
brain-side; consumer install через 'claude plugin install <name>@marketplace'
(или JSON fallback) кэширует на consumer-машине.

Marketplace HEAD SHA pinned: 00679aef889e (Phase 0 install reference).

Conflicts:
- code-review vs superpowers:requesting-code-review — не активирован в brain,
  default остаётся superpowers (routing.md §3.1 line 69)
- security-guidance bundled hooks.json — не активирован, потенциальный конфликт
  с brain economy-hooks при будущей активации
- pr-review-toolkit vs superpowers code-reviewer — в brain не активны, в consumer
  адресуется PSR template
- telegram — brain не нуждается в notifications

manifest.json brain-internal sha256 updated для plugins-manifest.json:
- было c63715a5... (после fix(brain-verify) da20aa4)
- стало a3390463... (после T2 +4 entries)

Verification: scripts/verify.sh exit 0; filter regression user=8, consumer=6
(2 existing user-level+consumer + 4 new consumer-only).

T2 implementer subagent attempt была cut off mid-work (manifest sha sync
дрейфил из-за CRLF/autocrlf на Windows). Recovery direct execution + fix
commit da20aa4 закрыл pre-existing CRLF drift до этого T2 коммита.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 15:18:44 +03:00
Дмитрий da20aa4216 fix(brain-verify): repair stale sha for CRLF-affected files (pre-existing v1.0 bug)
`scripts/verify.sh` fail'ил с exit 2 на `user-level-files/plugins-manifest.json`
и `user-level-files/settings-fragment.json` — фактический SHA256 working-tree
файлов отличался от записанного в `manifest.json:files.brain-internal`.

Root cause: `core.autocrlf=true` (Windows) конвертит LF→CRLF на checkout
для JSON-файлов в `user-level-files/`. Manifest.json содержал LF-version
sha256, working tree имел CRLF-version с другим sha. Pre-existing bug —
ничего из текущей сессии не было его причиной (был задокументирован как
nice-to-have outstanding из brain v1.0: добавить `.gitattributes` с
`* text=auto eol=lf` для стабильности CRLF).

Mitigation в этом commit: обновлены sha до CURRENT working-tree state
(CRLF version) — verify.sh passes на этой Windows-машине. Платформо-
зависимо: если клонировать на Linux/macOS с autocrlf=false, бы получались
LF файлы с разным sha. Полный фикс через `.gitattributes` остаётся
отдельным outstanding item'ом.

Изменения:
- manifest.json:51 plugins-manifest.json sha:
    1374cf8f... → c63715a5...
- manifest.json:52 settings-fragment.json sha:
    cbdda1e2... → 1af1b05e...

Other 21 brain-internal files: sha matches (либо LF-stable, либо не
конвертировался autocrlf'ом).

Discovered during T2 implementer execution (Phase 1B); pre-T2 state
already had this drift, only became visible when verify.sh was run.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 15:17:53 +03:00
Дмитрий ccad7e7b29 fix(brain-install): remove dead-branch mapping; add catch-all to filter case
Two code-quality fixes after review of dc71e23 (Task 1):

I1 — Dead-branch logic in install.sh:
The plugin-install block sits inside the `elif [ "$mode" = "user" ]` branch,
so `[ "$mode" = "project" ] && plugin_target="consumer"` is unreachable
(`$mode` is always "user" here). Replaced with hardcoded `--install-target=user`
plus clarifying comment about future consumer-mode wiring.

I2 — Filter case missing catch-all in install-plugins.sh:
The two `case "$install_target"` blocks (validation at lines 40-43, filter at
lines 75-82) were physically separate. If a future enum value is added to
validation without updating filter, $filter would be unset → set -u crash.
Added explicit `*)` catch-all with log_error + exit 1.

Plan §Task 1 Step 1.7 contained the same I1 bug as dc71e23 — implementer
followed plan faithfully. This fix corrects the code; plan stays as historical
record. Future plans referencing this pattern should match THIS fix, not the
original plan text.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 15:07:29 +03:00
Дмитрий dc71e2338e refactor(brain-install): filter plugins by target ENUM in install-plugins.sh
Closes тех-долг из routing.md v1.1 §4.1 — install-plugins.sh теперь
фильтрует entries по полю `target` относительно режима install'а.

Added флаг `--install-target=user|consumer` (required, с fallback на 'user'
+ warning для backwards-compat прямых вызовов из тестов). Filter jq-выражение:

  user:     target ∈ {"user-level", "user-level+consumer"}
  consumer: target ∈ {"consumer", "user-level+consumer"}

scripts/install.sh теперь передаёт --install-target автоматически на основе
detected $mode (user|project). Regression: текущие 8 entries → 8 plugins при
--install-target=user, 2 plugins (FD + UPM, target=user-level+consumer) при
--install-target=consumer.

Подготовка под Phase 1: добавление 4 consumer-only entries (target=consumer)
и 1 user-level+consumer entry (context7) в plugins-manifest.json — filter
обеспечит, что в brain user-level попадут только нужные.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 15:00:39 +03:00
Дмитрий 350926057d feat(brain-spec): Phase 1 design (consumer-universal plugins + context7 activation)
Design doc для brain v1.2 → v1.3 release. Phase 1 после Phase 0 meta-foundation.

Scope: 5 plugin'ов из shortlist consumer-universal — code-review, security-guidance,
pr-review-toolkit, telegram (target=consumer, registered-only), и context7 (target=
user-level+consumer, активен в brain как docs API/SDK lookup). Plus tech-debt close:
install-plugins.sh learns --install-target ENUM filter (per routing.md v1.1 §4.1).

Out of scope: Liderra deploy (blocked outstanding v1.0), Phase 2 stack-gated, custom
skills, Pravila v2 bump.

Spec covers: architecture/data-flow (§3), per-file deliverables (§4), 10 conflicts
mitigation (§5), per-artifact verification (§6), runtime deps checks (§7), 5 atomic
commits sequence + rollback (§8), open risks (§9), self-review (§10).

Spec self-review passed: no TBD/TODO/FIXME, only intentional <utc-at-commit-time>
and <commit-5-sha> placeholders. Internal consistency §2 ↔ §4 ↔ §8 verified.
Cross-refs resolve correctly from docs/superpowers/specs/ base.

Next: invoke superpowers:writing-plans для детального plan'а Phase 1B (commits 2-5).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 14:49:29 +03:00
Дмитрий 276a47f466 chore(brain-version): bump v1.1 → v1.2 (plugin-dev + hookify installed)
Atomic bump. Brain-meta plugins #17 plugin-dev and #18 hookify now
installed, registered in routing.md v1.1, snapshotted in manifest +
settings-fragment. Brain-specific must-add shortlist closed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 14:17:30 +03:00
Дмитрий d5172b7a64 feat(brain-plugins): install hookify as meta plugin
Anthropic-verified plugin from claude-plugins-official marketplace (HEAD
00679aef889e). Installed in cache via cp from marketplace. Routing.md
+§2.1 row, +§3.1 row for «hook creation» task class, +§4.2 status update
for #18.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 14:16:28 +03:00
Дмитрий 19a1e94f15 feat(brain-plugins): install plugin-dev as meta plugin
Anthropic-verified plugin from claude-plugins-official marketplace (HEAD
00679aef889e). Installed in cache via cp from marketplace (Path 2,
manual-cp-from-marketplace). Routing.md bumped to v1.1: +§2.1 row, +§3.1
row for «plugin creation» task class, +§4.2 status update for #17.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 14:12:59 +03:00
Дмитрий 179101d772 docs(brain-plugin-routing): plan for install plugin-dev + hookify (v1.2)
4 atomic tasks (3 commits + 1 verification+push) for installing brain-meta
plugins #17 and #18 per routing.md §5.1, bumping brain to v1.2 with
routing.md v1.1 (new task classes: plugin creation, hook creation).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 14:04:28 +03:00
Дмитрий 7c90285cc9 chore(brain-version): bump v1.0 → v1.1 (plugin routing)
Atomic bump per D11. Brain-plugin-routing v1.0 released. Also closes
missing .brain-version artifact from v1.0 bootstrap. Updates CHANGELOG,
manifest.json version field, and CLAUDE.md version header.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 13:50:49 +03:00
Дмитрий 31ca0457a9 feat(brain-plugins): enable skill-creator + claude-code-setup in settings-fragment
Close Phase 0 install drift (К3) — brain settings-fragment now reflects
the actual state of ~/.claude/settings.json after Phase 0.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 13:48:45 +03:00
Дмитрий 78bb79eb45 feat(brain-plugins): add target field + register Phase 0 plugins in manifest
Implements D9 ENUM (user-level/consumer/user-level+consumer) and closes
Phase 0 install drift (К3) by registering skill-creator and claude-code-setup
in brain manifest. Also tags each entry with category from routing.md §4.1.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 13:48:03 +03:00
Дмитрий 96b1557fe8 docs(brain): link CLAUDE.md to brain-plugin-routing v1.0
Add short section pointing to new routing document and disabled-in-brain
soft-rule for FD/UPM.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 13:46:24 +03:00
Дмитрий a741532d1e feat(brain-plugin-routing): create routing rules v1.0
Normative document for plugin selection in brain repo. Implements design
spec dbd80e9. Covers reestr, disabled-in-brain soft-rule, routing table,
categorization, install checklist, and update procedure.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 13:45:34 +03:00
Дмитрий 22eb6abf05 docs(brain-plugin-routing): implementation plan
6 atomic tasks (5 commits + 1 verification) for implementing brain-plugin-routing.md
v1.0 per design spec dbd80e9.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 13:42:58 +03:00
Дмитрий dbd80e9715 docs(brain-plugin-routing): design spec for plugin selection rules
Brainstorming output for resolving 8 sources of ambiguity (К1-К8) when
selecting a plugin while working inside brain repo. Approach A chosen
(separate docs/brain-plugin-routing.md ~275 lines). Decisions D1-D12
locked. Implementation deferred to writing-plans skill.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 13:39:50 +03:00
Дмитрий b58f29d23c docs(brain-v2): Phase 0 meta-foundation analysis
Foundation step for brain v2 — establish canonical structure for skills
and rules. Adds two new meta-plugins to brain stack:
- skill-creator@claude-plugins-official (Anthropic verified)
- claude-code-setup@claude-plugins-official (Anthropic verified)

Phase 0 deliverables:
- preliminary.md: frontmatter conventions diff (Anthropic vs Obra),
  brain v1 inventory (0 custom skills, 17 inherited from 4 plugins),
  initial canonical decision before install
- final.md: post-install findings, divergences from preliminary,
  recommender output (manually applied on brain repo only — Liderra
  scope excluded per user instruction), audit of 17 inherited skills

Key findings:
- Anthropic skill-creator and Obra writing-skills are DIFFERENT
  philosophies (scientific vs disciplinarian), not just complementary.
  Decision: structure from Anthropic + testing from Obra, scoped by
  skill type
- `tools:` frontmatter field is OPTIONAL even in Anthropic canonical
- skill-creator advocates "pushy" descriptions against undertriggering
  (opposite to Obra's "Use when only" rule)
- Anthropic explicit anti-pattern: «If you find yourself writing ALWAYS
  or NEVER in all caps — yellow flag, reframe and explain reasoning»
- ui-ux-pro-max uses LEGACY skill.json format (others use SKILL.md) —
  brain v2 must support both schemas

Recommender external validation added 2 new candidates to shortlist:
plugin-dev (Anthropic) and hookify (Anthropic) — both high-ROI for
brain as plugin distributor.

Install method: Path 2 (manual git clone) — Claude CLI not installed
on machine, VSCode extension doesn't support /plugin install.
Settings.json and installed_plugins.json manually updated outside repo
(in ~/.claude/).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 12:59:53 +03:00
Дмитрий af32dfcd92 docs(visualizations): rebuild hooks-skills-plugins-map for brain v1.0
Adapt HTML visualization template under actual brain v1.0 state on
2026-05-11. Original copy from Liderra had stale context.

Changes:
- Hero block: date 2026-05-11, edition vIV, deconxt from Liderra
  («четыре MCP-сервера» added to counters)
- §II Hierarchy: remove version suffixes (Pravila_raboty_Claude.md,
  Plugin_stack_rules.md) — brain templates have no versions
- §VI Plugins: claude-md-management now "1 skill + 1 slash-command",
  ui-ux-pro-max stats actualized (67 styles, 161 palette, 57 fonts,
  99 UX guidelines, 25 chart types)
- §VII Skills: lede updated to "28 capabilities (27 skills + 1
  slash-command)"
- §VIII Filesystem: rebuilt to dual-source brain v1.0 model
  (user / brain source / project consumer)
- §XI MCP servers (NEW): 4 servers — magic, playwright, github, semgrep
- §XII Actions renumbered (was §XI)
- §X Graph data: revise-claude-md labeled as command, legend label
  "Скил/команда (28)"
- Footer meta: 2026-05-11, "brain v1.0 / 7 хуков / 4 плагина / 4 MCP
  / 28 capabilities"
- manifest.json SHA-256 hash sync (both project-mode and brain-internal
  entries)

Verified: HTML parses OK, JSON parses OK, hash matches manifest.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 12:59:30 +03:00
Дмитрий 6935049934 chore(gitignore): ignore .claude/ local extension settings
VSCode Claude Code extension creates .claude/settings.local.json with
local permission overrides — these are user-machine-specific and should
not be tracked in the repo.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 12:59:09 +03:00
Дмитрий af310ebf7c docs(sessions): followup — close outstanding #4 (gh CLI install)
- gh 2.92.0 installed via choco (winget absent on Server 2022 Eval)
- gh auth already wired via GITHUB_TOKEN env (CoralMinister)
- Token scope: contents:read OK, issues/PRs forbidden
- Memory workspace bootstrapped for c:/моя/проекты/claude-brain/

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 07:33:02 +03:00
Дмитрий bb40760a70 docs(sessions): brain v1.0 bootstrap session log
Comprehensive conspectus of the 2026-05-11 bootstrap session:
- Pre-bootstrap decisions (mode 0%, subagent-driven, etc.)
- Phase-by-phase chronology (commits + artifacts + verification outputs)
- 11 bugs discovered and fixed (6 plan + 5 Phase 9 runtime)
- Windows Server 2022 / Git Bash quirks (Cyrillic paths, jq fopen, etc.)
- Outstanding items (Liderra main push deferred, MAGIC_API_KEY rotation deferred)
- Workflow learnings (TDD success, Subagent dispatch granularity, mock CLI patterns)
- Final metrics (14 commits, 8/8 tests, 64/64 hook subtests, 0 leaks)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 07:12:31 +03:00
18 changed files with 3184 additions and 60 deletions
+2
View File
@@ -0,0 +1,2 @@
brain-v1.3
sha: 350926057de71be3908440f12d46836f3ca88025
+1
View File
@@ -20,6 +20,7 @@ Thumbs.db
# Editor
.vscode/
.idea/
.claude/
*.swp
*~
+38
View File
@@ -1,5 +1,43 @@
# Changelog
## brain-v1.2 — 2026-05-11
### Added
- Installed brain-meta plugin **#17 plugin-dev** (Anthropic, marketplace `claude-plugins-official` HEAD `00679aef889e`). Toolkit для создания plugin'ов с agents/commands/hooks/MCP integration. Closes shortlist «Brain-specific must-add» part 1/2.
- Installed brain-meta plugin **#18 hookify** (Anthropic, same marketplace). Tool для создания hook'ов by analyzing conversation patterns. Complement к 10 ручным .py hook'ам. Closes shortlist «Brain-specific must-add» part 2/2.
- `docs/superpowers/plans/2026-05-11-install-plugin-dev-hookify.md` — implementation plan.
- `docs/brain-plugin-routing.md` v1.0 → v1.1: 2 новых row в §2.1 (реестр), 2 row в §3.1 routing-table (новые классы задач: «создание plugin'а», «создание hook'а»), 2 status updates в §4.2 (#17 + #18 → installed v1.2).
### Changed
- `user-level-files/plugins-manifest.json` — 6 → 8 entries (plugin-dev + hookify added with target=user-level, category=meta).
- `user-level-files/settings-fragment.json` — 6 → 8 entries в `enabledPlugins`.
- `CLAUDE.md` brain root — version `brain-v1.1``brain-v1.2`.
- `manifest.json``version` bumped to `brain-v1.2`.
### Notes
- Both plugins installed via `cp -r` from `~/.claude/plugins/marketplaces/...` (not separate git clone) — marketplace already cloned, this is more efficient than Phase 0 method.
- shortlist «Brain-specific must-add» (recommender's gap finding) полностью закрыт.
## brain-v1.1 — 2026-05-11
### Added
- `docs/brain-plugin-routing.md` v1.0 — normative document for plugin selection in brain repo. Resolves 8 sources of ambiguity (К1-К8 from design spec). Covers reestr, disabled-in-brain soft-rule (FD/UPM), routing table (17 overlaps + 3 tie-breakers), categorization (5 categories × 22 plugins), install checklist (5 sub-procedures), update procedure.
- `docs/superpowers/specs/2026-05-11-brain-plugin-routing-design.md` — design spec backing routing.md v1.0.
- `docs/superpowers/plans/2026-05-11-brain-plugin-routing.md` — implementation plan.
- `.brain-version` self-marker created (was missing in v1.0 bootstrap — closed as part of v1.1 bump).
- `target` field (ENUM `user-level`/`consumer`/`user-level+consumer`) in `user-level-files/plugins-manifest.json` — implements D9 from design spec.
- `category` field in plugins-manifest (from routing.md §4.1).
- Two new brain manifest entries: `skill-creator@claude-plugins-official` + `claude-code-setup@claude-plugins-official` — closes Phase 0 install drift (К3).
### Changed
- `CLAUDE.md` brain root — version `brain-v1.0``brain-v1.1`; new section «Выбор плагина и установка нового» linking to routing.md and noting disabled-in-brain soft-rule.
- `user-level-files/settings-fragment.json``enabledPlugins` extended with skill-creator and claude-code-setup (matching user-level `~/.claude/settings.json` state after Phase 0).
- `manifest.json``version` bumped to `brain-v1.1`.
### Notes
- PSR template (`project-files/docs/Plugin_stack_rules.template.md`) is NOT modified — it remains the consumer-side ruleset.
- D11: `.brain-version` + manifest.json + CLAUDE.md version line + CHANGELOG bumped atomically with brain-plugin-routing v1.0 implementation.
## brain-v1.0 — 2026-05-11 (planned)
### Extracted artifacts
+9 -1
View File
@@ -2,7 +2,7 @@
**Что это:** независимый репозиторий «мозга Claude» — переиспользуемого набора правил, хуков, плагинов и MCP-серверов для консьюмер-проектов (Лидерра и будущие).
**Версия:** brain-v1.0 от 11.05.2026
**Версия:** brain-v1.2 от 11.05.2026
---
@@ -30,6 +30,14 @@
- Скопированные template'ы — это installed copies brain v1.0. Когда хочется править — править здесь, делать bump и rerun install.sh в Лидерре.
- Plugin/MCP конфиги — bump через update manifest, не редактирование cache.
## Выбор плагина и установка нового
Brain имеет собственные правила выбора плагина — **не PSR template** (тот для consumer'а с UI/Vue стеком, в brain не применяется).
- Какой плагин брать для задачи / как разрешить overlap / куда поставить новый — см. [docs/brain-plugin-routing.md](docs/brain-plugin-routing.md) (v1.0+)
- При работе в brain repo плагины `frontend-design` и `ui-ux-pro-max` игнорируются (soft-rule §2.2 routing.md) — несмотря на их `enabledPlugins: true` на user-level
- При установке нового плагина — atomic procedure из §5 routing.md (6 артефактов)
## Безопасность
- API_KEY никогда в repo (используется placeholder `<<MAGIC_API_KEY>>`)
+260
View File
@@ -0,0 +1,260 @@
# Brain Plugin Routing Rules (v1.2)
**Дата:** 11.05.2026
**Назначение:** правила выбора плагина при работе в brain repo (`c:/моя/проекты/claude-brain/`).
**Scope:** только сам brain repo. Для consumer-проектов (Liderra и будущие) действуют их собственные правила (PSR template, который brain копирует в consumer).
**Связано:**
- [CLAUDE.md](../CLAUDE.md) — оперативная карта brain'а, содержит ссылку сюда
- [project-files/docs/Plugin_stack_rules.template.md](../project-files/docs/Plugin_stack_rules.template.md) — PSR для consumer'а; **НЕ применяется** к brain'у
- [docs/superpowers/specs/2026-05-11-brain-plugin-routing-design.md](superpowers/specs/2026-05-11-brain-plugin-routing-design.md) — design spec этого документа
---
## §1. Принципы
**Brain ≠ consumer.** PSR template (916 строк) описывает координацию плагинов в consumer'е c Vue/Vuetify/Forest стеком. Эти правила НЕ применяются к работе в самом brain — у brain нет UI-задач, нет TDD-кода, нет фаз 1-7 UI-фичи. Brain — это «инфраструктурный distributor», и правила выбора плагина здесь другие.
**Один путь поиска.** Все вопросы про плагины в brain'е (какой использовать, как поставить новый, что отключить) — решаются по этому документу. Если документ не покрывает — добавь сюда строку через bump v1.x, не плоди ad-hoc решения.
**Реалистично, без чрезмерности.** В brain'е работает один человек + Claude. Не нужны R0-R15 как в PSR. Достаточно: реестр, routing, disabled-in-brain, categorization, install checklist, update procedure.
---
## §2. Реестр активных плагинов + Disabled-in-brain
### §2.1. Реестр (6 плагинов после Phase 0)
| Плагин | Marketplace | Категория | Когда использовать в brain | Когда **не** использовать |
|---|---|---|---|---|
| **superpowers** | `obra/superpowers` | `process` | каждая нетривиальная задача (brainstorming, writing-plans, TDD, debugging, verification, code-review) | тривиальная правка опечатки / cross-ref / version-bump |
| **claude-md-management** | `anthropics/claude-plugins-official` | `meta` | любая правка CLAUDE.md (brain или consumer template); session-learnings через revise-claude-md | правка Pravila/PSR/Tooling template'ов (другой инструмент — прямой Edit + writing-skills pressure если структурная) |
| **skill-creator** | `anthropics/claude-plugins-official` | `meta` | создание custom skill для brain с **verifiable output** (codegen, transform, validation) | создание discipline-enforcing скила — там `superpowers:writing-skills` |
| **claude-code-setup** *(claude-automation-recommender)* | `anthropics/claude-plugins-official` | `meta` | анализ «какие плагины/хуки ещё поставить в brain» при росте репо | каждодневная работа |
| **plugin-dev** | `anthropics/claude-plugins-official` | `meta` | создание нового plugin'а в brain'е (agents/commands/hooks/MCP integration); тест-bed для будущих brain плагинов | каждодневная UI/code работа |
| **hookify** | `anthropics/claude-plugins-official` | `meta` | создание нового hook'а в brain by analyzing conversation patterns; complement к 10 ручным .py hook'ам в `user-level-files/hooks/` | каждодневная работа |
| **context7** | `anthropics/claude-plugins-official` | `consumer-universal` (active in brain via target=user-level+consumer) | docs lookup для API/SDK/marketplaces (Anthropic SDK, claude-plugins, future Vue/Vuetify в Liderra); plugin bundles MCP via `npx -y @upstash/context7-mcp` | каждодневный код-write (не doc-lookup) |
| **frontend-design** | `anthropics/claude-plugins-official` | `consumer-UI` | ❌ **не использовать в brain'е** (см. §2.2) | весь brain |
| **ui-ux-pro-max** | `nextlevelbuilder/ui-ux-pro-max-skill` | `consumer-UI` | ❌ **не использовать в brain'е** (см. §2.2) | весь brain |
### §2.2. Disabled-in-brain (soft-rule)
`frontend-design` и `ui-ux-pro-max` остаются `enabledPlugins: true` на user-level — нужны:
1. при работе в Liderra (там UI-задачи, регламентирует PSR R10),
2. как template'ные зависимости для будущих consumer'ов.
**Но в самом brain repo они не используются.** Модель самостоятельно их игнорирует, не инвокирует Skill tool на их скилы. Технически плагины активны — в brain mental model выключены.
**Триггер soft-rule:** рабочий путь начинается с `c:/моя/проекты/claude-brain/`. При этой проверке — FD/UPM «вне scope».
**Edge case — структурная правка visualization HTML** (`project-files/docs/visualizations/hooks-skills-plugins-map.html`):
- маленькая правка (узел, цвет, текст) — прямой Edit без FD
- структурная (новая раскладка, новое представление) — открыть новый чат, явно сказать «использую FD для этой правки visualization», и считать FD активным только на этот один файл
---
## §3. Routing table
### §3.1. Disambiguation overlap'ов
| Задача в brain | Default | Допустимый override + триггер | Почему default |
|---|---|---|---|
| Создание custom skill — **verifiable output** (codegen, transform, validation) | `skill-creator` | `superpowers:writing-skills` если discipline-составляющая преобладает | eval-loop с train/test 60/40 + iterative refinement работает на проверяемых outputs |
| Создание custom skill — **discipline-enforcing** (TDD-like, review-like, verify-like) | `superpowers:writing-skills` | `skill-creator` если output становится явно verifiable (hook generator и т.п.) | RED-GREEN-REFACTOR pressure scenarios + bulletproofing |
| Создание custom skill — **hybrid** | `superpowers:brainstorming` → определить ведущий тип → дальше по строкам выше | — | brainstorming сам решает тип |
| Правка `CLAUDE.md` (brain или consumer template) | `claude-md-management:claude-md-improver` | прямой Edit **только** для: cross-ref bump, version-bump, опечатка | формально требуется по [CLAUDE.md §5 п.10 (template)](../project-files/CLAUDE.md.template); тривиал-override снимает overkill |
| Capture session-learnings → CLAUDE.md | `claude-md-management:revise-claude-md` | — | специально под эту задачу |
| Правка `Pravila`/`PSR`/`Tooling` template'ов | прямой Edit (template — не CLAUDE.md, claude-md-improver неприменим) + `superpowers:writing-skills` pressure если структурная | — | улучшитель для не-CLAUDE.md в brain отсутствует |
| Анализ «что ещё поставить в brain» | `claude-code-setup:claude-automation-recommender` | ручной анализ если recommender дал «не знаю» | внешняя валидация ручного shortlist'а; уже доказал value (нашёл #17 plugin-dev + #18 hookify) |
| Создание нового **plugin'а** для brain (agents/commands/hooks/MCP integration) | `plugin-dev` | прямое создание `.claude-plugin/plugin.json` + skills если plugin тривиальный (1 skill, без агентов и hooks) | guided plugin scaffolding с Anthropic best practices |
| Создание нового **hook'а** в brain (PreToolUse/PostToolUse/Stop/SessionStart/UserPromptSubmit) | `hookify` | прямой Edit .py файла в `user-level-files/hooks/` если простой port существующего паттерна или hook тривиален | guided hook generation by analyzing conversation patterns |
| Code review brain-кода (hooks .py, scripts.sh, install.sh) | `superpowers:requesting-code-review` | `/review` или `/simplify` **только** при явной user-команде | process-discipline + многоаспектный обзор; built-in tools — single-shot |
| Debug (hook не работает, install.sh fails, MCP не отвечает) | `superpowers:systematic-debugging` (≥3 гипотезы, falsify каждую) | — | hard-required по economy 0% |
| Планирование multi-step задачи в brain | `superpowers:writing-plans` (после brainstorming) | прямой Edit с TodoWrite **только** для ≤2 шагов | для длинных задач — full spec в `docs/superpowers/specs/` |
| Закрытие задачи (commit, tag, push) | `superpowers:verification-before-completion` | — | hard-rule перед claim 'готово' по economy 0%; economy-verifier hook это проверит |
| Параллельная работа (независимые исследования) | `superpowers:dispatching-parallel-agents` | — | один tool |
| Worktree-изоляция (эксперимент, feature-branch) | `superpowers:using-git-worktrees` | — | один tool |
| Завершение feature-branch | `superpowers:finishing-a-development-branch` | — | один tool |
| Receive code review | `superpowers:receiving-code-review` | — | один tool |
| TDD на код hook'а / скрипта | `superpowers:test-driven-development` (failing test first) | — | hard-required по economy 0% |
| «Запутался — какой плагин брать» (meta-question) | прочитать этот документ; если строки нет — спросить + добавить через bump v1.x (см. §6.1) | — | self-referential: правила указывают на самих себя |
| Документация API/SDK/marketplace (Anthropic SDK, claude-plugins-official, Vue/Vuetify в Liderra) | `context7` MCP (через plugin context7 в `enabledPlugins`) | `WebFetch` если context7 npx down/offline ИЛИ источник вне SDK doc trees (общая статья, blog post) | структурированный version-pinned lookup vs unstructured web scrape |
### §3.2. Tie-breakers
1. **Несколько строк подходят одновременно** — побеждает более конкретная по задаче. Equal confidence → спросить пользователя.
2. **Economy mode 0% триггер требует skill X, default говорит Y** — побеждает economy 0% (live-override).
3. **User написал `/skill-name` явно** — выполнить именно его (live-override на одно действие).
4. **Community-managed plugin предложен для активного use** — добавить в `enabledPlugins` только если: (a) Anthropic-marketplace с явной верификацией (community-managed tag там есть, но Anthropic git-hosted), ИЛИ (b) user явно проаппрувил риск, ИЛИ (c) plugin изолирован (read-only queries без PII). Иначе оставить `registered-only-not-cached` для consumer-distribute, не активируя в brain. Применено в brain v1.3 к context7 (active, изолирован read-only) и telegram (registered-only, требует bun + post-install pairing).
---
## §4. Categorization
Решает «куда ставить плагин» и «где какой плагин относится».
### §4.1. Категории
| Категория | Где ставить | Где НЕ ставить | Признак |
|---|---|---|---|
| `meta` | brain `enabledPlugins` + brain `plugins-manifest.json` (target = `user-level`) | consumer | работает над plugin/skill/hook инфраструктурой Claude Code |
| `consumer-universal` | template install для любого consumer'а через `scripts/install.sh` (target = `consumer`) | brain | Claude Code workflow tool, не зависит от стека |
| `consumer-stack-gated` | template install только для consumer'а с подходящим стеком | brain + consumer без стека | привязан к Vercel/Supabase/Figma/HuggingFace/Vue+spec |
| `consumer-UI` | user-level `enabledPlugins` (нужен в Liderra) + brain manifest target = `user-level+consumer` | внутри brain — soft-ignore по §2.2 | UI/UX domain plugin |
| `skip` | нигде | везде | не подходит по результату анализа |
### §4.2. Распределение (4 legacy + 17 shortlist Phase 0 + 1 cut = 22 строки)
| # | Plugin | Категория | Статус |
|---|---|---|---|
| legacy | `superpowers` | `process` | installed brain v1.0 |
| legacy | `claude-md-management` | `meta` | installed brain v1.0 |
| legacy | `frontend-design` | `consumer-UI` | installed brain v1.0 (но disabled-in-brain §2.2) |
| legacy | `ui-ux-pro-max` | `consumer-UI` | installed brain v1.0 (но disabled-in-brain §2.2) |
| #4 | `skill-creator` | `meta` | installed Phase 0 (manual-git-clone-Path2) |
| #8 | `claude-code-setup` | `meta` | installed Phase 0 (manual-git-clone-Path2) |
| #17 | `plugin-dev` | `meta` | installed brain v1.2 (manual-cp-from-marketplace-Path2) |
| #18 | `hookify` | `meta` | installed brain v1.2 (manual-cp-from-marketplace-Path2) |
| #1 | `context7` | `consumer-universal` (active in brain via target=user-level+consumer) | installed brain v1.3 (manual-cp-from-marketplace-Path2); **community-managed** (Upstash) + npx runtime dep |
| #2 | `code-review` | `consumer-universal` | registered brain v1.3 (registered-only-not-cached); Anthropic-authored |
| #7 | `security-guidance` | `consumer-universal` | registered brain v1.3 (registered-only-not-cached); Anthropic-authored; plugin несёт own hooks.json — потенциальный конфликт с brain economy-hooks при activation |
| #10 | `pr-review-toolkit` | `consumer-universal` | registered brain v1.3 (registered-only-not-cached); Anthropic-authored |
| #12 | `telegram` | `consumer-universal` | registered brain v1.3 (registered-only-not-cached); **community-managed** + bun runtime dep + post-install pairing required |
| #5 | `feature-dev` | `consumer-stack-gated` | shortlist Phase 2 conditional |
| #6 | `figma` | `consumer-stack-gated` (requires Figma) | shortlist Phase 2 conditional |
| #9 | `vercel` | `consumer-stack-gated` (requires Vercel) | shortlist Phase 2 conditional |
| #11 | `supabase` | `consumer-stack-gated` (requires Supabase) | shortlist Phase 2 conditional |
| #13 | `huggingface-skills` | `consumer-stack-gated` (requires HF/ML) | shortlist Phase 2 conditional |
| #15 | `data-engineering` | `consumer-stack-gated` (requires DWH/Airflow/dbt) | shortlist Phase 2 conditional |
| #14 | `atomic-agents` | `skip` | rejected — Python ML mismatch, community marketplace |
| #16 | `pagerduty` | `skip` | rejected — paid enterprise, не используется |
| #3 | `code-simplifier` | cut (поглощён #10) | excluded из shortlist |
### §4.3. Правило установки нового (19-го) плагина
1. Определить категорию по признаку в §4.1
2. Если `meta` → поставить в brain по §5.1, добавить строку в реестр §2.1, добавить строку в §4.2
3. Если `consumer-universal` → §5.2
4. Если `consumer-stack-gated` → §5.3
5. Если `consumer-UI` → §5.4
6. Если `skip` → §5.5
---
## §5. Install checklist (atomic, 6 артефактов)
### §5.1. Категория `meta` — полная установка в brain
**Цель:** плагин активен в `~/.claude/` И зафиксирован в brain'е как source-of-truth.
| # | Действие | Артефакт | Verify |
|---|---|---|---|
| 1 | Marketplace уже добавлен? | check `~/.claude/plugins/known_marketplaces.json` | если новый → 1a |
| 1a | Добавить marketplace | `claude marketplace add <repo>` или manual edit `~/.claude/plugins/known_marketplaces.json` + brain `user-level-files/marketplaces.json` | обе записи совпадают |
| 2 | Установить плагин | **На этой машине** `claude` CLI не установлен (Phase 0 forced Path 2) — primary = `git clone --depth=1 <repo-url> ~/.claude/plugins/cache/<marketplace>/<name>/<version>`. **Preferred-future** = `claude plugin install <name>@<marketplace>` после установки CLI | директория есть, SKILL.md/plugin.json present |
| 3 | Enable | edit `~/.claude/settings.json``"<name>@<marketplace>": true` в `enabledPlugins` | Skill tool видит скилы в новой сессии |
| 4 | User-level manifest | edit `~/.claude/plugins/installed_plugins.json` → новый entry со scope, installPath, version, installedAt, lastUpdated, gitCommitSha (или `installMethod: "manual-git-clone-Path2"`) | jq валидируется |
| 5 | **Brain snapshot 1/3** | edit `user-level-files/plugins-manifest.json` → entry со всеми полями + `target` (per §4.1) + `category` | jq валидируется |
| 6 | **Brain snapshot 2/3** | edit `user-level-files/marketplaces.json` (если шаг 1a) | jq валидируется |
| 7 | **Brain snapshot 3/3** | edit `user-level-files/settings-fragment.json` → key в `enabledPlugins` | jq валидируется |
| 8 | Обновить routing.md | bump v1.x + строка в §2.1 + строка в §4.2 + строки в §3.1 если плагин решает новый класс задач | документ согласован |
| 9 | Verify | в новой сессии: `Skill('<name>')` отвечает | OK |
| 10 | Commit atomic | `git add` 4 brain-файла + routing.md + commit message `feat(brain-plugins): install <name> as meta plugin (v1.x)` | 1 commit |
**Pre-conditions:** категория `meta` ✓; marketplace Anthropic-verified ИЛИ explicit user-approve; нет конфликта в §3.1.
### §5.2. Категория `consumer-universal`
**Цель:** плагин будет распространяться через `scripts/install.sh` в consumer'ов, но **не активен в brain'е**.
| # | Действие | Артефакт |
|---|---|---|
| 1 | Marketplace в brain (если новый) | `user-level-files/marketplaces.json` |
| 2 | Manifest в brain | `user-level-files/plugins-manifest.json` со `"target": "consumer"` + `"category": "consumer-universal"` |
| 3 | **Не добавлять** в brain `settings-fragment.json` | — |
| 4 | Обновить routing.md | строка в §2.1 (с пометкой target=consumer) + §4.2 |
| 5 | Bump `scripts/install.sh` если нужна логика установки в consumer | — |
| 6 | Commit atomic | `feat(brain-plugins): register <name> for consumer install` |
**Brain runtime не меняется.** Плагин **не активен** в `~/.claude/settings.json` brain'а. Если плагин нужен также пользователю — он отдельно edit'ит свой `settings.json`.
### §5.3. Категория `consumer-stack-gated`
Аналогично §5.2 + шаг 4а: фиксировать в `docs/consumer-projects.md` для каких стеков подходит.
### §5.4. Категория `consumer-UI`
Подвариант §5.2: установлен на user-level (нужен в Liderra), но в brain'е по §2.2 — игнорируется. Brain manifest target = `"user-level+consumer"`. Brain `settings-fragment.json` **содержит** этот плагин (как сейчас FD, UPM).
### §5.5. Категория `skip`
| # | Действие | Артефакт |
|---|---|---|
| 1 | Запись причины пропуска | `docs/rejected-plugins.md` (создаётся при первой такой записи) или раздел «Rejected» в этом документе |
| 2 | Ничего больше не трогать | — |
---
## §6. Update procedure
### §6.1. Когда менять документ
| Событие | Что обновить |
|---|---|
| Новый плагин в shortlist / установлен | §2.1 + §4.2 + §3.1 (если новый класс задач) + bump v1.x |
| Новый класс задачи в brain'е, решающийся неоднозначно | §3.1 + bump v1.x |
| Старый плагин deprecated / удалён | §2.1 mark «deprecated», §4.2 → `skip`, §3.1 — заменить default'ы; bump v1.x или v2.0 |
| Marketplace плагина reorganized | §2.1 column + manifest + commit |
| Solved конфликт routing → tie-breaker | §3.2 + bump v1.x |
| Изменение категории плагина | §2.1 + §4.2 + install шаги (§5.1↔§5.2) при следующем sync |
### §6.2. Bump strategy
- **v1.x → v1.(x+1)** (minor): новая строка в реестре/routing/§4.2; новая tie-breaker; коррекция формулировки.
- **v1.x → v2.0** (major): смена структуры разделов; смена принципов; удаление целой категории.
### §6.3. Согласованность с другими документами brain'а
При bump этого документа:
- если меняется категория плагина или add'ится новый → обновить `user-level-files/plugins-manifest.json`, `marketplaces.json`, `settings-fragment.json` в **том же commit'е** (см. §5.1 шаги 5-7).
- если изменения структурные → bump `CLAUDE.md` brain'а (короткая запись о новой структуре).
- ссылка из `CLAUDE.md` на этот документ — всегда `v1.x+` (forward-compat).
### §6.4. Edge case — старая категория не подходит для нового плагина
Если новый плагин не вписывается ни в одну из 5 категорий (`meta` / `consumer-universal` / `consumer-stack-gated` / `consumer-UI` / `skip`):
1. Не пытаться «подогнать» под существующую.
2. Сделать `superpowers:brainstorming` — обдумать что это за класс.
3. Если нужна новая категория — bump v2.0 + явный раздел в changelog почему.
---
## §7. Финальная формула + свойства
### §7.1. TL;DR
```
Задача в brain → §3.1 routing-table → найди строку → default или override.
Не нашёл строки → спроси пользователя + добавь строку через bump v1.x (§6.1).
Установка нового плагина → §5 по категории.
В сомнениях про категорию → §4.1 признаки → §6.4 если ни одна не подходит.
При работе в brain repo → frontend-design + ui-ux-pro-max игнорируются (§2.2).
Закрытие задачи → всегда `superpowers:verification-before-completion` перед claim 'готово'.
```
**Применять немедленно:** этот документ загружается через CLAUDE.md brain'а; при сомнении про любой плагин — открыть §3.1 первым шагом.
### §7.2. Свойства документа
- **Полнота:** каждая задача brain'а маршрутизируется через §3.1; каждый плагин имеет категорию из §4.1; каждый install имеет процедуру из §5.
- **Соразмерность:** ~275 строк, в 4× меньше PSR template (916); brain — инфраструктурный distributor, не consumer с UI/TDD/brand.
- **Самоподдержка:** §6 описывает как обновлять документ при изменениях.
- **Независимость:** не пересекается с PSR template (тот для consumer'ов) и не дублирует CLAUDE.md (там короткая ссылка сюда).
---
## История версий
- **v1.2 от 2026-05-11** — Brain v1.3 release: Phase 1 deliverables. Added 5 plugins (#1 context7 active-in-brain via target=user-level+consumer, #2 code-review, #7 security-guidance, #10 pr-review-toolkit, #12 telegram — все consumer-universal через target=consumer или user-level+consumer). install-plugins.sh learned `--install-target=user|consumer` flag + filter по `target` ENUM (closing tech-debt из v1.0). §2.1 +1 row (context7), §3.1 +1 row (docs lookup новый класс задачи), §3.2 +1 tie-breaker (community-managed rule), §4.2 +5 status updates.
- **v1.1 от 2026-05-11** — Installed brain-meta plugins #17 plugin-dev + #18 hookify. Added 2 rows в §2.1 (реестр), 2 rows в §3.1 routing-table (новые классы задач: «создание plugin'а», «создание hook'а»), 2 status updates в §4.2 (#17 + #18 → installed brain v1.2).
- **v1.0 от 2026-05-11** — Initial release. Resolves 8 sources of ambiguity (К1-К8) from [design spec](superpowers/specs/2026-05-11-brain-plugin-routing-design.md). 5 категорий плагинов, 17 routing-rows + 3 tie-breakers, 5 install подпроцедур, update procedure. Implements decisions D1-D12 design spec'а.
+199
View File
@@ -0,0 +1,199 @@
# Phase 0 — Final Report
**Дата:** 2026-05-11
**Scope:** только brain repo (по указанию Дмитрия)
**Install method:** Path 2 (manual git clone) — `claude` CLI не установлен на машине, VSCode extension не поддерживает `/plugin install`
**Status:** ✓ Phase 0 завершён, готов к Phase 1 при approve enabling плагинов в settings.json
---
## Что фактически выполнено
| Шаг | Действие | Результат |
|---|---|---|
| 0.1 | Plugin cache check | 4 текущих плагина + НЕТ skill-creator/claude-code-setup |
| 0.Пре | Preliminary analysis | [docs/brain-v2-phase-0-preliminary.md](brain-v2-phase-0-preliminary.md) — frontmatter conventions diff + brain v1 inventory |
| 0.2 | Install (Path 2) | `git clone --depth=1` репо anthropics/claude-plugins-official → переместил skill-creator + claude-code-setup в `~/.claude/plugins/cache/claude-plugins-official/` |
| 0.3 | Read SKILL.md обоих | 485 строк skill-creator + 289 строк claude-automation-recommender — прочитаны полностью |
| 0.4 | Compare actual vs preliminary | См. ниже секцию «Расхождения» |
| 0.5 | Apply recommender workflow manually на brain | См. секцию «Recommendations» |
| 0.6 | Cross-validate vs shortlist 15 | См. секцию «Внешняя валидация» |
| 0.7 | Audit existing skills (17 inherited) | См. секцию «Audit inherited skills» |
| 0.8 | Persist + approve request | Этот документ + memory + open items |
---
## Расхождения preliminary findings vs фактический skill-creator
| Аспект | Preliminary предсказание | Фактический skill-creator | Δ |
|---|---|---|---|
| Frontmatter `tools:` | «Anthropic canonical имеет optional `tools:`» | **Сам skill-creator SKILL.md его НЕ имеет**; claude-automation-recommender — имеет | ✗ `tools:` — optional, не required |
| Description style | «what + when» both | «Create new skills... Use when...» — гибрид | ✓ Близко |
| Testing methodology | Evaluations 3+ scenarios | Iterative eval loop с **train/test split 60/40**, **5 max iterations**, HTML viewer | ✓✓ Глубже |
| Iron law | Build evaluations FIRST | **Нет жёсткого Iron Law** — рекомендация, не закон | ✗ Расхождение |
| Anti-«ALWAYS/NEVER» | Не предсказано | Явная инструкция: «yellow flag — reframe and explain reasoning» | ✗ Новая инсайт |
| Pushy descriptions | Не предсказано | «Make sure to use this skill whenever...» — anti-undertriggering | ✗ Новая инсайт |
| Tone | Не предсказано | Conversational: «we are trying to create billions a year», «Cool? Cool.» | ✗ Расхождение с Obra strict tone |
---
## Финальное решение по canonical structure brain v2
skill-creator (Anthropic) и Obra writing-skills — **разные философии**, не просто комплементарны:
| Подход | skill-creator (Anthropic) | Obra writing-skills |
|---|---|---|
| Философия | **Scientific** — eval datasets, train/test, benchmarks | **Disciplinarian** — strict TDD, bulletproof rationalization |
| Tone | Conversational, anti-MUST | Strict, Iron Law absolute |
| Best for | Verifiable outputs (code-gen, transforms) | Discipline-enforcing skills (TDD, debugging) |
### Дисциплина для brain v2 (фиксируем в Pravila v2)
| Тип создаваемого skill | Workflow |
|---|---|
| **Verifiable outputs** (code-gen, file processing) | `skill-creator` eval-driven loop |
| **Discipline-enforcing** (TDD, code-review, verification) | `superpowers:writing-skills` pressure scenarios + bulletproofing |
| **Hybrid** (workflow + discipline) | `superpowers:brainstorming` → выбрать тип → следовать соответствующему workflow |
| **Frontmatter** | `name` + `description` required; `tools:` — optional (для read-only/restricted skills) |
| **Description style** | Hybrid «what + when» (skill-creator подход), не «Use when only» (Obra) |
| **Tone** | Avoid heavy «MUST/ALWAYS» — explain reasoning |
| **Pushy descriptions** | Для combat undertriggering, использовать pushy формулировки в description |
---
## Recommendations from claude-automation-recommender (применён manually на brain)
### Brain Codebase Profile
- **Type:** Meta-codebase (Claude Code automations distributor)
- **Language:** Python (hooks .py), Bash (scripts.sh), Markdown (templates)
- **Specific:** brain v1.0 — distributes skills/hooks/plugins/MCPs to consumer-проекты через `scripts/install.sh`
### Top recommendations per category (1-2 each)
#### 🔌 MCP Servers
1. **Context7** — для documentation lookup Python/Bash libraries. Особенно релевантно brain reading 3rd-party plugin SKILL.md files. ✓ **уже в моём shortlist (#1)**
#### 🎯 Skills/Plugins
1. **plugin-dev** ⚡ NEW — Anthropic plugin для building plugins. **Критически релевантно brain как plugin-distributor**. Не было в моём shortlist 15!
2. **hookify** ⚡ NEW — для writing automation rules / hook discipline. Релевантно brain'у с 7 custom Python hooks. Не было в shortlist!
#### ⚡ Hooks
1. **PostToolUse: pytest run on hook .py edit** — brain имеет pytest tests ([user-level-files/hooks/*-test.py](../user-level-files/hooks/)), но auto-run не настроено в brain settings.
2. **PreToolUse: validate manifest sync on file edit** — custom hook для warning при manifest hash desync (как мы это вручную делали при HTML edit task). Brain-specific.
#### 🤖 Subagents
1. **manifest-validator** — proactive verification после edits.
2. **template-tester** — apply install.sh в tmp dir для verification.
#### 📦 Plugins
1. **skill-creator** ✓ (только что добавлен)
2. **plugin-dev** ⚡ NEW — must-have для brain.
---
## Внешняя валидация: recommender vs shortlist 15
### Recommender независимо согласен с
- #1 Context7 ✓
- #4 skill-creator ✓
- #8 claude-code-setup ✓
- (косвенно) #2 code-review, #5 feature-dev, #7 security-guidance, #10 pr-review-toolkit
### Recommender НЕ упомянул из shortlist 15
- #12 telegram — communication channel, out of recommender's «automation» scope
- #14 atomic-agents — recommender не нашёл Python ML signals в brain
- #16 pagerduty — incident management, out of scope
- Stack-gated #6 Figma / #9 Vercel / #11 Supabase / #13 huggingface / #15 data-engineering — нужны Дмитрия answers по стеку Liderra
### Recommender добавил НОВЫХ кандидатов (gap в моём shortlist)
- **plugin-dev** ⚡ — Anthropic, для building plugins. ROI для brain высокий.
- **hookify** ⚡ — Anthropic, для writing automation rules / hooks. Релевантно нашим 7 economy hooks.
- **commit-commands** — для git commit workflow brain release process.
- **Linear MCP** — gated на использование Linear (не верифицировано у Дмитрия)
- **Sentry MCP** — gated на error tracking
**Главная инсайт:** recommender нашёл **2 высоко-релевантных плагина** (`plugin-dev`, `hookify`) которые я упустил при ручном анализе 14 candidates. Это валидация что внешний инструмент анализа полезен.
---
## Audit inherited skills (применён skill-creator workflow logic)
Brain v1 не имеет custom skills, только inherited из 4 плагинов. Audit observations:
| Skill source | Frontmatter style | Anthropic canonical adherence | Action |
|---|---|---|---|
| 14 superpowers skills | Obra: `name` + `description` (no `tools:`) | Partial — description style Obra «Use when…» | Не трогаем (third-party Obra plugin) |
| 1 claude-md-improver | Anthropic: `name` + `description` + `tools:` | ✓ Canonical | OK |
| 1 frontend-design | Anthropic style (предположительно) | ✓ | OK |
| 1 ui-ux-pro-max | **`skill.json`**, НЕ `SKILL.md`! | Outside Anthropic canon — другая схема | Acknowledge as legacy/community format |
### Главная observation
`ui-ux-pro-max` использует `skill.json` (community format), все остальные — `SKILL.md` (Anthropic). Brain v2 должен **либо поддерживать обе схемы**, либо **explicitly drop community format**. Это **архитектурное решение** для brain v2.
---
## Open items для Дмитрия
### 1. Approve enabling plugins в settings.json
Сейчас skill-creator + claude-code-setup физически в `~/.claude/plugins/cache/`, но **не enabled** в `~/.claude/settings.json` → Skill tool **не сможет их invoke** в будущих сессиях. Нужно:
**А) Edit `~/.claude/settings.json`** — добавить:
```json
"enabledPlugins": {
...existing 4...,
"skill-creator@claude-plugins-official": true,
"claude-code-setup@claude-plugins-official": true
}
```
Защищено `permissions.ask` ([settings-fragment.json:22](../user-level-files/settings-fragment.json#L22)) — требует твоего approve через permission prompt.
**Б) Edit `~/.claude/plugins-manifest.json`** — добавить metadata 2 plugins (для consistency с brain v1 manifest tracking).
### 2. Решение по 2 новым кандидатам от recommender
**plugin-dev** и **hookify** — Anthropic-verified плагины, recommender независимо предложил их как high-ROI для brain. Не были в моём ручном shortlist 15.
- ✓ Добавить в shortlist (17 → 18)?
- Запросить detailed analysis (как для предыдущих 16)?
- Пропустить?
### 3. Решение по `skill.json` (legacy) vs `SKILL.md` (canonical) формату
ui-ux-pro-max использует legacy `skill.json`. Brain v2:
- (A) Поддерживать обе схемы
- (B) Drop community format — выкинуть ui-ux-pro-max (но он содержит ценный контент: 67 styles, 161 palettes, ...)
- (C) Convert ui-ux-pro-max → SKILL.md format (требует custom transformation)
### 4. Решение по Path 2 trade-off
Текущая install через manual git clone — bypass workflow. Альтернативы:
- (A) **Switch to Path 1:** установить `npm install -g @anthropic-ai/claude-code` → reinstall через `/plugin install` → чистый workflow
- (B) **Stay on Path 2** + manually обновить settings.json + manifest
Path 1 рекомендуется для long-term consistency, Path 2 уже сделан (быстрее, но dirty).
### 5. Спецификация Phase 1
Готов написать `docs/brain-v2-phase-1-spec.md` для core dev workflow plugins (#1, #2, #7, #10, #12) после твоих ответов на 1-4 выше.
---
## Ограничения, явно не верифицированные
- **Не верифицировал** — что claude-automation-recommender как **запущенный плагин** даёт идентичные recommendations к моему **manual application** SKILL.md workflow
- **Не верифицировал** — фактическую работу skill-creator eval loop с подопытными test cases (нужен реальный candidate skill для тестирования)
- **Не запускал** `scripts/aggregate_benchmark` или `eval-viewer/generate_review.py` — это требует subagents и opens viewer in browser
- **Не верифицировал** — все 14 superpowers skills структурно одинаковы (прочитан только writing-skills SKILL.md)
- **Не верифицировал** — содержимое references/* в обоих новых плагинах (только SKILL.md прочитан)
- **Не делал** trigger eval queries / description optimization для existing skills — это full workflow требует много iterations
- **Не аудитил** Liderra repo — по твоему явному указанию «только на brain»
---
## Stats
- **Файлов добавлено в brain repo:** 1 ([docs/brain-v2-phase-0-final.md](brain-v2-phase-0-final.md))
- **Файлов добавлено в `~/.claude/plugins/cache/`:** 2 директории (skill-creator + claude-code-setup) + содержимое
- **Memory обновлено:** [project_brain_v2_phase0.md](C:/Users/Administrator/.claude/projects/c--------------claude-brain/memory/project_brain_v2_phase0.md)
- **Прочитано документации:** ~3000 строк (485 skill-creator + 289 recommender + 1151 anthropic-best-practices + 656 writing-skills + brain repo audit)
+141
View File
@@ -0,0 +1,141 @@
# Phase 0 — Preliminary Findings (до установки)
**Дата:** 2026-05-11
**Статус:** PRELIMINARY — будут уточнены после установки `skill-creator@claude-plugins-official` и `claude-code-setup@claude-plugins-official`
**Контекст:** Brainstorming brain v2 architecture. Дмитрий распорядился начать с мета-уровня (foundation для правильного написания правил/инструкций), запустить Phase 0 только на brain repo (не на Liderra).
---
## Что заблокировано
`/plugin install` — user-facing slash-команда Claude Code CLI. Claude в текущей сессии не может её выполнить, требует действия Дмитрия:
```
/plugin install skill-creator@claude-plugins-official
/plugin install claude-code-setup@claude-plugins-official
```
После этого можно продвинуться к шагам 0.3–0.8 Phase 0.
---
## Preliminary inventory: что есть в brain v1 на мета-уровне
### Установленные плагины с skill-authoring capabilities
| Плагин | Skill / Command | Что покрывает |
|---|---|---|
| `superpowers v5.1.0` | `writing-skills` skill | TDD-методология для skills: pressure scenarios, RED-GREEN-REFACTOR, baseline + bulletproofing |
| `claude-md-management v1.0.0` | `claude-md-improver` skill | Audit + targeted updates для CLAUDE.md (не skills в общем — только проектный CLAUDE.md) |
| `claude-md-management v1.0.0` | `revise-claude-md` command | Capture session-learnings → CLAUDE.md |
### Reference materials in superpowers
Внутри [superpowers/skills/writing-skills/](C:/Users/Administrator/.claude/plugins/cache/superpowers-dev/superpowers/5.1.0/skills/writing-skills/) есть отдельный файл `anthropic-best-practices.md` (1151 строка) — это полный Anthropic-official guide по skill authoring, **уже встроенный в obra-superpowers**. Это означает obra **признаёт** Anthropic canonical structure как parallel standard, не конкурирующий.
### Custom skills в brain v1
**Ноль.** В `c:/моя/проекты/claude-brain/` нет ни одного собственного `SKILL.md` с frontmatter. Что есть:
- 7 Python hook-скриптов в `user-level-files/hooks/` (.py-файлы, runtime gates — не skills)
- 4 template-документа в `project-files/docs/`:
- `Pravila_raboty_Claude.template.md` — главные правила процесса
- `Plugin_stack_rules.template.md` — координация плагинов
- `Tooling.template.md` — реестр инструментов
- `CHANGELOG_claude_md.template.md`
- `project-files/CLAUDE.md.template` — карта консьюмер-проекта
Это **rules documents** (текстовые правила, не skills). Они правятся вручную через Edit, или (для CLAUDE.md) через `claude-md-improver`. Для остальных трёх (Pravila/PSR/Tooling) **нет автоматизированного скила**.
---
## Frontmatter conventions diff: Anthropic vs Obra
Из чтения [anthropic-best-practices.md](C:/Users/Administrator/.claude/plugins/cache/superpowers-dev/superpowers/5.1.0/skills/writing-skills/anthropic-best-practices.md) (1151 строк) и [writing-skills SKILL.md](C:/Users/Administrator/.claude/plugins/cache/superpowers-dev/superpowers/5.1.0/skills/writing-skills/SKILL.md):
| Аспект | Anthropic canonical | Obra writing-skills |
|---|---|---|
| Frontmatter required fields | `name` (max 64), `description` (max 1024) | `name`, `description` |
| Frontmatter optional fields | `tools:` (список Read/Glob/Grep/Bash/Edit и т.п.) | не упоминает `tools:` |
| Description style | **«what + when» both** | **«Use when…» ONLY, no workflow summary** |
| Description focus | Specific triggers + key terms | Triggering conditions только |
| Body length | < 500 строк | < 200–500 слов (намного строже) |
| Testing methodology | Build evaluations FIRST (3+ scenarios + multi-model) | TDD: RED→GREEN→REFACTOR + pressure scenarios |
| Naming style | Gerund form: «Processing PDFs» | Verb-first: `processing-pdfs` |
| Progressive disclosure | Heavy — `reference/finance.md`, one-level-deep refs | Less emphasis, всё внутри SKILL.md |
| Iron law | Build evaluations FIRST | NO SKILL WITHOUT FAILING TEST FIRST |
| Cross-references | MCP-style: `BigQuery:bigquery_schema` | Skill name + marker: `**REQUIRED SUB-SKILL:** superpowers:tdd` |
### Где они **согласуются** (compatible)
- Third-person description
- Avoid time-sensitive info
- Consistent terminology
- Concrete examples > abstract
- Tested > untested
### Где **расходятся** (требуют решения)
1. `tools:` field в frontmatter
2. Description style: «what + when» vs «Use when…» only
3. Testing methodology: evaluations vs TDD pressure scenarios
4. Body length cap
---
## Preliminary решение по приоритету (до install)
Anthropic canonical и Obra writing-skills **в основном комплементарны**:
- **Anthropic canonical** говорит **WHAT** — структура, frontmatter, content organization, naming
- **Obra writing-skills** говорит **HOW to test** — TDD methodology, pressure scenarios, bulletproofing
**Предлагаемая дисциплина для brain v2 (требует подтверждения после install `skill-creator`):**
| Этап создания skill | Источник | Конкретно |
|---|---|---|
| 1. Дизайн / intent | `superpowers:brainstorming` | Свободный диалог с пользователем для clarification |
| 2. Структура (frontmatter, naming, body, refs) | **Anthropic canonical** (через `skill-creator`) | `tools:`, gerund-naming, progressive disclosure, < 500 строк |
| 3. Description style | **Anthropic canonical** | «what + when» both, third-person, specific terms |
| 4. Testing methodology | **Obra writing-skills** | RED (baseline без skill) → GREEN (skill + verify) → REFACTOR (close loopholes) |
| 5. Benchmarking | **`skill-creator`** | Эта capability — гипотетически только у Anthropic-stack, не у Obra |
| 6. Promote stable | brain `scripts/install.sh` + `manifest.json` bump | — |
В Pravila v2 (после bump) указать:
- `tools:` field — required for any custom skill в brain v2
- Description style — Anthropic «what + when»
- Testing — Obra RED-GREEN-REFACTOR (особенно для discipline skills)
- Iron Law remains: **no skill without failing test first**
---
## Что нельзя зафиксировать до install
Следующие пункты остаются **гипотетическими** до установки `skill-creator` и `claude-code-setup`:
1. **Конкретный workflow `skill-creator`** — какие командные триггеры, какой phase model
2. **Benchmarking механизм** — какие метрики измеряются, как настраивается eval harness
3. **Совместимость `tools:` field** с frontmatter Obra skills — будет ли warning при mixed conventions
4. **Recommendations `claude-code-setup`** на brain repo — внешний валидация нашего ручного shortlist 15 плагинов
5. **`claude-code-setup` поведение** — auto-applies recommendations или show-only
---
## Next steps (post-install)
1. Установка от Дмитрия (см. вверху)
2. Read [`~/.claude/plugins/cache/claude-plugins-official/skill-creator/skills/skill-creator/SKILL.md`](C:/Users/Administrator/.claude/plugins/cache/claude-plugins-official/skill-creator/skills/skill-creator/SKILL.md) — точные правила
3. Read [`~/.claude/plugins/cache/claude-plugins-official/claude-code-setup/...`](C:/Users/Administrator/.claude/plugins/cache/claude-plugins-official/claude-code-setup/) — что внутри плагина
4. Запустить `claude-code-setup` analysis на `c:/моя/проекты/claude-brain/` — получить recommendations
5. Сверить #8 recommendations с нашим ручным shortlist 15 плагинов — найти совпадения / расхождения
6. Применить `skill-creator` audit на existing skills из 4 установленных плагинов (по доступу к их SKILL.md)
7. Зафиксировать финальные выводы Phase 0 в `docs/brain-v2-phase-0-final.md` + memory + spec для Phase 1
---
## Ограничения, явно не верифицированные
- **Не верифицировал** что `skill-creator` действительно использует canonical structure из `anthropic-best-practices.md` (он мог отличаться)
- **Не верифицировал** что `claude-code-setup` recommendations включают нашу marketplace `superpowers-dev` (от obra)
- **Не верифицировал** скорость анализа `claude-code-setup` на репо размера brain v1 (3122-строчный HTML, ~30 файлов, 7 hook .py)
- **Не верифицировал** что обновление dependencies plugin'ов не сломает существующий workflow brain v1
@@ -0,0 +1,255 @@
# Session 2026-05-11 — Brain v1.0 Bootstrap
**Дата:** 2026-05-11 (ночная сессия с переходом из 2026-05-10)
**Скоуп:** Извлечение «мозга Claude» из проекта Лидерра в независимый репозиторий + публикация на GitHub.
**Итог:** Brain v1.0 опубликован — `CoralMinister/claude-brain` (private), 14 commits + tag `brain-v1.0`, 8 sync-скриптов с TDD, end-to-end install+verify работают.
**Контекст-родитель:** Этот session log — отдельный документ. Architecture spec — [../architecture.md](../architecture.md) (копия Liderra spec на момент bootstrap).
---
## 1. Pre-bootstrap решения пользователя
| Решение | Выбор |
|---|---|
| Mode | Economy 0% (полная rigor — full reads, real outputs, file:line refs, no "should work" claims) |
| Execution | Subagent-Driven Development (фресный субагент per Phase, two-stage review для TDD-фаз) |
| Worktree | Не нужен (новый repo, не модификация Лидерры in-place) |
| Phase 0 Task 0.4 — rotate MAGIC_API_KEY | SKIP (deferred; masking placeholder обеспечивает security) |
| Phase 8.2 — GitHub repo | EXECUTE (опция (c) — repo создан вручную через web UI, потом push через token URL) |
---
## 2. Phase-by-phase хронология (с commit SHAs)
### Phase 0 — Pre-bootstrap discovery
**Commit Лидерры:** `b53ee28` (docs: brain bootstrap discovery results)
**Артефакт:** `docs/superpowers/specs/2026-05-10-brain-bootstrap-discovery-results.md` (317 строк)
**Verified:**
- `claude` CLI: 2.1.138 (Claude Code), но **НЕ в `$PATH`** — лежит в VSCode extension binary `C:\Users\Administrator\.vscode\extensions\anthropic.claude-code-2.1.138-win32-x64\resources\native-binary\claude.exe`
- `claude plugin` subcommands: `disable|enable|install|list|marketplace|prune|tag|uninstall|update|validate`
- **`claude plugin marketplace add`** — правильная форма (плагин-вложенная), НЕ `claude marketplace add`
- jq 1.8.1 (установлен через `choco install jq -y` во время Phase 0 — было MISSING, system-state-change)
- python 3.14.4 (no `python3` alias — скрипты должны использовать `python`)
- git 2.54.0
- **gh CLI** NOT installed
- gitleaks 8.30.1 (locally в `c:/моя/проекты/портал crm/Документация/bin/gitleaks.exe`)
- jq deep-merge: `+` form broken ("Cannot index object with number"); **рабочая форма** `jq -s '.[0] * {mcpServers: (.[0].mcpServers * .[1].mcpServers)}'` ИЛИ `jq --slurpfile brain ...`
- `~/.claude/backups/` glob: реально `*.backup.<unix_ms>`, НЕ `*.json` (5 backups содержат старый un-masked API_KEY — local-only, no git exposure)
### Phase 1 — Brain repo skeleton
**Commit brain:** `1e68fa9` (chore: initial brain repo scaffold)
**Файлы:** `.gitignore` (27 lines — plan estimate 22 был занижен), `experiments/README.md`, `experiments/.gitkeep`
### Phase 2 — Extract artifacts
**Commit brain:** `ed9bade` (feat: extract brain artifacts)
**21 файл:**
- `project-files/`: CLAUDE.md.template (266) + 4 docs templates (Pravila 720 / Plugin_stack 916 / Tooling 613 / CHANGELOG) + visualization HTML (3122) + .mcp.json.template (3 universal MCP, laravel-boost dropped)
- `user-level-files/`: 10 hook scripts + settings-fragment.json (enabledPlugins+permissions+hooks) + marketplaces.json (3) + plugins-manifest.json (4 plugins pinned) + mcp-user.template.json (magic с placeholder)
**Security gate:** gitleaks scan — `no leaks found` (793.91 KB scanned in 277ms). API_KEY masked через `<<MAGIC_API_KEY>>`.
### Phase 3 — Library scripts TDD
**Commits brain (5):**
- `9557109` common.sh (log_*, require_cmd, make_backup_dir) — 4 tests
- `0ba32c2` merge-settings.sh (jq --slurpfile assignment для replace) — 5 tests
- `c37fd3c` merge-mcp.sh (jq --slurpfile pattern) — 6 tests
- `042316e` setup-secrets.sh (--secret/--skip/--list modes) — 4 tests
- `ba0a28b` install-plugins.sh (claude plugin marketplace add) — 2 tests
### Phase 4 — Main scripts TDD
**Commits brain (3):**
- `dd238e5` verify.sh (.brain-version + sha256 + strict-secrets) — 2 tests
- `6949a9d` install.sh (orchestrator, project/user mode detection) — 4 tests
- `3d24925` extract.sh (reverse sync diff/apply) — 2 tests
### Phase 5 — Meta docs
**Commit brain:** `917ef33` (docs: brain meta documentation + manifest.json)
**11 файлов:** CLAUDE.md (37), README.md (47), CHANGELOG.md (38), manifest.json (32, sha256 для 23 файлов), docs/architecture.md (778, copy of Liderra spec), docs/how-to-use-brain.md (42), docs/how-to-experiment.md (42), docs/secrets-and-tokens.md (55), docs/consumer-projects.md (20), user-level-files/README.md (15), project-files/README.md (17).
### Phase 6+7 — CI + verification
**Commit brain:** `97b5da3` (ci: GitHub Actions workflow)
**CI workflow:** Python syntax + JSON valid + 8 script tests + 3 hook test files + gitleaks + markdownlint
**Verification:**
- gitleaks: 0 findings (926.75 KB scanned)
- 8/8 script tests OK
- 64/64 hook subtests PASS (54 economy-mode + 4 economy-self-check + 6 economy-state-guard)
- install.sh `--dry-run` на Лидерре — `Detected mode: project` + exit 0 (через `BRAIN_ROOT_OVERRIDE=1`)
### Phase 8.1 — Tag
**Brain tag:** `brain-v1.0` (annotated, объект SHA менялся)
### Phase 8.2 — GitHub push (был BLOCKED → resolved)
**Block:** fine-grained PAT (используется в Liderra) не имеет `Administration: Write` permission на user-level. POST `/user/repos` → HTTP 403 «Resource not accessible by personal access token».
**Resolution:** Пользователь создал repo вручную через https://github.com/new (private, empty). Push via token URL:
```bash
git branch -M main # master → main (Windows git default vs GitHub default)
git remote add origin "https://${GITHUB_TOKEN}@github.com/CoralMinister/claude-brain.git"
git push -u origin main # 14 commits pushed
git push origin brain-v1.0 # tag pushed
git remote set-url origin "https://github.com/CoralMinister/claude-brain.git" # token stripped
```
### Phase 9 — Self-test (revealed 5 critical bugs)
**Bug 1:** `merge-mcp.sh` через `jq --slurpfile` fails на Cyrillic paths Windows MSYS2 (`Could not open` — jq C-level fopen не понимает UTF-8 path).
**Bug 2:** `install.sh ${rel%.template}` — только trailing `.template`, не middle segment. `CHANGELOG_claude_md.template.md` оставался с `.template.` внутри.
**Bug 3:** manifest.json хранит brain-repo paths, verify.sh ищет target paths — pathing semantic mismatch (verify не может пройти на real consumer install).
**Bug 4:** `make_backup_dir` создаёт пустой dir, файлы не backupятся — overwrite consumer'а необратим.
**Bug 5:** brain's `project-files/README.md` overwrites consumer's `README.md` (оба попадают в target root после template stripping).
### Phase 9b — Hotfix
**Commit brain:** `52584df` (fix(scripts): 5 critical bugs from Phase 9 self-test) — 7 files changed / +277 / -35, ONE atomic commit.
**Fixes:**
- **Bug 1:** `merge-mcp.sh``jq --argjson brain "$(cat ...)"` вместо `--slurpfile` (cat handles UTF-8 paths fine, jq получает pre-parsed JSON)
- **Bug 2:** `install.sh``dst_rel="${rel//.template\./.}; dst_rel="${dst_rel%.template}"` (strip middle + trailing)
- **Bug 3:** manifest.json restructured into `files: {project-mode, user-mode, brain-internal}` maps с target-relative paths; verify.sh detects mode, picks matching map
- **Bug 4:** install.sh — `rsync -a --exclude .git/ --exclude .brain-backup-*` fallback `cp -r` ПЕРЕД modifications
- **Bug 5:** install.sh skip `README.md` in copy loops (brain READMEs — internal docs, не consumer content)
**Re-test:** install + verify end-to-end PASS на `/tmp/test-consumer-fix-final-udzgWI`. +17 new test assertions added (12 install + 9 merge-mcp + 6 verify).
**Tag re-pointed:** `brain-v1.0` annotation preserved, target moved `97b5da3``52584df` (tag не был ещё push'нут).
### Phase 10 — Liderra marker + memory
**Commit Лидерры:** `d598aec` на `supplier-sync-plan3` (subagent landed там потому что это был current branch). `.brain-version` = `brain-v1.0\nsha: 52584df34e1a8b2117b3f254731b06f52d84645c`.
**Memory:** `project_claude_brain.md` (новый), MEMORY.md (entry added), `project_state.md` (top), `reference_github.md` (планируемый repo упомянут).
### Phase 8.2 follow-up — GitHub publish + Liderra branch cleanup
- ✅ Brain pushed (см. Phase 8.2 resolution выше)
- ✅ Cherry-pick `d598aec` → main (новый SHA `8965650`), main локально 3 commits ahead origin/main
-`git rebase --onto 8c70255 d598aec supplier-sync-plan3``d598aec` удалён из feature branch; 9 Plan 3 commits replayed с новыми SHA (`8a611eb..8fc9d3e`)
- ⏸ Push main BLOCKED — pre-push lychee нашёл 33 битые ссылки в 4 .md (28 в Plan 3 supplier-sync docs из прошлой сессии, 5 в моих brain extraction spec/plan). Pre-existing problem. User выбрал skip push до отдельной сессии для починки.
---
## 3. Обнаруженные плановые баги (8 total)
Plan был написан до bootstrap. Эти баги обнаружены при первом реальном запуске:
| ID | Где | Симптом | Fix |
|---|---|---|---|
| A | Plan §Task 3.3 | `jq -s '.[0] \| .mcpServers = (... + .[1].mcpServers)'` → "Cannot index object with number" | `jq --slurpfile brain ...` или `--argjson` |
| B | Plan §Task 3.5 | `claude marketplace add` → no such subcommand | `claude plugin marketplace add` |
| C | Plan §Task 3.5 | `claude` not in `$PATH` (VSCode extension only) | Fallback to JSON edit mode в install-plugins.sh |
| D | Plan §Task 3.2 | `jq '.[0] * {enabledPlugins: ...}'` → recursive merge (union, not replace) | Explicit `--slurpfile $frag` + `.key = $frag[0].key` assignment |
| E | Plan §Task 4.2 | `cp -r project-files/* target/` не strip'ает `.template` суффикс | `find` loop + `dst_rel="${rel%.template}"` |
| F | Plan §Task 4.3 | extract.sh middle-elif heuristic был syntactically buggy | Cleaner two-step fallback |
| Phase 9 #1 | install.sh runtime | Cyrillic path → jq fopen fail | `--argjson "$(cat ...)"` |
| Phase 9 #2 | install.sh runtime | `${rel%.template}` only trailing | `${rel//.template\./.}` + `${rel%.template}` |
| Phase 9 #3 | verify.sh + manifest | Path semantic mismatch | manifest.files → {project-mode, user-mode, brain-internal} maps |
| Phase 9 #4 | common.sh + install.sh | Empty backup | rsync/cp -r target tree to backup BEFORE modifications |
| Phase 9 #5 | install.sh | README.md overwrite consumer | Skip brain READMEs in copy loops |
**Итого:** 11 багов обнаружены и исправлены за bootstrap. План v1.0 был ~70% корректен — оставшиеся 30% потребовали runtime discovery.
---
## 4. Quirks среды (Windows Server 2022 + Git Bash + VSCode)
1. **Cyrillic paths**: jq на MSYS2 не открывает файлы с UTF-8 путями. Workaround: `--argjson "$(cat ...)"` вместо `--slurpfile`.
2. **`python` not `python3`**: только `python` alias существует.
3. **`claude` CLI vs `claude plugin marketplace`**: subcommand структура `claude plugin <sub>` (включая `marketplace`).
4. **Git default branch на Windows = `master`**, GitHub default = `main`. `git branch -M main` нужен перед первым push.
5. **`core.autocrlf=true`**: git нормализует EOL на checkout. Может изменять sha256 файла при clone на другой машине. Для brain v1.0 — within-machine sync, не проблема.
6. **gitleaks путь**: либо в `$PATH`, либо в `c:/моя/проекты/портал crm/Документация/bin/gitleaks.exe` (предустановлен в Liderra).
7. **Fine-grained PAT vs classic PAT**: fine-grained не имеет user-level Administration:Write по умолчанию — POST `/user/repos` → 403. Classic PAT с `repo` scope работает, или создать repo через web UI.
8. **Lefthook pre-push hooks**: gitleaks-full-history + lychee + larastan + pint + pest + markdownlint + cspell. Можно ловить на pre-existing проблемах не введённых текущим коммитом.
9. **`~/.claude/backups/` filename pattern**: `*.backup.<unix_ms>`, НЕ `*.json` (могут содержать unredacted API_KEY).
---
## 5. Outstanding items для будущих сессий
### Critical
1. **Push Liderra main → origin/main** — 3 commits ahead, blocked by lychee (33 broken links). Опции:
- Fix broken links в 4 .md (Plan 3 plan/spec + мои brain plan/spec) — нужна правка relative paths
- Добавить exclude patterns в `.lychee.toml`
2. **Rotate MAGIC_API_KEY на 21st.dev** (Phase 0 Task 0.4 deferred). Текущий ключ formally compromised (виден в session logs).
### Important
3. **Tooling/Pravila обновить** — добавить brain extraction в реестр инструментов как infrastructure category (#34 claude-brain или similar). После push main.
4. **gh CLI install**`choco install gh` для будущих GitHub операций без curl boilerplate.
5. **Plan 3 supplier-sync docs broken links** — Plan 3 documentation использует `app/...` paths из `docs/superpowers/plans/...` но resolve неправильно. Hardcoded `../../../app/...` или `.lychee.toml` exclude.
### Nice-to-have
6. **`.gitattributes`** в brain repo с `* -text` для CRLF stability (для clone на другие machines с разными autocrlf settings).
7. **Tag immutability**: `brain-v1.0` был moved из `97b5da3``52584df` после Phase 9b hotfix. Push не было между. Для будущих версий — не moveать после push, лучше bump до `brain-v1.0.1`.
8. **Mock `claude` CLI in install-plugins-test**: пишет в global `/tmp/claude-calls.log` — race condition если parallel CI runs.
---
## 6. Workflow learnings
### Что работало хорошо
- **TDD discipline на bash scripts** — каждый failing-test-first cycle поймал по 1-3 бага до commit'а.
- **Subagent-driven dispatch per Phase** — 16 subagent dispatches (вместо 47 по плану TDD-granularity) — эффективный balance cost/quality.
- **Security gates (gitleaks)** — на Phase 2 (extract) и Phase 7 (pre-release). Поймали бы leak'и до commit'а.
- **Plan corrections inline in dispatcher prompt** — Phase 0 нашёл baги в плане; не редактировал план, передавал corrections в каждый последующий subagent через prompt. Чистая commit-история плана.
### Что нужно улучшить в следующий раз
- **Plan corrections должны быть applied к самому плану** перед dispatch — если plan живёт в repo и читается несколькими subagent'ами, inline corrections в prompt становятся single-point-of-failure.
- **Mock CLI bin (Phase 3 Task 3.5)** — `claude` mock должен был сразу матчить real subcommand структуру. Plan указал устаревший интерфейс, subagent fixed it on the fly.
- **Phase 9 self-test надо было дублировать с TDD-стилем** — 5 багов dropped на нас сразу. Если бы каждый test-консьюмер имел свой failing-test, мы поймали бы их по одному, не batch.
### Decision pattern, который сработал
- **Subagent reports DONE_WITH_CONCERNS** → controller (я) читает concerns, классифицирует как scope/correctness/observation → only correctness ones влияют на следующий dispatch → observation ones flagged в session log без блока.
---
## 7. Файлы и refs
### В brain repo
- `CLAUDE.md` — meta description
- `README.md` — quick start
- `CHANGELOG.md` — v1.0 release notes
- `manifest.json` — sha256 + tool requirements
- `docs/architecture.md` — copy of Liderra spec
- `docs/how-to-use-brain.md` / `how-to-experiment.md` / `secrets-and-tokens.md` / `consumer-projects.md`
- `docs/sessions/2026-05-11-bootstrap-session.md` — этот файл
- `scripts/{install,verify,extract}.sh` + 5 lib helpers + 8 tests + 3 fixtures
- `.github/workflows/ci.yml`
### В Liderra
- `docs/superpowers/specs/2026-05-10-claude-brain-extraction-design.md` (776 строк, design spec)
- `docs/superpowers/plans/2026-05-10-claude-brain-extraction.md` (3430 строк, implementation plan)
- `docs/superpowers/specs/2026-05-10-brain-bootstrap-discovery-results.md` (317 строк, Phase 0 results)
- `.brain-version` (на local main; на supplier-sync-plan3 удалён через rebase)
### В Liderra memory (`~/.claude/projects/c---------------------crm-------------/memory/`)
- `project_claude_brain.md` — brain architecture summary
- `MEMORY.md` — index entry added
- `project_state.md` — top updated с brain extraction status
- `reference_github.md` — claude-brain repo URL добавлен
---
## 8. Метрики
| Метрика | Значение |
|---|---|
| Brain commits total | 14 (12 feature/docs + 2 hotfix/CI) |
| Brain tag | `brain-v1.0` @ `52584df` |
| Script tests passing | 8/8 (54 assertions всего, +17 added в Phase 9b) |
| Python hook subtests | 64/64 (54 economy-mode + 4 self-check + 6 state-guard) |
| Gitleaks findings | 0 (за все сканы) |
| Bugs обнаружено и исправлено | 11 (6 plan + 5 runtime) |
| Files в manifest.json | 23 |
| Brain repo size | ~270 KB |
| Subagent dispatches | 16 (включая Phase 9 + 9b) |
| Liderra commits созданные сессией | 2 (b53ee28 discovery + 8965650 marker on main) |
| Liderra commits отрезанные ребейзом | 1 (d598aec на supplier-sync-plan3) |
---
## 9. Followup (2026-05-11, позже)
Короткая follow-up сессия в новом workspace `c:/моя/проекты/claude-brain/`:
- **Closed Outstanding #4 (gh CLI install)** — поставлен через `choco install gh -y`, версия `gh 2.92.0` в `/c/Program Files/GitHub CLI/gh.exe`. PATH в текущем bash не подхватился (Bash tool inherited PATH со старта Claude Code до choco install) — вызов абсолютным путём.
- **gh auth уже работал** через env `GITHUB_TOKEN` как `CoralMinister` (без `gh auth login`).
- **Token scope ограничен:** `contents:read` ✓, `issues:read`/`pull_requests:read` ✗ (GraphQL "Resource not accessible by personal access token"). Если для будущих задач понадобится Issues/PRs — расширить scope.
- **winget отсутствует** на Server 2022 Eval (как и предполагалось в outstanding #4 fallback).
- **Memory bootstrap для brain workspace** в `~/.claude/projects/c--------------claude-brain/memory/`: `MEMORY.md` + 4 entries (user_role, reference_bootstrap_session, project_outstanding_items, reference_environment).
**Конец session log.**
@@ -0,0 +1,637 @@
# Brain Plugin Routing Implementation Plan
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** Create `docs/brain-plugin-routing.md` v1.0 + update 5 related artifacts so brain repo gets explicit, non-PSR plugin selection rules that resolve the 8 sources of ambiguity (К1-К8) identified in the design spec.
**Architecture:** Single new normative document (~275 lines) covers reestr + disabled-in-brain soft-rule + routing table + categorization + install checklist + update procedure. CLAUDE.md root gets a short link. `plugins-manifest.json` gains opt-in `target` field for consumer-targeting (D9). `settings-fragment.json` adds 2 Phase 0 meta plugins. `.brain-version` + CHANGELOG.md bump to v1.1.
**Tech Stack:** Markdown, JSON (jq for validation), git atomic commits.
**Spec:** [docs/superpowers/specs/2026-05-11-brain-plugin-routing-design.md](../specs/2026-05-11-brain-plugin-routing-design.md) (commit `dbd80e9`)
---
## File Structure
| File | Action | Responsibility |
|---|---|---|
| `docs/brain-plugin-routing.md` | CREATE | главный нормативный документ; 7 разделов |
| `CLAUDE.md` (root) | UPDATE | оперативная карта brain'а; +5-7 строк ссылка на routing.md |
| `user-level-files/plugins-manifest.json` | UPDATE | snapshot pinned versions; +`target` field (D9) + 2 новые entries |
| `user-level-files/settings-fragment.json` | UPDATE | `enabledPlugins` snapshot; +2 entries skill-creator + claude-code-setup |
| `.brain-version` (root) | UPDATE | self-marker brain'а; v1.0 → v1.1 |
| `CHANGELOG.md` (root) | UPDATE | history brain'а; +v1.1 entry |
**Total:** 6 файлов изменяется; 1 создаётся (routing.md). 5 атомарных commit'ов:
- Task 1 → routing.md
- Task 2 → CLAUDE.md
- Task 3 → plugins-manifest.json
- Task 4 → settings-fragment.json
- Task 5 → .brain-version + CHANGELOG.md (атомарный bump согласно D11)
Task 6 — verification only, без commit'а.
---
### Task 1: Create `docs/brain-plugin-routing.md` v1.0
**Files:**
- Create: `docs/brain-plugin-routing.md`
**Source of content:** [docs/superpowers/specs/2026-05-11-brain-plugin-routing-design.md §3.1-§3.7](../specs/2026-05-11-brain-plugin-routing-design.md). Каждый раздел spec'а — это section в routing.md.
**Mapping spec → routing.md разделы:**
- spec §3.1 → routing.md §1 (Шапка + Принципы)
- spec §3.2 → routing.md §2 (Реестр + Disabled-in-brain)
- spec §3.3 → routing.md §3 (Routing table + tie-breakers)
- spec §3.4 → routing.md §4 (Categorization 5 + распределение 22 строк)
- spec §3.5 → routing.md §5 (Install checklist 5 подсекций)
- spec §3.6 → routing.md §6 (Update procedure)
- spec §3.7 → routing.md §7 (Финальная формула + свойства)
- [ ] **Step 1: Write pre-edit grep test (RED)**
Run: `grep -c "## §" "c:/моя/проекты/claude-brain/docs/brain-plugin-routing.md" 2>/dev/null || echo 0`
Expected: `0` (файл ещё не существует или есть, но без `## §` секций)
- [ ] **Step 2: Implement — write full routing.md per spec §3.1-§3.7**
Содержание полностью derivable из committed design spec. Engineer должен открыть spec и пройти секции §3.1 → §3.7 последовательно. **Не** добавлять контент не из spec'а; **не** пропускать секции.
Ключевые конкретные элементы которые должны попасть в файл:
- §1 — версия v1.0, дата 2026-05-11, явная ссылка на CLAUDE.md и PSR template (с пометкой «не применяется к brain»), 3 принципа
- §2.1 — таблица 6 плагинов с категориями process/meta/consumer-UI
- §2.2 — soft-rule с триггером по `pwd` начинается с `c:/моя/проекты/claude-brain/`, edge case для structural visualization HTML edit
- §3 — 17 routing-rows + 3 tie-breakers
- §4.1 — 5 категорий (meta / consumer-universal / consumer-stack-gated / consumer-UI / skip)
- §4.2 — таблица 22 строк (4 legacy + 17 shortlist + 1 cut)
- §4.3 — правило установки нового плагина
- §5.1-§5.5 — 5 install подсекций с шагами; §5.1 шаг 2 явно говорит что на этой машине primary install = `git clone` (Phase 0 Path 2), preferred-future = `/plugin install`
- §6.1-§6.4 — Update procedure
- §7 — финальная формула + свойства
- [ ] **Step 3: Verify section count (GREEN test)**
Run: `grep -c "^## §" "c:/моя/проекты/claude-brain/docs/brain-plugin-routing.md"`
Expected: `7` (ровно 7 разделов §1-§7)
- [ ] **Step 4: Verify key tokens present**
Run: `grep -c "soft-rule\|consumer-universal\|consumer-stack-gated\|consumer-UI\|skill-creator\|claude-md-improver\|skip" "c:/моя/проекты/claude-brain/docs/brain-plugin-routing.md"`
Expected: ≥ 7 (одна или больше встречаемость каждой ключевой категории/токена)
- [ ] **Step 5: Verify line count target**
Run: `wc -l "c:/моя/проекты/claude-brain/docs/brain-plugin-routing.md"`
Expected: 250-300 строк (per spec §3 target ~275).
- [ ] **Step 6: Commit atomic**
```bash
cd "c:/моя/проекты/claude-brain"
git add docs/brain-plugin-routing.md
git commit -m "$(cat <<'EOF'
feat(brain-plugin-routing): create routing rules v1.0
Normative document for plugin selection in brain repo. Implements design
spec dbd80e9. Covers reestr, disabled-in-brain soft-rule, routing table,
categorization, install checklist, and update procedure.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EOF
)"
```
Expected: 1 file changed, ~275 insertions.
---
### Task 2: Update root `CLAUDE.md` — add link to routing.md
**Files:**
- Modify: `CLAUDE.md` (brain root) — append section after existing structure
**Goal:** короткая (5-7 строк) ссылка с описанием на новый routing документ.
- [ ] **Step 1: Read current CLAUDE.md state (RED — verify no plugin section yet)**
Run: `grep -c "brain-plugin-routing\|Plugin routing\|выбор плагина" "c:/моя/проекты/claude-brain/CLAUDE.md"`
Expected: `0` (никаких упоминаний routing.md пока нет)
- [ ] **Step 2: Implement — append section to CLAUDE.md**
После раздела «## Что НЕ редактировать прямо в этом репо» (line ~28 в текущей версии — проверить точное место), перед разделом «## Безопасность», вставить:
```markdown
## Выбор плагина и установка нового
Brain имеет собственные правила выбора плагина — **не PSR template** (тот для consumer'а с UI/Vue стеком, в brain не применяется).
- Какой плагин брать для задачи / как разрешить overlap / куда поставить новый — см. [docs/brain-plugin-routing.md](docs/brain-plugin-routing.md) (v1.0+)
- При работе в brain repo плагины `frontend-design` и `ui-ux-pro-max` игнорируются (soft-rule §2.2 routing.md) — несмотря на их `enabledPlugins: true` на user-level
- При установке нового плагина — atomic procedure из §5 routing.md (6 артефактов)
```
- [ ] **Step 3: Verify section added (GREEN test)**
Run: `grep -c "brain-plugin-routing" "c:/моя/проекты/claude-brain/CLAUDE.md"`
Expected: `1` (одна ссылка)
Run: `grep -c "## Выбор плагина" "c:/моя/проекты/claude-brain/CLAUDE.md"`
Expected: `1`
- [ ] **Step 4: Verify CLAUDE.md still parses as markdown**
Run: `head -60 "c:/моя/проекты/claude-brain/CLAUDE.md"`
Expected: вывод содержит новый раздел между «## Что НЕ редактировать прямо в этом репо» и «## Безопасность»
- [ ] **Step 5: Commit atomic**
```bash
cd "c:/моя/проекты/claude-brain"
git add CLAUDE.md
git commit -m "$(cat <<'EOF'
docs(brain): link CLAUDE.md to brain-plugin-routing v1.0
Add short section pointing to new routing document and disabled-in-brain
soft-rule for FD/UPM.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EOF
)"
```
Expected: 1 file changed, ~10 insertions.
---
### Task 3: Update `user-level-files/plugins-manifest.json` — add `target` field + 2 Phase 0 entries
**Files:**
- Modify: `user-level-files/plugins-manifest.json`
**Goal:** реализовать D9 ENUM `target` field и зафиксировать skill-creator + claude-code-setup в brain manifest'е (К3 — закрытие drift'а Phase 0 Path 2).
**Current state ([user-level-files/plugins-manifest.json](../../../user-level-files/plugins-manifest.json)):** 4 entries — ui-ux-pro-max, claude-md-management, superpowers, frontend-design. Нет поля `target`.
**Target state:**
- 6 entries (4 legacy + skill-creator + claude-code-setup)
- Каждый entry имеет поле `target` со значением:
- `superpowers``"user-level"`
- `claude-md-management``"user-level"`
- `skill-creator``"user-level"` (meta, brain only)
- `claude-code-setup``"user-level"` (meta, brain only)
- `frontend-design``"user-level+consumer"` (consumer-UI category, активен и в brain user-level, и для Liderra)
- `ui-ux-pro-max``"user-level+consumer"` (consumer-UI category)
- skill-creator + claude-code-setup entries — installMethod = `"manual-git-clone-Path2"` (как зафиксировано в [project_brain_v2_phase0.md:24](../../../../../Users/Administrator/.claude/projects/c--------------claude-brain/memory/project_brain_v2_phase0.md))
- [ ] **Step 1: Write jq verification test (RED)**
Run:
```bash
jq -e '.plugins | to_entries | all(.value[0] | has("target"))' "c:/моя/проекты/claude-brain/user-level-files/plugins-manifest.json"
```
Expected: `false` (ни один entry не имеет поля `target` — fail RED)
Run:
```bash
jq '.plugins | keys | length' "c:/моя/проекты/claude-brain/user-level-files/plugins-manifest.json"
```
Expected: `4` (только 4 legacy entries сейчас)
- [ ] **Step 2: Read current actual gitCommitSha for Phase 0 plugins**
```bash
ls -la "$HOME/.claude/plugins/cache/claude-plugins-official/skill-creator/" 2>&1 | head -20
ls -la "$HOME/.claude/plugins/cache/claude-plugins-official/claude-code-setup/" 2>&1 | head -20
cat "$HOME/.claude/plugins/installed_plugins.json" | jq '."skill-creator@claude-plugins-official", ."claude-code-setup@claude-plugins-official"' 2>&1
```
Записать фактические значения `installPath`, `version`, `installedAt`, `lastUpdated`, `gitCommitSha` для skill-creator и claude-code-setup. Использовать их в Step 3.
- [ ] **Step 3: Implement — write new plugins-manifest.json**
Полный новый JSON:
```json
{
"version": 2,
"plugins": {
"ui-ux-pro-max@ui-ux-pro-max-skill": [
{
"scope": "user",
"installPath": "C:\\Users\\Administrator\\.claude\\plugins\\cache\\ui-ux-pro-max-skill\\ui-ux-pro-max\\2.5.0",
"version": "2.5.0",
"installedAt": "2026-05-08T04:27:19.451Z",
"lastUpdated": "2026-05-08T04:27:19.451Z",
"gitCommitSha": "b7e3af80f6e331f6fb456667b82b12cade7c9d35",
"target": "user-level+consumer",
"category": "consumer-UI"
}
],
"claude-md-management@claude-plugins-official": [
{
"scope": "user",
"installPath": "C:\\Users\\Administrator\\.claude\\plugins\\cache\\claude-plugins-official\\claude-md-management\\1.0.0",
"version": "1.0.0",
"installedAt": "2026-05-09T11:00:16.145Z",
"lastUpdated": "2026-05-09T11:00:16.145Z",
"gitCommitSha": "76b35e91d1c99c090b1a08dade53bcc5e352c1b2",
"target": "user-level",
"category": "meta"
}
],
"superpowers@superpowers-dev": [
{
"scope": "user",
"installPath": "C:\\Users\\Administrator\\.claude\\plugins\\cache\\superpowers-dev\\superpowers\\5.1.0",
"version": "5.1.0",
"installedAt": "2026-05-09T11:57:22.170Z",
"lastUpdated": "2026-05-09T11:57:22.170Z",
"gitCommitSha": "f2cbfbefebbfef77321e4c9abc9e949826bea9d7",
"target": "user-level",
"category": "process"
}
],
"frontend-design@claude-plugins-official": [
{
"scope": "user",
"installPath": "C:\\Users\\Administrator\\.claude\\plugins\\cache\\claude-plugins-official\\frontend-design\\unknown",
"version": "unknown",
"installedAt": "2026-05-09T13:02:38.251Z",
"lastUpdated": "2026-05-10T21:02:22.266Z",
"gitCommitSha": "76b35e91d1c99c090b1a08dade53bcc5e352c1b2",
"target": "user-level+consumer",
"category": "consumer-UI"
}
],
"skill-creator@claude-plugins-official": [
{
"scope": "user",
"installPath": "<FILL FROM STEP 2>",
"version": "<FILL FROM STEP 2>",
"installedAt": "<FILL FROM STEP 2>",
"lastUpdated": "<FILL FROM STEP 2>",
"gitCommitSha": "<FILL FROM STEP 2 OR n/a IF MANUAL>",
"installMethod": "manual-git-clone-Path2",
"target": "user-level",
"category": "meta"
}
],
"claude-code-setup@claude-plugins-official": [
{
"scope": "user",
"installPath": "<FILL FROM STEP 2>",
"version": "<FILL FROM STEP 2>",
"installedAt": "<FILL FROM STEP 2>",
"lastUpdated": "<FILL FROM STEP 2>",
"gitCommitSha": "<FILL FROM STEP 2 OR n/a IF MANUAL>",
"installMethod": "manual-git-clone-Path2",
"target": "user-level",
"category": "meta"
}
]
}
}
```
**ВАЖНО:** в Step 2 получены реальные значения для skill-creator + claude-code-setup. Подставить их вместо `<FILL FROM STEP 2>`. Не оставлять placeholder'ы в финальном файле.
- [ ] **Step 4: Run jq verification (GREEN test)**
Run:
```bash
jq -e '.plugins | to_entries | all(.value[0] | has("target"))' "c:/моя/проекты/claude-brain/user-level-files/plugins-manifest.json"
```
Expected: `true`
Run:
```bash
jq '.plugins | keys | length' "c:/моя/проекты/claude-brain/user-level-files/plugins-manifest.json"
```
Expected: `6`
Run:
```bash
jq -e '.plugins | to_entries | all(.value[0].target | test("^(user-level|consumer|user-level\\+consumer)$"))' "c:/моя/проекты/claude-brain/user-level-files/plugins-manifest.json"
```
Expected: `true` (все `target` соответствуют ENUM из D9)
- [ ] **Step 5: Verify no JSON syntax errors**
Run: `jq '.' "c:/моя/проекты/claude-brain/user-level-files/plugins-manifest.json" > /dev/null && echo OK`
Expected: `OK`
- [ ] **Step 6: Commit atomic**
```bash
cd "c:/моя/проекты/claude-brain"
git add user-level-files/plugins-manifest.json
git commit -m "$(cat <<'EOF'
feat(brain-plugins): add target field + register Phase 0 plugins in manifest
Implements D9 ENUM (user-level/consumer/user-level+consumer) and closes
Phase 0 install drift (К3) by registering skill-creator and claude-code-setup
in brain manifest. Also tags each entry with category from routing.md §4.1.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EOF
)"
```
Expected: 1 file changed.
---
### Task 4: Update `user-level-files/settings-fragment.json` — add 2 Phase 0 entries to enabledPlugins
**Files:**
- Modify: `user-level-files/settings-fragment.json`
**Goal:** brain settings-fragment отражает реальное состояние `~/.claude/settings.json` после Phase 0 (закрытие drift'а К3).
- [ ] **Step 1: Write jq verification test (RED)**
Run:
```bash
jq -e '.enabledPlugins | has("skill-creator@claude-plugins-official")' "c:/моя/проекты/claude-brain/user-level-files/settings-fragment.json"
```
Expected: `false`
Run:
```bash
jq -e '.enabledPlugins | has("claude-code-setup@claude-plugins-official")' "c:/моя/проекты/claude-brain/user-level-files/settings-fragment.json"
```
Expected: `false`
Run:
```bash
jq '.enabledPlugins | keys | length' "c:/моя/проекты/claude-brain/user-level-files/settings-fragment.json"
```
Expected: `4`
- [ ] **Step 2: Implement — add 2 keys to enabledPlugins**
Найти секцию `"enabledPlugins": {` (line ~2) и добавить две строки ПЕРЕД закрывающей `}` секции:
```json
"enabledPlugins": {
"ui-ux-pro-max@ui-ux-pro-max-skill": true,
"claude-md-management@claude-plugins-official": true,
"frontend-design@claude-plugins-official": true,
"superpowers@superpowers-dev": true,
"skill-creator@claude-plugins-official": true,
"claude-code-setup@claude-plugins-official": true
},
```
(Остальная часть файла — `permissions`, `hooks` — не меняется.)
- [ ] **Step 3: Run jq verification (GREEN)**
Run:
```bash
jq -e '.enabledPlugins."skill-creator@claude-plugins-official" == true and .enabledPlugins."claude-code-setup@claude-plugins-official" == true' "c:/моя/проекты/claude-brain/user-level-files/settings-fragment.json"
```
Expected: `true`
Run:
```bash
jq '.enabledPlugins | keys | length' "c:/моя/проекты/claude-brain/user-level-files/settings-fragment.json"
```
Expected: `6`
Run:
```bash
jq 'has("permissions") and has("hooks")' "c:/моя/проекты/claude-brain/user-level-files/settings-fragment.json"
```
Expected: `true` (permissions и hooks остались нетронутыми)
- [ ] **Step 4: Verify JSON valid**
Run: `jq '.' "c:/моя/проекты/claude-brain/user-level-files/settings-fragment.json" > /dev/null && echo OK`
Expected: `OK`
- [ ] **Step 5: Commit atomic**
```bash
cd "c:/моя/проекты/claude-brain"
git add user-level-files/settings-fragment.json
git commit -m "$(cat <<'EOF'
feat(brain-plugins): enable skill-creator + claude-code-setup in settings-fragment
Close Phase 0 install drift (К3) — brain settings-fragment now reflects
the actual state of ~/.claude/settings.json after Phase 0.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EOF
)"
```
Expected: 1 file changed, 2 insertions.
---
### Task 5: Bump `.brain-version` v1.0 → v1.1 + add CHANGELOG.md v1.1 entry (atomic per D11)
**Files:**
- Modify: `.brain-version` (brain root)
- Modify: `CHANGELOG.md` (brain root)
- [ ] **Step 1: Read current state (RED)**
Run:
```bash
cat "c:/моя/проекты/claude-brain/.brain-version"
```
Expected: `brain-v1.0` (или похожий формат — записать актуальное значение для verification)
Run: `head -30 "c:/моя/проекты/claude-brain/CHANGELOG.md"`
Expected: содержит v1.0 entry, не содержит v1.1
- [ ] **Step 2: Get current HEAD sha for `.brain-version` update**
Run: `cd "c:/моя/проекты/claude-brain" && git rev-parse HEAD`
Записать SHA — он попадёт в `.brain-version`.
- [ ] **Step 3: Implement — update `.brain-version`**
Перезаписать `.brain-version` (2 строки):
```
brain-v1.1
sha: <SHA_FROM_STEP_2>
```
- [ ] **Step 4: Implement — add CHANGELOG.md v1.1 entry**
Сверху файла CHANGELOG.md (после header), добавить запись:
```markdown
## brain-v1.1 — 2026-05-11
### Added
- `docs/brain-plugin-routing.md` v1.0 — normative document for plugin selection in brain repo. Resolves 8 sources of ambiguity (К1-К8 from design spec). Covers reestr, disabled-in-brain soft-rule (FD/UPM), routing table (17 overlaps + 3 tie-breakers), categorization (5 categories × 22 plugins), install checklist (5 sub-procedures), update procedure.
- `docs/superpowers/specs/2026-05-11-brain-plugin-routing-design.md` — design spec backing routing.md v1.0.
- `docs/superpowers/plans/2026-05-11-brain-plugin-routing.md` — implementation plan.
- `target` field (ENUM `user-level`/`consumer`/`user-level+consumer`) in `user-level-files/plugins-manifest.json` — implements D9 from design spec.
- `category` field in plugins-manifest (from routing.md §4.1).
- Two new brain manifest entries: `skill-creator@claude-plugins-official` + `claude-code-setup@claude-plugins-official` (Phase 0 install drift closed — К3).
### Changed
- `CLAUDE.md` brain root — new section «Выбор плагина и установка нового» linking to routing.md and noting disabled-in-brain soft-rule.
- `user-level-files/settings-fragment.json``enabledPlugins` extended with skill-creator and claude-code-setup (matching user-level `~/.claude/settings.json` state after Phase 0).
### Notes
- PSR template (`project-files/docs/Plugin_stack_rules.template.md`) is NOT modified — it remains the consumer-side ruleset.
- D11: `.brain-version` and CHANGELOG bumped atomically with brain-plugin-routing v1.0 implementation.
```
- [ ] **Step 5: Verify both edits (GREEN)**
Run:
```bash
cat "c:/моя/проекты/claude-brain/.brain-version"
```
Expected: `brain-v1.1` + sha line
Run:
```bash
grep -c "brain-v1.1" "c:/моя/проекты/claude-brain/CHANGELOG.md"
```
Expected: ≥ 1
- [ ] **Step 6: Commit atomic (D11)**
```bash
cd "c:/моя/проекты/claude-brain"
git add .brain-version CHANGELOG.md
git commit -m "$(cat <<'EOF'
chore(brain-version): bump v1.0 → v1.1 (plugin routing)
Atomic bump per D11. Brain-plugin-routing v1.0 released; CHANGELOG updated.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EOF
)"
```
Expected: 2 files changed.
---
### Task 6: Final verification
**Files:** none modified (read-only verification).
- [ ] **Step 1: git log review**
Run: `cd "c:/моя/проекты/claude-brain" && git log --oneline -7`
Expected (in reverse-chrono):
1. `chore(brain-version): bump v1.0 → v1.1 (plugin routing)`
2. `feat(brain-plugins): enable skill-creator + claude-code-setup in settings-fragment`
3. `feat(brain-plugins): add target field + register Phase 0 plugins in manifest`
4. `docs(brain): link CLAUDE.md to brain-plugin-routing v1.0`
5. `feat(brain-plugin-routing): create routing rules v1.0`
6. `docs(brain-plugin-routing): design spec for plugin selection rules`
7. (previous) `docs(brain-v2): Phase 0 meta-foundation analysis`
- [ ] **Step 2: routing.md sanity check**
Run: `wc -l "c:/моя/проекты/claude-brain/docs/brain-plugin-routing.md"`
Expected: 250-300 строк
Run: `grep -c "## §" "c:/моя/проекты/claude-brain/docs/brain-plugin-routing.md"`
Expected: `7`
- [ ] **Step 3: cross-file consistency check**
Run: `grep -c "brain-plugin-routing" "c:/моя/проекты/claude-brain/CLAUDE.md"`
Expected: ≥ 1
Run:
```bash
jq '.plugins | keys' "c:/моя/проекты/claude-brain/user-level-files/plugins-manifest.json"
```
Expected: 6 keys matching `enabledPlugins` keys.
Run:
```bash
diff <(jq -S '.enabledPlugins | keys' "c:/моя/проекты/claude-brain/user-level-files/settings-fragment.json") <(jq -S '.plugins | keys' "c:/моя/проекты/claude-brain/user-level-files/plugins-manifest.json")
```
Expected: пустой diff (settings-fragment и plugins-manifest имеют одинаковый набор ключей)
- [ ] **Step 4: Brain-version consistency**
Run: `cat "c:/моя/проекты/claude-brain/.brain-version"`
Expected: `brain-v1.1` + valid sha
- [ ] **Step 5: Tree clean**
Run: `git status`
Expected: `nothing to commit, working tree clean`
- [ ] **Step 6: invoke superpowers:verification-before-completion**
Это финальный gate по economy 0% rule. Запустить skill и подтвердить что:
- 5 commit'ов прошли atomic
- routing.md создан per spec
- CLAUDE.md обновлён
- 2 JSON-файла валидны по jq
- `.brain-version` v1.1
- CHANGELOG содержит v1.1 entry
Если verification skill репортит violation — НЕ коммитить ничего нового, найти причину, исправить, повторить verification.
---
## Self-Review
### Spec coverage
| Spec section | Task | Notes |
|---|---|---|
| §1 (проблема, цели, принципы) | Task 1 — routing.md §1 | ✓ |
| §2 (scope in/out) | — | scope соблюдается через outline Task 1-6 (out-of-scope не меняется) |
| §3.1-§3.7 (архитектура документа) | Task 1 | ✓ |
| §4 (D1-D12 decisions) | D1 → Task 1; D2 → Task 1 §2.2; D3 → Task 1 §5; D4 → Task 1 §4.1; D5 → Task 3; D6 → Task 5 (CHANGELOG); D7 → Task 1 line target; D8 → Task 1 §3 routing-table; D9 → Task 3; D10 → не реализовано (deferred); D11 → Task 5 (atomic); D12 → не нужен код (review only) | ✓ покрыто |
| §5 (changeset) | Task 1-5 покрывают 6 файлов | ✓ |
| §6 (открытые вопросы) | Закрыты дефолтами D10-D12 | ✓ |
| §7 (свойства spec'а) | — meta | n/a |
**Gap check:** все требования spec покрыты задачами 1-5; Task 6 — verification.
### Placeholder scan
Запустил mental grep на «TBD», «TODO», «add appropriate», «similar to», «implement later»:
- Task 3 Step 3 содержит `<FILL FROM STEP 2>` placeholder'ы — но это легитимно: engineer должен заполнить реальными значениями из Step 2 (это явный mechanism, не недосказанность). Если placeholder остаётся в финальном файле после Task 3 → Step 5 jq verification fail'ит (path "<FILL FROM STEP 2>" — не валидный path; и `installedAt` "<FILL FROM STEP 2>" не парсится как ISO date — но jq не проверяет date format, только JSON syntax; впрочем, явно сказано «Не оставлять placeholder'ы в финальном файле» в Step 3).
- Task 1 Step 2: «Содержание полностью derivable из committed design spec» — engineer открывает spec по ссылке, не placeholder.
Чисто.
### Type consistency
- `target` ENUM — `user-level` / `consumer` / `user-level+consumer` — используется консистентно в Task 3 (manifest) и в Task 1 routing.md §3.5 (install checklist 5.4).
- `category` field — `meta` / `consumer-universal` / `consumer-stack-gated` / `consumer-UI` / `skip` — используется консистентно в Task 3 + Task 1.
- Все commit message scopes — `brain-plugin-routing`, `brain`, `brain-plugins`, `brain-version` — соответствуют существующему стилю brain'а ([git log](../../../CHANGELOG.md): `docs(brain-v2):`, `docs(visualizations):`, `chore(gitignore):`).
Чисто.
---
## Execution Handoff
Plan complete and saved to [docs/superpowers/plans/2026-05-11-brain-plugin-routing.md](../plans/2026-05-11-brain-plugin-routing.md).
Two execution options:
**1. Subagent-Driven (recommended)** — fresh subagent per task with two-stage review between tasks. Best for plans where independent verification per task is valuable. Slower but safer.
**2. Inline Execution** — execute tasks in current session via `superpowers:executing-plans` skill. Batch execution with checkpoints. Faster, single context.
Per economy 0% rule (no subagent abuse for trivial tasks) and given that the plan has 6 tasks where each is atomic and small, **Inline Execution** is recommended for this plan — subagent-driven would add overhead without significant benefit for plan of this size.
Which approach?
@@ -0,0 +1,523 @@
# Install plugin-dev + hookify as brain-meta plugins (brain v1.2)
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** Install Anthropic-verified plugins `plugin-dev` (#17) + `hookify` (#18) as `meta` category brain plugins per [docs/brain-plugin-routing.md §5.1](../../brain-plugin-routing.md), bumping brain to v1.2 with routing.md v1.1 (new task classes: plugin creation, hook creation).
**Architecture:** Both plugins already in `~/.claude/plugins/marketplaces/claude-plugins-official/plugins/` (marketplace HEAD `00679aef889e`), absent from `~/.claude/plugins/cache/` and `enabledPlugins`. Path 2 install: `cp -r` from marketplaces → cache (avoid duplicate `git clone`; marketplace is already a fresh clone). 6-artifact atomic install per plugin: cache + user-level enable + user-level manifest + brain plugins-manifest + brain settings-fragment + routing.md row. Marketplaces.json unchanged (marketplace already registered). 3 commits: plugin-dev, hookify, version bump v1.1→v1.2.
**Tech Stack:** Bash (`cp -r`, jq), markdown, JSON, git atomic commits.
**Routing reference:** [docs/brain-plugin-routing.md §5.1](../../brain-plugin-routing.md) — 10-step install for `meta` category.
**Marketplace state verified at planning time:**
- Marketplace `claude-plugins-official` HEAD = `00679aef889efe36bb0389f81d70b6229a2013ee`
- `plugin-dev` source: `~/.claude/plugins/marketplaces/claude-plugins-official/plugins/plugin-dev/`
- `hookify` source: `~/.claude/plugins/marketplaces/claude-plugins-official/plugins/hookify/`
- Both have `.claude-plugin/plugin.json` with Anthropic author
- Neither in `~/.claude/plugins/cache/`, neither in `enabledPlugins`, neither in `installed_plugins.json`
**Cache version convention:** Phase 0 used `00679aef889e` (marketplace HEAD short-sha) as version subdir. We follow same convention for consistency: `cache/claude-plugins-official/<plugin>/00679aef889e/`.
---
## File Structure
| File | Action | Tasks |
|---|---|---|
| `~/.claude/plugins/cache/claude-plugins-official/plugin-dev/00679aef889e/` | CREATE (cp -r from marketplace) | Task 1 |
| `~/.claude/plugins/cache/claude-plugins-official/hookify/00679aef889e/` | CREATE (cp -r from marketplace) | Task 2 |
| `~/.claude/settings.json` | MODIFY (add 2 keys to enabledPlugins) | Task 1, Task 2 |
| `~/.claude/plugins/installed_plugins.json` | MODIFY (add 2 entries) | Task 1, Task 2 |
| `user-level-files/plugins-manifest.json` | MODIFY (add 2 entries with target+category) | Task 1, Task 2 |
| `user-level-files/settings-fragment.json` | MODIFY (add 2 keys to enabledPlugins) | Task 1, Task 2 |
| `docs/brain-plugin-routing.md` | MODIFY (bump v1.0→v1.1: +2 §2.1, +2 §4.2, +2 §3.1 task classes) | Task 1, Task 2 |
| `.brain-version` | MODIFY (v1.1 → v1.2 + new sha) | Task 3 |
| `manifest.json` | MODIFY (version → brain-v1.2) | Task 3 |
| `CLAUDE.md` | MODIFY (version line v1.1→v1.2) | Task 3 |
| `CHANGELOG.md` | MODIFY (+v1.2 entry above v1.1) | Task 3 |
**Note on user-level vs brain-only files:** User-level files (`~/.claude/...`) are runtime state on this machine, NOT in brain repo. They get edited but only brain repo files get committed. The 3 atomic commits only touch files in `c:/моя/проекты/claude-brain/`.
---
### Task 1: Install plugin-dev
**Files:**
- Create: `~/.claude/plugins/cache/claude-plugins-official/plugin-dev/00679aef889e/` (full copy from marketplace)
- Modify: `~/.claude/settings.json` (add `"plugin-dev@claude-plugins-official": true` to enabledPlugins)
- Modify: `~/.claude/plugins/installed_plugins.json` (add entry under key `plugin-dev@claude-plugins-official`)
- Modify: `user-level-files/plugins-manifest.json` (add entry with target="user-level", category="meta")
- Modify: `user-level-files/settings-fragment.json` (add key to enabledPlugins)
- Modify: `docs/brain-plugin-routing.md` (bump v1.0→v1.1: +row in §2.1, +row in §4.2, +row in §3.1 «Создание plugin'а»)
- [ ] **Step 1: Pre-state RED test**
Run:
```bash
ls -d "$HOME/.claude/plugins/cache/claude-plugins-official/plugin-dev" 2>/dev/null && echo EXISTS || echo ABSENT
jq -e '.enabledPlugins | has("plugin-dev@claude-plugins-official")' "$HOME/.claude/settings.json"
```
Expected: `ABSENT`, `false`
- [ ] **Step 2: Install in cache via cp -r**
Run:
```bash
mkdir -p "$HOME/.claude/plugins/cache/claude-plugins-official/plugin-dev"
cp -r "$HOME/.claude/plugins/marketplaces/claude-plugins-official/plugins/plugin-dev" "$HOME/.claude/plugins/cache/claude-plugins-official/plugin-dev/00679aef889e"
ls "$HOME/.claude/plugins/cache/claude-plugins-official/plugin-dev/00679aef889e/"
```
Expected: directory contains `.claude-plugin`, `agents`, `commands`, `skills`, `LICENSE`, `README.md`.
- [ ] **Step 3: Enable in user-level settings.json**
Edit `~/.claude/settings.json` → add line in `enabledPlugins` block:
```json
"plugin-dev@claude-plugins-official": true,
```
(Use Edit tool with exact context to insert after existing entries.)
- [ ] **Step 4: Verify GREEN — user-level enable**
Run:
```bash
jq -e '.enabledPlugins."plugin-dev@claude-plugins-official"' "$HOME/.claude/settings.json"
```
Expected: `true`.
- [ ] **Step 5: Add entry to user-level installed_plugins.json**
Edit `~/.claude/plugins/installed_plugins.json` → add new key `"plugin-dev@claude-plugins-official"` with array value:
```json
"plugin-dev@claude-plugins-official": [
{
"scope": "user",
"installPath": "C:\\Users\\Administrator\\.claude\\plugins\\cache\\claude-plugins-official\\plugin-dev\\00679aef889e",
"version": "00679aef889e",
"installedAt": "2026-05-11T15:00:00.000Z",
"lastUpdated": "2026-05-11T15:00:00.000Z",
"gitCommitSha": "00679aef889efe36bb0389f81d70b6229a2013ee",
"installMethod": "manual-cp-from-marketplace-Path2"
}
]
```
(Use actual current ISO timestamp for installedAt/lastUpdated — not literal placeholder. Bash `date -u -Iseconds` for value.)
- [ ] **Step 6: Add entry to brain `user-level-files/plugins-manifest.json`**
Edit brain manifest — add inside `"plugins": {`:
```json
"plugin-dev@claude-plugins-official": [
{
"scope": "user",
"installPath": "C:\\Users\\Administrator\\.claude\\plugins\\cache\\claude-plugins-official\\plugin-dev\\00679aef889e",
"version": "00679aef889e",
"installedAt": "<SAME ISO TIMESTAMP AS STEP 5>",
"lastUpdated": "<SAME ISO TIMESTAMP AS STEP 5>",
"gitCommitSha": "00679aef889efe36bb0389f81d70b6229a2013ee",
"installMethod": "manual-cp-from-marketplace-Path2",
"target": "user-level",
"category": "meta"
}
]
```
- [ ] **Step 7: Add key to brain `user-level-files/settings-fragment.json`**
Edit brain settings-fragment → add to `enabledPlugins`:
```json
"plugin-dev@claude-plugins-official": true,
```
- [ ] **Step 8: Update `docs/brain-plugin-routing.md` — bump v1.0 → v1.1**
Three coordinated edits:
**8a. §2.1 реестр — add row** (after claude-code-setup):
```markdown
| **plugin-dev** | `anthropics/claude-plugins-official` | `meta` | создание нового plugin'а в brain'е (агенты, команды, hooks, MCP integration); тест-bed для будущих своих brain плагинов | каждодневная UI/code работа |
```
**8b. §3.1 routing-table — add row** (after «Анализ что ещё поставить»):
```markdown
| Создание нового **plugin'а** для brain (agents/commands/hooks/MCP) | `plugin-dev` | прямое создание через файлы `.claude-plugin/plugin.json` + skills если plugin тривиальный (1 skill, без агентов) | guided plugin scaffolding с best practices Anthropic |
```
**8c. §4.2 — update statuses** (change «shortlist (not installed)» → «installed v1.2»):
```markdown
| #17 | `plugin-dev` | `meta` | installed brain v1.2 (manual-cp-from-marketplace-Path2) |
```
**8d. Update version header** (top of file):
```markdown
# Brain Plugin Routing Rules (v1.1)
```
**8e. История версий** — добавить запись v1.1 ВЫШЕ существующей v1.0:
```markdown
- **v1.1 от 2026-05-11** — Installed brain-meta plugins #17 plugin-dev + #18 hookify. Added 2 rows in §2.1, 2 rows in §3.1 (new task classes: plugin creation, hook creation), updated statuses in §4.2.
```
- [ ] **Step 9: Verify GREEN — all 4 brain artifacts**
Run:
```bash
cd "c:/моя/проекты/claude-brain"
jq -e '.plugins."plugin-dev@claude-plugins-official"[0] | (.target == "user-level" and .category == "meta")' user-level-files/plugins-manifest.json
jq -e '.enabledPlugins."plugin-dev@claude-plugins-official"' user-level-files/settings-fragment.json
grep -c "plugin-dev" docs/brain-plugin-routing.md
grep -c "^# Brain Plugin Routing Rules (v1.1)" docs/brain-plugin-routing.md
```
Expected: `true`, `true`, ≥3 (in 3 sections), `1`.
- [ ] **Step 10: Commit atomic**
```bash
cd "c:/моя/проекты/claude-brain"
git add user-level-files/plugins-manifest.json user-level-files/settings-fragment.json docs/brain-plugin-routing.md
git commit -m "$(cat <<'EOF'
feat(brain-plugins): install plugin-dev as meta plugin
Anthropic-verified plugin from claude-plugins-official marketplace (HEAD
00679aef889e). Installed in cache via cp from marketplace (Path 2,
manual-cp-from-marketplace). Routing.md bumped to v1.1: +§2.1 row, +§3.1
row for «plugin creation» task class, +§4.2 status update for #17.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EOF
)"
```
Expected: 3 files changed.
---
### Task 2: Install hookify
**Files:** parallel structure to Task 1 — substitute `plugin-dev``hookify`.
- [ ] **Step 1: Pre-state RED test**
Run:
```bash
ls -d "$HOME/.claude/plugins/cache/claude-plugins-official/hookify" 2>/dev/null && echo EXISTS || echo ABSENT
jq -e '.enabledPlugins | has("hookify@claude-plugins-official")' "$HOME/.claude/settings.json"
```
Expected: `ABSENT`, `false`
- [ ] **Step 2: Install in cache via cp -r**
Run:
```bash
mkdir -p "$HOME/.claude/plugins/cache/claude-plugins-official/hookify"
cp -r "$HOME/.claude/plugins/marketplaces/claude-plugins-official/plugins/hookify" "$HOME/.claude/plugins/cache/claude-plugins-official/hookify/00679aef889e"
ls "$HOME/.claude/plugins/cache/claude-plugins-official/hookify/00679aef889e/"
```
Expected: directory contains `.claude-plugin`, `agents`, `commands`, `core`, `examples`, `hooks`, `matchers`, `skills`, `utils`, `LICENSE`, `README.md`.
- [ ] **Step 3: Enable in user-level settings.json**
Edit `~/.claude/settings.json` → add in `enabledPlugins`:
```json
"hookify@claude-plugins-official": true,
```
- [ ] **Step 4: Verify GREEN**
```bash
jq -e '.enabledPlugins."hookify@claude-plugins-official"' "$HOME/.claude/settings.json"
```
Expected: `true`.
- [ ] **Step 5: Add entry to user-level installed_plugins.json**
```json
"hookify@claude-plugins-official": [
{
"scope": "user",
"installPath": "C:\\Users\\Administrator\\.claude\\plugins\\cache\\claude-plugins-official\\hookify\\00679aef889e",
"version": "00679aef889e",
"installedAt": "<CURRENT ISO via date -u -Iseconds>",
"lastUpdated": "<SAME ISO>",
"gitCommitSha": "00679aef889efe36bb0389f81d70b6229a2013ee",
"installMethod": "manual-cp-from-marketplace-Path2"
}
]
```
- [ ] **Step 6: Add entry to brain plugins-manifest.json**
```json
"hookify@claude-plugins-official": [
{
"scope": "user",
"installPath": "C:\\Users\\Administrator\\.claude\\plugins\\cache\\claude-plugins-official\\hookify\\00679aef889e",
"version": "00679aef889e",
"installedAt": "<SAME ISO AS STEP 5>",
"lastUpdated": "<SAME ISO AS STEP 5>",
"gitCommitSha": "00679aef889efe36bb0389f81d70b6229a2013ee",
"installMethod": "manual-cp-from-marketplace-Path2",
"target": "user-level",
"category": "meta"
}
]
```
- [ ] **Step 7: Add key to brain settings-fragment.json**
```json
"hookify@claude-plugins-official": true,
```
- [ ] **Step 8: Update routing.md**
**8a. §2.1 — add row** (after plugin-dev row):
```markdown
| **hookify** | `anthropics/claude-plugins-official` | `meta` | создание нового hook'а в brain'е from conversation patterns; complement к 10 ручным .py hook'ам в `user-level-files/hooks/` | каждодневная работа |
```
**8b. §3.1 routing-table — add row** (after plugin-dev creation row):
```markdown
| Создание нового **hook'а** в brain (PreToolUse/PostToolUse/Stop/SessionStart/UserPromptSubmit) | `hookify` | прямой Edit .py файла в `user-level-files/hooks/` если простой port существующего паттерна, или hook тривиален | guided hook generation by analyzing conversation patterns |
```
**8c. §4.2 — update status for #18:**
```markdown
| #18 | `hookify` | `meta` | installed brain v1.2 (manual-cp-from-marketplace-Path2) |
```
**8d. Update version header**:
```markdown
# Brain Plugin Routing Rules (v1.1)
```
(Already updated in Task 1 step 8d — verify still says v1.1.)
**8e. История версий** — update v1.1 entry to mention hookify too (or leave Task 1's wording which already mentions both #17+#18; no change needed if Task 1 entry covers both).
- [ ] **Step 9: Verify GREEN**
```bash
cd "c:/моя/проекты/claude-brain"
jq -e '.plugins."hookify@claude-plugins-official"[0] | (.target == "user-level" and .category == "meta")' user-level-files/plugins-manifest.json
jq -e '.enabledPlugins."hookify@claude-plugins-official"' user-level-files/settings-fragment.json
grep -c "hookify" docs/brain-plugin-routing.md
jq '.plugins | keys | length' user-level-files/plugins-manifest.json
```
Expected: `true`, `true`, ≥3, `8` (was 6, +2).
- [ ] **Step 10: Commit atomic**
```bash
cd "c:/моя/проекты/claude-brain"
git add user-level-files/plugins-manifest.json user-level-files/settings-fragment.json docs/brain-plugin-routing.md
git commit -m "$(cat <<'EOF'
feat(brain-plugins): install hookify as meta plugin
Anthropic-verified plugin from claude-plugins-official marketplace (HEAD
00679aef889e). Installed in cache via cp from marketplace. Routing.md
+§2.1 row, +§3.1 row for «hook creation» task class, +§4.2 status update
for #18.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EOF
)"
```
---
### Task 3: Bump brain v1.1 → v1.2
**Files:**
- Modify: `.brain-version`
- Modify: `manifest.json:version`
- Modify: `CLAUDE.md` line «**Версия:** brain-v1.1 от 11.05.2026»
- Modify: `CHANGELOG.md` (add v1.2 entry above v1.1)
- [ ] **Step 1: Get current HEAD sha (after Task 2 commit)**
```bash
cd "c:/моя/проекты/claude-brain"
git rev-parse HEAD
```
Записать SHA (это `hookify` commit SHA, base для v1.2 marker).
- [ ] **Step 2: Write .brain-version**
```
brain-v1.2
sha: <SHA_FROM_STEP_1>
```
- [ ] **Step 3: Bump manifest.json version**
Edit `manifest.json` line: `"version": "brain-v1.1"``"version": "brain-v1.2"`.
- [ ] **Step 4: Bump CLAUDE.md version line**
Edit: `**Версия:** brain-v1.1 от 11.05.2026``**Версия:** brain-v1.2 от 11.05.2026`.
- [ ] **Step 5: Add CHANGELOG entry v1.2 above v1.1**
```markdown
## brain-v1.2 — 2026-05-11
### Added
- Installed brain-meta plugin **#17 plugin-dev** (Anthropic, marketplace `claude-plugins-official` HEAD `00679aef889e`). Toolkit для создания plugin'ов с агентами, командами, hooks, MCP integration. Closes shortlist «Brain-specific must-add» part 1/2.
- Installed brain-meta plugin **#18 hookify** (Anthropic, same marketplace). Tool для создания hook'ов by analyzing conversation patterns. Complement к 10 ручным .py hook'ам. Closes shortlist «Brain-specific must-add» part 2/2.
- `docs/superpowers/plans/2026-05-11-install-plugin-dev-hookify.md` — implementation plan.
- `docs/brain-plugin-routing.md` v1.0 → v1.1: 2 новых row в §2.1, 2 row в §3.1 (новые классы задач: «создание plugin'а», «создание hook'а»), 2 status update в §4.2.
### Changed
- `user-level-files/plugins-manifest.json` — 6 → 8 entries (plugin-dev + hookify added with target=user-level, category=meta).
- `user-level-files/settings-fragment.json` — 6 → 8 entries in `enabledPlugins`.
- `CLAUDE.md` brain root — version `brain-v1.1``brain-v1.2`.
- `manifest.json``version` bumped to `brain-v1.2`.
### Notes
- Both plugins installed via `cp -r` from `~/.claude/plugins/marketplaces/...` (not separate git clone) — marketplace was already cloned, this is more efficient than Phase 0 method.
- shortlist «Brain-specific must-add» (recommender's gap finding) now fully closed.
## brain-v1.1 — 2026-05-11
```
- [ ] **Step 6: Verify all v1.2**
```bash
cd "c:/моя/проекты/claude-brain"
cat .brain-version
jq -r '.version' manifest.json
grep "^\*\*Версия:\*\*" CLAUDE.md
grep -c "^## brain-v1.2" CHANGELOG.md
```
Expected: `brain-v1.2` + sha, `brain-v1.2`, `**Версия:** brain-v1.2 от 11.05.2026`, `1`.
- [ ] **Step 7: Commit atomic (D11-style — version + changelog atomic)**
```bash
cd "c:/моя/проекты/claude-brain"
git add .brain-version manifest.json CLAUDE.md CHANGELOG.md
git commit -m "$(cat <<'EOF'
chore(brain-version): bump v1.1 → v1.2 (plugin-dev + hookify installed)
Atomic bump. Brain-meta plugins #17 plugin-dev and #18 hookify now
installed, registered in routing.md v1.1, snapshotted in manifest +
settings-fragment. Brain-specific must-add shortlist closed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EOF
)"
```
---
### Task 4: Final verification + push
- [ ] **Step 1: git log review**
```bash
cd "c:/моя/проекты/claude-brain"
git log --oneline -5
```
Expected (reverse-chrono):
1. `chore(brain-version): bump v1.1 → v1.2 (plugin-dev + hookify installed)`
2. `feat(brain-plugins): install hookify as meta plugin`
3. `feat(brain-plugins): install plugin-dev as meta plugin`
4. `chore(brain-version): bump v1.0 → v1.1 (plugin routing)` (previous)
- [ ] **Step 2: Cross-file consistency**
```bash
cd "c:/моя/проекты/claude-brain"
diff <(jq -S '.plugins | keys' user-level-files/plugins-manifest.json) <(jq -S '.enabledPlugins | keys' user-level-files/settings-fragment.json) && echo MATCH
jq '.plugins | keys | length' user-level-files/plugins-manifest.json
```
Expected: `MATCH`, `8`.
- [ ] **Step 3: User-level vs brain consistency**
```bash
diff <(jq -S '.enabledPlugins | keys' "$HOME/.claude/settings.json") <(jq -S '.enabledPlugins | keys' user-level-files/settings-fragment.json) && echo MATCH
```
Expected: `MATCH` (user-level and brain enabledPlugins now identical).
- [ ] **Step 4: Routing.md sanity**
```bash
grep -c "^## §" docs/brain-plugin-routing.md
wc -l docs/brain-plugin-routing.md
grep -c "plugin-dev\|hookify" docs/brain-plugin-routing.md
grep "^# Brain Plugin Routing Rules" docs/brain-plugin-routing.md
```
Expected: `7`, lines should grow modestly (251 + ~6 new rows ≈ 257-260), `plugin-dev|hookify` ≥6 (≥3 each in §2.1, §3.1, §4.2), version line shows `v1.1`.
- [ ] **Step 5: Tree clean + invoke verification-before-completion**
```bash
git status
```
Expected: `nothing to commit, working tree clean`.
Then invoke `superpowers:verification-before-completion` skill for final gate per economy 0%.
- [ ] **Step 6: Push to origin/main**
```bash
git push origin main
```
Expected: 3 new commits pushed (Task 1, Task 2, Task 3).
---
## Self-Review
### Spec coverage (against [routing.md §5.1](../../brain-plugin-routing.md))
| §5.1 step | Task 1 step | Task 2 step | Covered? |
|---|---|---|---|
| 1 (Marketplace check) | implicit (verified at planning, already present) | implicit | ✓ |
| 1a (Marketplace add) | N/A (not new) | N/A | ✓ |
| 2 (Install в cache) | Task 1 Step 2 | Task 2 Step 2 | ✓ |
| 3 (Enable settings.json) | Task 1 Step 3 | Task 2 Step 3 | ✓ |
| 4 (User-level manifest) | Task 1 Step 5 | Task 2 Step 5 | ✓ |
| 5 (Brain plugins-manifest) | Task 1 Step 6 | Task 2 Step 6 | ✓ |
| 6 (Brain marketplaces) | N/A (no new marketplace) | N/A | ✓ |
| 7 (Brain settings-fragment) | Task 1 Step 7 | Task 2 Step 7 | ✓ |
| 8 (Update routing.md) | Task 1 Step 8 | Task 2 Step 8 | ✓ |
| 9 (Verify in new session) | NOT directly possible in this session; partial verify via jq | partial | partial — Skill tool visibility verifies only in next chat |
| 10 (Commit atomic) | Task 1 Step 10 | Task 2 Step 10 | ✓ |
**§5.1 step 9 limitation:** Skill tool's plugin list is constant per conversation. Even after enabling, `Skill('plugin-dev:...')` won't be callable until next chat. This is a known Claude Code limitation noted in PSR R11.4. Verification via jq/grep on brain artifacts is sufficient for this session; full Skill-tool verification on next chat.
### Placeholder scan
- `<SAME ISO TIMESTAMP AS STEP 5>` in Task 1 Step 6 / Task 2 Step 6 — explicit cross-reference, not a placeholder. Engineer must use same value as captured in Step 5. If executed, must be filled with real ISO timestamp before commit.
- `<SHA_FROM_STEP_1>` in Task 3 Step 2 — same: explicit cross-reference to Task 3 Step 1 output.
- `<CURRENT ISO via date -u -Iseconds>` in Task 2 Step 5 — instruction to use `date -u -Iseconds` output, not literal placeholder.
No "TBD", "TODO", "implement later", "Similar to Task N" violations. Task 2 explicitly repeats structure (not refers to Task 1) per "No Placeholders" rule.
### Type consistency
- `target: "user-level"` — used consistently in Task 1 Step 6 and Task 2 Step 6.
- `category: "meta"` — used consistently in same steps.
- `installMethod: "manual-cp-from-marketplace-Path2"` — used consistently across Task 1 Step 5/6 and Task 2 Step 5/6.
- Plugin keys with `@claude-plugins-official` suffix — consistent in all references.
- `00679aef889e` (cache version subdir) and `00679aef889efe36bb0389f81d70b6229a2013ee` (gitCommitSha) — short vs full SHA. **Consistent:** short 12-char for cache subdir (matches Phase 0 convention from skill-creator); full 40-char for gitCommitSha (verifiability).
Чисто.
---
## Execution Handoff
Plan complete and saved to [docs/superpowers/plans/2026-05-11-install-plugin-dev-hookify.md](../plans/2026-05-11-install-plugin-dev-hookify.md).
Two execution options:
**1. Subagent-Driven (recommended)** — fresh subagent per task, two-stage review.
**2. Inline Execution** — execute in current session via `superpowers:executing-plans`.
Per economy 0% (no subagent abuse for trivial procedural tasks) and given 4 well-scoped tasks operating on a verified §5.1 procedure — **Inline Execution** recommended.
Which approach?
@@ -0,0 +1,261 @@
# Brain Plugin Routing Rules — Design Spec
**Дата:** 2026-05-11
**Статус:** Draft → review заказчика
**Автор:** Claude (под economy mode 0%)
**Связано:**
- [docs/brain-v2-phase-0-final.md](../../brain-v2-phase-0-final.md) — Phase 0 финальный отчёт, источник Hybrid-решения skill-creator vs writing-skills
- [CLAUDE.md](../../../CLAUDE.md) — основная карта brain'а (получит ссылку на этот документ при implementation)
- [project-files/docs/Plugin_stack_rules.template.md](../../../project-files/docs/Plugin_stack_rules.template.md) — PSR для consumer'а (Liderra), **не применяется** к brain'у
- Memory: [project_brain_v2_phase0.md](../../../../../Users/Administrator/.claude/projects/c--------------claude-brain/memory/project_brain_v2_phase0.md) — shortlist 17
---
## §1. Цель и проблема
### §1.1. Проблема
В brain repo (`c:/моя/проекты/claude-brain/`) сейчас активны 6 плагинов (4 brain v1.0 baseline + 2 мета Phase 0). При выборе какой плагин использовать для конкретной задачи в brain'е возникает запутанность. Зафиксированы 8 источников запутанности:
- **К1.** У brain нет собственных правил выбора плагина. PSR template (916 строк) — правила для consumer'а с Vue/Vuetify/Forest стеком, в brain'е неприменимы. CLAUDE.md brain'а (40 строк) plugin-правил не содержит.
- **К2.** В `enabledPlugins` brain'а активны `frontend-design` + `ui-ux-pro-max` — UI-плагины, не нужные в brain'е. Skill tool показывает их скилы, отвлекая attention.
- **К3.** Phase 0 install (skill-creator + claude-code-setup) выполнен Path 2 (manual git clone) — нативный workflow `/plugin install` сломан, drift между фактическим состоянием и brain'ской source-of-truth.
- **К4.** Overlap'ы между плагинами без правил «какой когда»: skill-creator vs writing-skills, claude-md-improver vs прямой Edit, code-review (community) vs `/review` vs requesting-code-review, security-guidance vs `/security-review` vs Semgrep, claude-code-setup vs ручной анализ.
- **К5.** 17 плагинов shortlist'а Phase 0 не имеют категоризации «куда ставить» — каждый install ad-hoc.
- **К6.** Нет механизма live-override / disabled-in-brain.
- **К7.** Установка одного плагина = 6 артефактов (cache, settings.json, installed_plugins.json, brain plugins-manifest.json, marketplaces.json, settings-fragment.json) — нет atomic-checklist'а, шаги 4-6 при Path 2 пропускаются.
- **К8.** Категория плагина (meta / UI / process / domain) нигде не маркирована.
### §1.2. Цель
Создать `docs/brain-plugin-routing.md` v1.0 — нормативный документ, который:
1. Заменяет ad-hoc решения routing'ом по реестру (К4)
2. Категоризирует плагины и определяет где какой ставить (К5, К8)
3. Маркирует disabled-in-brain через soft-rule (К2)
4. Описывает atomic install checklist (К3, К7)
5. Описывает update procedure при добавлении нового плагина (К1, К6)
Размер: ~250 строк, в 4× меньше PSR template.
### §1.3. Принципы
- **Brain ≠ consumer.** Правила brain'а отличаются от PSR template'а consumer'а.
- **Один путь поиска.** Все вопросы про плагины в brain'е решаются по этому документу.
- **Реалистично, без чрезмерности.** Нет R0-R15 как в PSR; достаточно: реестр + routing + disabled + categorization + install + update.
---
## §2. Scope
### §2.1. В scope
- Создание `docs/brain-plugin-routing.md` v1.0
- Обновление `CLAUDE.md` brain'а — добавление 5-7 строк ссылки на новый документ
- Возможно: новое опциональное поле `target` в `plugins-manifest.json` schema (см. §5)
- Возможно: новый раздел в `docs/rejected-plugins.md` для категории `skip`
- Возможно: новый файл `docs/consumer-projects.md` дополняется для `consumer-stack-gated` плагинов (если потребуется)
### §2.2. Вне scope
- **Не меняем PSR template** (project-files/docs/Plugin_stack_rules.template.md) — это template для consumer'а, brain не управляет consumer-правилами через этот документ
- **Не меняем CLAUDE.md template** (project-files/CLAUDE.md.template) — это для consumer'а
- **Не меняем настройки плагинов на user-level** (`~/.claude/settings.json`) — это runtime, brain копирует через settings-fragment.json
- **Не пишем правила установки PSR-аналогов для brain'а** (Tooling/Pravila для brain'а) — отложено, brain пока не требует
- **Не автоматизируем install через скрипт** на этом этапе — checklist в документе достаточен; автоматизация — отдельная задача
---
## §3. Архитектура документа
`docs/brain-plugin-routing.md` будет иметь 7 разделов:
| # | Раздел | Назначение | Размер |
|---|---|---|---|
| 1 | Шапка + Принципы | основа документа, scope, отделение от PSR | ~30 строк |
| 2 | Реестр активных плагинов + Disabled-in-brain | таблица 6 плагинов + soft-rule для FD/UPM | ~40 строк |
| 3 | Routing table | 17 строк task→plugin disambiguation + tie-breakers | ~50 строк |
| 4 | Categorization shortlist 17 | 5 категорий + распределение всех известных плагинов | ~50 строк |
| 5 | Install checklist | 5 подразделов по категориям (meta/consumer-universal/stack-gated/UI/skip) | ~60 строк |
| 6 | Update procedure | когда менять, bump strategy, согласованность | ~25 строк |
| 7 | Финальная формула + Свойства | TL;DR и meta | ~20 строк |
**Итого:** ~275 строк (target 250 ± 25).
### §3.1. Раздел 1 — Шапка + Принципы
Содержит:
- Дата, версия v1.0, scope (только brain repo)
- Связи: CLAUDE.md (ссылка сюда), PSR template (НЕ применяется к brain'у)
- 3 принципа: «Brain ≠ consumer», «Один путь поиска», «Реалистично, без чрезмерности»
### §3.2. Раздел 2 — Реестр + Disabled-in-brain
**Реестр 2.1** — таблица 6 плагинов:
- `superpowers``process`
- `claude-md-management``meta`
- `skill-creator``meta`
- `claude-code-setup``meta`
- `frontend-design``consumer-UI`
- `ui-ux-pro-max``consumer-UI`
Колонки: плагин, marketplace, категория, когда использовать в brain, когда **не** использовать.
**Disabled-in-brain 2.2** — soft-rule:
- FD/UPM остаются `enabledPlugins: true` на user-level
- При работе в brain repo (триггер: `pwd` начинается с `c:/моя/проекты/claude-brain/`) — модель самостоятельно игнорирует FD/UPM, не инвокирует их Skill tool'ом
- Edge case структурной правки visualization HTML: разрешено «открыть новый чат и явно использовать FD»; маленькие правки — прямой Edit без FD
### §3.3. Раздел 3 — Routing table (К4)
Таблица 17 строк × 4 колонки (Задача / Default / Override+Триггер / Почему default). Покрывает:
1. Создание custom skill — verifiable output → `skill-creator`
2. Создание custom skill — discipline-enforcing → `superpowers:writing-skills`
3. Создание custom skill — hybrid → `superpowers:brainstorming` → определение типа
4. Правка CLAUDE.md → `claude-md-management:claude-md-improver` (override: тривиал → прямой Edit)
5. Capture session-learnings → `revise-claude-md`
6. Правка Pravila/PSR/Tooling template'ов → прямой Edit + writing-skills pressure если структурная
7. Анализ «что ещё поставить» → `claude-code-setup:claude-automation-recommender`
8. Code review → `superpowers:requesting-code-review` (override: `/review`, `/simplify` по live-команде)
9. Debug → `superpowers:systematic-debugging` (≥3 гипотезы)
10. Планирование multi-step → `superpowers:writing-plans` (после brainstorming)
11. Закрытие задачи → `superpowers:verification-before-completion`
12. Параллельная работа → `superpowers:dispatching-parallel-agents`
13. Worktree-изоляция → `superpowers:using-git-worktrees`
14. Завершение feature-branch → `superpowers:finishing-a-development-branch`
15. Receive code review → `superpowers:receiving-code-review`
16. TDD на код → `superpowers:test-driven-development`
17. «Запутался — какой брать» → читать этот документ; если нет строки — спросить + добавить через bump
**Tie-breakers** (3 строки):
1. Несколько строк подходят → выбрать более конкретную; равная confidence → спросить
2. Economy mode 0% триггер vs default → побеждает economy 0%
3. User написал `/skill-name` явно → выполнить именно его (live-override)
### §3.4. Раздел 4 — Categorization (К5, К8)
**4.1. Категории** (5 штук):
- `meta` — для самого brain
- `consumer-universal` — универсально для любого consumer'а
- `consumer-stack-gated` — стек-зависимое
- `consumer-UI` — UI plugin (legacy + future)
- `skip` — не подходит
**4.2. Распределение** — таблица из 22 строк: 4 legacy brain v1.0 + 17 shortlist Phase 0 + 1 cut (#3, поглощён #10):
| Плагин | # | Категория | Статус |
|---|---|---|---|
| `superpowers` | brain v1 legacy | `process` | installed |
| `claude-md-management` | brain v1 legacy | `meta` | installed |
| `frontend-design` | brain v1 legacy | `consumer-UI` | installed (но disabled-in-brain) |
| `ui-ux-pro-max` | brain v1 legacy | `consumer-UI` | installed (но disabled-in-brain) |
| `skill-creator` | #4 | `meta` | installed Phase 0 |
| `claude-code-setup` | #8 | `meta` | installed Phase 0 |
| `plugin-dev` | #17 | `meta` | shortlist |
| `hookify` | #18 | `meta` | shortlist |
| `Context7` | #1 | `consumer-universal` | shortlist Phase 1 |
| `code-review` | #2 | `consumer-universal` | shortlist Phase 1 |
| `security-guidance` | #7 | `consumer-universal` | shortlist Phase 1 |
| `pr-review-toolkit` | #10 | `consumer-universal` | shortlist Phase 1 |
| `telegram` | #12 | `consumer-universal` | shortlist Phase 1 |
| `feature-dev` | #5 | `consumer-stack-gated` | shortlist Phase 2 conditional |
| `figma` | #6 | `consumer-stack-gated` | shortlist Phase 2 conditional |
| `vercel` | #9 | `consumer-stack-gated` | shortlist Phase 2 conditional |
| `supabase` | #11 | `consumer-stack-gated` | shortlist Phase 2 conditional |
| `huggingface-skills` | #13 | `consumer-stack-gated` | shortlist Phase 2 conditional |
| `data-engineering` | #15 | `consumer-stack-gated` | shortlist Phase 2 conditional |
| `atomic-agents` | #14 | `skip` | rejected (Python ML mismatch, community) |
| `pagerduty` | #16 | `skip` | rejected (paid enterprise) |
| `code-simplifier` | #3 | cut (поглощён #10) | excluded |
**4.3. Правило установки нового плагина** — категоризируй по 4.1 → install по §5 соответствующей подсекции.
### §3.5. Раздел 5 — Install checklist (К3, К7)
5 подразделов:
- **5.1. `meta`** — 10 шагов: marketplace add, plugin install (на этой машине `claude` CLI не установлен (см. Phase 0 final.md Path 2), поэтому primary = `git clone --depth=1 <repo-url> ~/.claude/plugins/cache/<marketplace>/<name>/<version>`; preferred-future = `claude plugin install <name>@<marketplace>` после установки CLI), enable settings.json, manifest entry, brain plugins-manifest, brain marketplaces, brain settings-fragment, обновить routing.md, verify в новой сессии, atomic commit
- **5.2. `consumer-universal`** — 6 шагов: marketplace, brain manifest со `target: "consumer"`, **не** добавлять в brain settings-fragment, обновить routing.md, bump install.sh, commit
- **5.3. `consumer-stack-gated`** — как 5.2 + фиксация в `docs/consumer-projects.md` подходящих стеков
- **5.4. `consumer-UI`** — sub-case 5.2 с `target: "user-level + consumer"`, в brain settings-fragment содержится (как сейчас FD/UPM)
- **5.5. `skip`** — запись в `docs/rejected-plugins.md` с причиной
**Изменение схемы:** `plugins-manifest.json` получает опциональное поле `target` (default `"user-level"` для backwards compat).
### §3.6. Раздел 6 — Update procedure
**6.1.** События триггерящие обновление документа.
**6.2.** Bump strategy: minor (новая строка), major (смена структуры/принципов).
**6.3.** Согласованность с другими документами brain'а (manifest/marketplaces/settings-fragment обновляются в том же commit'е).
**6.4.** Edge case — старая категория не подходит → brainstorming → новая категория → bump v2.0.
### §3.7. Раздел 7 — Финальная формула
```
Задача в brain → routing-table §3 → найди строку → default или override.
Не нашёл → спроси + добавь через bump §6.1.
Установка → §5 по категории.
В сомнениях категории → §4.1 признаки → §6.4 если ни одна не подходит.
В brain repo → FD + UPM игнорируются (§2.2).
```
Свойства: полнота, соразмерность, самоподдержка, независимость от PSR/CLAUDE.md template'ов.
---
## §4. Decisions log
Зафиксированные решения с источниками:
| # | Решение | Обоснование |
|---|---|---|
| D1 | Отдельный документ `docs/brain-plugin-routing.md` (Approach A), не expansion CLAUDE.md (Approach C), не port PSR (Approach B) | brainstorming: средний вес, separable, не разрастает CLAUDE.md, не imitate Liderra |
| D2 | Disabled-in-brain — soft-rule, не physical disable через settings.local.json | пользователь: «игнорирует» |
| D3 | Install checklist — в `brain-plugin-routing.md` отдельным разделом, не в отдельном `installing-a-plugin.md` | пользователь: «а» (вариант a) |
| D4 | 5 категорий: meta / consumer-universal / consumer-stack-gated / consumer-UI / skip | self-discovered при ревью раздела 4 — `consumer-UI` была в реестре 2.1 но отсутствовала в 4.1 |
| D5 | Новое поле `target` в `plugins-manifest.json` — opt-in (default `"user-level"`) | дефолт: backwards compat с 4 текущими entries |
| D6 | Bump strategy — semver minor/major | дефолт: соответствует PSR (v1.0 → v1.1 minor); calendar-version используется отдельно для `.brain-version` всего репо |
| D7 | Documemt full coverage без сокращений (~275 строк target) | дефолт: пользователь не попросил сокращать |
| D8 | Override-flag для overlap'а skill-creator vs writing-skills — задача-тип признак (verifiable output vs discipline-enforcing), hybrid → brainstorming | источник: Phase 0 final.md решение |
| D9 | Поле `target` в `plugins-manifest.json` — string ENUM: `"user-level"`, `"consumer"`, `"user-level+consumer"`. Default при отсутствии = `"user-level"` (для backwards compat с 4 текущими entries) | self-discovered при self-review §3.5 5.4 — `consumer-UI` требует композитного значения; ENUM проще массива для validation в jq |
| D10 | `docs/rejected-plugins.md` — отложить создание до 19-го плагина с категорией `skip`; atomic-agents + pagerduty (Phase 0 rejected) пока упомянуты в §4.2 brain-plugin-routing.md как `skip` со ссылкой на Phase 0 final.md | дефолт пользователя «делай сам»; KISS — не плодить пустой документ |
| D11 | `.brain-version` bump v1.0 → v1.1 при коммите brain-plugin-routing.md v1.0 + CLAUDE.md update (атомарный bump) | дефолт пользователя «делай сам»; согласовано с CHANGELOG.md как «v1.1 — added brain plugin routing rules» |
| D12 | Тестирование документа v1.0 — review only; pressure-scenarios через `superpowers:writing-skills` отложены до проявления реальной нестабильности правил при использовании | дефолт пользователя «делай сам»; новый документ — не код, RED-GREEN-REFACTOR неприменим напрямую; review достаточен для нормативного markdown'а |
---
## §5. Изменения в репозитории
При implementation создаются/правятся:
| Артефакт | Действие | Размер |
|---|---|---|
| `docs/brain-plugin-routing.md` | **CREATE** | ~275 строк |
| `CLAUDE.md` (brain root) | **UPDATE** | +5-7 строк (ссылка на новый документ + 1-2 строки sumary) |
| `user-level-files/plugins-manifest.json` | **UPDATE** | добавить optional `target` поле в существующие entries (default `"user-level"` где нет нового маркетплейс'а; `"meta"` для skill-creator + claude-code-setup которые сейчас отсутствуют в файле) |
| `user-level-files/settings-fragment.json` | **UPDATE** | добавить skill-creator + claude-code-setup в `enabledPlugins` (как сейчас в `~/.claude/settings.json` после Phase 0) |
| `user-level-files/marketplaces.json` | **NO CHANGE** | claude-plugins-official уже есть (skill-creator/claude-code-setup из того же marketplace) |
| `docs/rejected-plugins.md` | **CREATE (optional)** | ~10 строк, для atomic-agents + pagerduty |
| `docs/superpowers/specs/2026-05-11-brain-plugin-routing-design.md` | **CREATE (этот файл)** | — |
---
## §6. Открытые вопросы — закрыты дефолтами «делай сам»
- Q1 → D10: `docs/rejected-plugins.md` отложен до 19-го `skip` плагина
- Q2 → D11: `.brain-version` v1.0 → v1.1 атомарно с этим коммитом
- Q3 → D12: review-only тестирование для v1.0; pressure-scenarios отложены
---
## §7. Свойства spec'а
- **Полнота:** §1 проблема + §2 scope + §3 архитектура документа (7 разделов с под-структурой) + §4 decisions log (8 решений) + §5 changeset + §6 открытые вопросы.
- **Внутренняя согласованность:** D1-D9 не противоречат, §3 совпадает с обсуждавшимися разделами в brainstorming, §5 changeset покрывает все артефакты в §2 in-scope.
- **Без placeholders:** проверено self-review (см. ниже).
- **Scope чёткий:** §2.2 явно перечисляет out-of-scope.
---
*Конец Design Spec.*
@@ -0,0 +1,533 @@
# Brain v2 Phase 1 — Consumer-Universal Plugins + Context7 Activation (design)
**Дата:** 12.05.2026
**Brain version target:** v1.2 → v1.3
**Routing.md target:** v1.1 → v1.2
**Связанные документы:**
- [docs/brain-plugin-routing.md](../../brain-plugin-routing.md) (v1.1, будет bump v1.2)
- [docs/superpowers/specs/2026-05-11-brain-plugin-routing-design.md](2026-05-11-brain-plugin-routing-design.md) (предыдущий spec)
- [CLAUDE.md](../../../CLAUDE.md) (operational map brain'а)
---
## §1. Цель и scope
Phase 1 — следующий шаг brain v2 после Phase 0 (мета-foundation). Цель: распространить через brain'а в consumer'ы (Liderra и будущие) 5 плагинов категории `consumer-universal` из shortlist'а 17 (см. [memory: project_brain_v2_phase0.md](../../../../../C:/Users/Administrator/.claude/projects/c--------------claude-brain/memory/project_brain_v2_phase0.md)).
**Что внутри scope:**
1. Регистрация 4 plugin'ов в `plugins-manifest.json` (target=consumer, не активируются в brain runtime).
2. Активация 1 plugin'а (Context7) на user-level brain'а через `settings-fragment.json` + cache cp.
3. Закрытие техдолга `install-plugins.sh` — фильтрация по `target` ENUM (введён в v1.1, но не операционализирован в коде).
4. Bump `docs/brain-plugin-routing.md` v1.1 → v1.2 с новыми rows.
5. Release brain v1.2 → v1.3 + git tag.
**Что вне scope:**
- Реальный deploy в Liderra (блокирован outstanding'ом v1.0: lychee 33 broken links + Liderra main не запушен). Это Phase 1C / отдельный chat.
- Phase 2 stack-gated плагины (figma, vercel, supabase, huggingface, data-engineering) — ждут ответов по стеку.
- Кастомные brain skills (skill-creator output) — отдельная инициатива.
- Pravila v2 bump — отложен до накопления изменений.
---
## §2. 5 артефактов Phase 1
| # | Plugin | Marketplace | Тип | Author | Target | Active in brain? |
|---|---|---|---|---|---|---|
| 1 | `code-review` | `anthropics/claude-plugins-official` | pure plugin | Anthropic | `consumer` | ✗ |
| 2 | `security-guidance` | `anthropics/claude-plugins-official` | plugin + hooks | Anthropic | `consumer` | ✗ |
| 3 | `pr-review-toolkit` | `anthropics/claude-plugins-official` | plugin (multi-agent) | Anthropic | `consumer` | ✗ |
| 4 | `telegram` | `anthropics/claude-plugins-official` (external_plugins/) | plugin + bundled MCP | community-managed | `consumer` | ✗ |
| 5 | `context7` | `anthropics/claude-plugins-official` (external_plugins/) | plugin + bundled MCP | Upstash (community-managed) | `user-level+consumer` | ✓ |
**Marketplace HEAD SHA для pinning:** `00679aef889efe36bb0389f81d70b6229a2013ee` (commit 2026-05-09 21:40 +0100; тот же SHA, что у plugin-dev и hookify в Phase 0 install).
### §2.1. Reality check фактических плагинов
Все 5 верифицированы в локальном marketplace cache (`~/.claude/plugins/marketplaces/claude-plugins-official/`):
- Plugin manifests прочитаны: `plugins/code-review/.claude-plugin/plugin.json`, `plugins/security-guidance/.claude-plugin/plugin.json`, `plugins/pr-review-toolkit/.claude-plugin/plugin.json`, `external_plugins/telegram/.claude-plugin/plugin.json`, `external_plugins/context7/.claude-plugin/plugin.json`.
- Marketplace entries в `.claude-plugin/marketplace.json` подтверждены (lines 528-538, 572-581, 1455-1465, 1712-1722, 1962-1967 файла marketplace.json — текст `"name": "<plugin>"`).
- Bundled MCP в Context7: [external_plugins/context7/.mcp.json](../../../../../C:/Users/Administrator/.claude/plugins/marketplaces/claude-plugins-official/external_plugins/context7/.mcp.json) — `{"context7": {"command": "npx", "args": ["-y", "@upstash/context7-mcp"]}}`.
- Bundled MCP в Telegram: [external_plugins/telegram/.mcp.json](../../../../../C:/Users/Administrator/.claude/plugins/marketplaces/claude-plugins-official/external_plugins/telegram/.mcp.json) — `{"mcpServers": {"telegram": {"command": "bun", "args": [...]}}}`.
### §2.2. Categorization rationale
**Почему Context7 = `user-level+consumer` (активен в brain):**
- Brain dev = ежедневное чтение Anthropic SDK / claude-plugins / marketplace specs. Context7 даёт авторитетный structured doc lookup без сёрфинга по GitHub raw url'ам.
- Не дублирует существующий tool — нет default'а на «docs API/SDK lookup» в routing.md §3.1; Context7 заполняет новый класс задачи, не overlap'ит.
**Почему остальные 4 = `consumer-universal` (только в consumer):**
- `code-review`: conflict с `superpowers:requesting-code-review` (default routing.md §3.1 line 69). Активация в brain создаст ambiguity «который plugin использовать».
- `security-guidance`: conflict с built-in `/security-review` command + bundled `hooks.json` плагина может конфликтовать с brain'овыми 7 economy-hooks.
- `pr-review-toolkit`: для brain (1 maintainer, простой PR workflow) overkill. В Liderra (команда) полезен.
- `telegram`: brain не имеет need в notifications (локальная работа, нет long-running CI). В Liderra при deploy/CI полезен.
---
## §3. Архитектура и data flow
### §3.1. Unified plugin track (вместо двойного track A/B)
Все 5 артефактов — **plugin'ы**. Context7 и telegram несут `.mcp.json` внутри plugin'а (bundled MCP), который автоматически регистрируется как MCP-сервер при включении plugin'а в `enabledPlugins`. Никаких отдельных правок `mcp-user.template.json` или `.mcp.json.template` для них **не требуется**.
**Distribute pipeline (brain → consumer):**
```
brain/user-level-files/plugins-manifest.json
│ scripts/install.sh --target=<consumer> --version=brain-v1.3 --with-plugins=yes
scripts/lib/install-plugins.sh --install-target=consumer
│ jq filter: target ∈ {"consumer", "user-level+consumer"}
claude plugin install <name>@claude-plugins-official (или JSON fallback)
consumer ~/.claude/plugins/cache/claude-plugins-official/<name>/<sha>/
consumer ~/.claude/settings.json enabledPlugins.<name>=true (если CLI / manual edit)
```
**Brain runtime pipeline:**
```
brain/user-level-files/plugins-manifest.json → 13 entries (8 existing + 5 new)
brain/user-level-files/settings-fragment.json → 9 enabledPlugins (8 existing + context7)
│ scripts/install.sh --target=$HOME/.claude --version=brain-v1.3
install.sh detects mode=user; --install-target=user
filter target ∈ {"user-level", "user-level+consumer"}
│ 9 plugins pass: 6 existing user-level (claude-md-management, superpowers, skill-creator,
│ claude-code-setup, plugin-dev, hookify) + 2 existing user-level+consumer
│ (ui-ux-pro-max, frontend-design) + new context7
│ 4 filtered out: code-review, security-guidance, pr-review-toolkit, telegram
merge-settings.sh: brain ~/.claude/settings.json enabledPlugins replaced с 9 entries
cache cp: ~/.claude/plugins/cache/claude-plugins-official/context7/00679aef889e/ создан
```
### §3.2. Track unified rationale
Раньше (раннее brainstorming) я различал «Track A — plugins» и «Track B — MCP-серверы через `.mcp templates`». Reality check показал, что Context7 и Telegram — **plugin'ы**, которые **внутри** содержат `.mcp.json`. Claude Code автоматически регистрирует bundled MCP при enabling plugin'а. Это упрощает архитектуру до одного track'а.
Корректировка: поле `kind: "plugin" | "mcp"` в plugins-manifest **не нужно** — все entries plugin'ы. MCP-only артефакты (например, `magic` 21st.dev в `mcp-user.template.json`) остаются отдельной концепцией для **legacy** случаев, когда есть raw MCP-сервер без plugin wrapper.
---
## §4. Изменения по файлам (deliverables)
### §4.1. `user-level-files/plugins-manifest.json` (+5 entries)
Сейчас 8 entries в [plugins-manifest.json](../../../user-level-files/plugins-manifest.json). Добавляются 5 новых после `hookify` блока (line 102), перед закрывающим `}`.
**Template entry для 4 consumer-only (code-review, security-guidance, pr-review-toolkit, telegram):**
```json
"<plugin-name>@claude-plugins-official": [
{
"scope": "user",
"installPath": null,
"version": "00679aef889e",
"installedAt": null,
"lastUpdated": "2026-05-12T00:00:00.000Z",
"gitCommitSha": "00679aef889efe36bb0389f81d70b6229a2013ee",
"installMethod": "registered-only-not-cached",
"target": "consumer",
"category": "consumer-universal"
}
]
```
**Entry для Context7 (cached + active):**
```json
"context7@claude-plugins-official": [
{
"scope": "user",
"installPath": "C:\\Users\\Administrator\\.claude\\plugins\\cache\\claude-plugins-official\\context7\\00679aef889e",
"version": "00679aef889e",
"installedAt": "2026-05-12T<utc-at-commit-time>Z",
"lastUpdated": "2026-05-12T<utc-at-commit-time>Z",
"gitCommitSha": "00679aef889efe36bb0389f81d70b6229a2013ee",
"installMethod": "manual-cp-from-marketplace-Path2",
"target": "user-level+consumer",
"category": "consumer-universal"
}
]
```
**Verification после Edit:**
- `jq empty user-level-files/plugins-manifest.json` exit 0
- `jq '.plugins | length'` == 13
- Per-plugin target check (см. §6.1)
### §4.2. `user-level-files/settings-fragment.json` (+1 ключ)
Сейчас 8 keys в `enabledPlugins` ([settings-fragment.json:2-11](../../../user-level-files/settings-fragment.json#L2-L11)). Добавляется:
```json
"context7@claude-plugins-official": true
```
**4 consumer-only НЕ добавляются** — они не активируются в brain runtime.
### §4.3. `scripts/lib/install-plugins.sh` (рефакторинг)
**Текущее поведение (line 61):**
```bash
for plugin in $(jq -r '.plugins | keys[]' "$manifest"); do
```
Берёт все entries без фильтрации.
**Новое поведение:**
```bash
# New flag parsing (после строки 28)
case "$1" in
--marketplaces=*) marketplaces="${1#--marketplaces=}" ;;
--manifest=*) manifest="${1#--manifest=}" ;;
--install-target=*) install_target="${1#--install-target=}" ;;
*) log_error "Unknown arg: $1"; exit 1 ;;
esac
# Fallback default (backwards-compat для прямых вызовов из тестов)
if [ -z "${install_target:-}" ]; then
log_warn "--install-target not specified, defaulting to 'user' (deprecated path)"
install_target="user"
fi
# Filter expression
case "$install_target" in
user)
filter='.plugins | to_entries[] | select(.value[0].target == "user-level" or .value[0].target == "user-level+consumer") | .key'
;;
consumer)
filter='.plugins | to_entries[] | select(.value[0].target == "consumer" or .value[0].target == "user-level+consumer") | .key'
;;
*)
log_error "--install-target must be 'user' or 'consumer', got: $install_target"; exit 1 ;;
esac
# Use filter
for plugin in $(jq -r "$filter" "$manifest"); do
# ... rest unchanged from current line 62-74
done
```
**Также корректировка `scripts/install.sh` line 145-150:**
```bash
if [ "$with_plugins" = "yes" ]; then
if [ -f "$src/marketplaces.json" ] && [ -f "$src/plugins-manifest.json" ]; then
# Map detected $mode (user|project) to --install-target (user|consumer)
plugin_target=$([ "$mode" = "user" ] && echo "user" || echo "consumer")
bash "$SCRIPT_DIR/lib/install-plugins.sh" \
--marketplaces="$src/marketplaces.json" \
--manifest="$src/plugins-manifest.json" \
--install-target="$plugin_target" || exit 6
fi
fi
```
**Verification после Edit:**
- `bash -n scripts/lib/install-plugins.sh scripts/install.sh` exit 0
- Regression: `bash scripts/install.sh --dry-run --target=$HOME/.claude --version=brain-v1.2` exit 0
- Functional filter test (см. §6.3)
### §4.4. `docs/brain-plugin-routing.md` (v1.1 → v1.2)
**Header:**
```diff
- # Brain Plugin Routing Rules (v1.1)
+ # Brain Plugin Routing Rules (v1.2)
- **Дата:** 11.05.2026
+ **Дата:** 12.05.2026
```
**§2.1 — +1 row Context7 (после строки hookify):**
```markdown
| **context7** | `anthropics/claude-plugins-official` | `consumer-universal` (active in brain via target=user-level+consumer) | docs lookup для API/SDK/marketplaces (Anthropic SDK, claude-plugins, future Vue/Vuetify Liderra); plugin bundles MCP via `npx @upstash/context7-mcp` | каждодневный код-write (не doc-lookup) |
```
**§3.1 — +1 row (после строки «Запутался — какой плагин брать»):**
```markdown
| Документация API/SDK/marketplace (Anthropic SDK, claude-plugins-official, Vue/Vuetify в Liderra) | `context7` MCP (через plugin context7 enabledPlugins) | `WebFetch` если context7 npx down/offline ИЛИ источник вне SDK doc trees (общая статья, blog post) | структурированный version-pinned lookup vs unstructured web scrape |
```
**§3.2 — +1 tie-breaker (после №3 «User написал /skill-name явно»):**
```markdown
4. **Community-managed plugin предложен для активного use** — добавить в `enabledPlugins` только если: (a) Anthropic-маркетплейс с явной верификацией (community-managed tag там есть, но Anthropic git-hosted), ИЛИ (b) user явно проаппрувил риск, ИЛИ (c) plugin изолирован (read-only queries без PII). Иначе оставить `registered-only-not-cached` для consumer-distribute, не активируя в brain.
```
**§4.2 — +5 rows (после строки #18 hookify):**
```markdown
| #1 | `context7` | `consumer-universal` (active in brain user-level via target=user-level+consumer) | installed brain v1.3 (manual-cp-from-marketplace-Path2); **community-managed** (Upstash) + npx runtime dep |
| #2 | `code-review` | `consumer-universal` | registered brain v1.3 (registered-only-not-cached); Anthropic-authored |
| #7 | `security-guidance` | `consumer-universal` | registered brain v1.3 (registered-only-not-cached); Anthropic-authored; plugin несёт own hooks.json — потенциальный конфликт с brain economy-hooks при activation |
| #10 | `pr-review-toolkit` | `consumer-universal` | registered brain v1.3 (registered-only-not-cached); Anthropic-authored |
| #12 | `telegram` | `consumer-universal` | registered brain v1.3 (registered-only-not-cached); **community-managed** + bun runtime dep + post-install pairing required |
```
**История версий — +1 entry в начало (между v1.1 и v1.0):**
```markdown
- **v1.2 от 2026-05-12** — Brain v1.3 release: Phase 1 deliverables. Added 5 plugins (#1 context7 active-in-brain, #2 code-review, #7 security-guidance, #10 pr-review-toolkit, #12 telegram — все consumer-universal через target=consumer ИЛИ user-level+consumer). install-plugins.sh learned `--install-target` flag + filter по `target` ENUM (closing tech-debt unmentioned-but-implicit из v1.0). §2.1 +1 row, §3.1 +1 row (docs lookup новый класс задачи), §3.2 +1 tie-breaker (community-managed), §4.2 +5 rows.
```
### §4.5. `.brain-version` (v1.2 → v1.3)
```diff
- v1.2
- sha: 276a47f<rest>
+ v1.3
+ sha: <commit-5-sha-after-atomic-commit>
```
### §4.6. Cache cp Context7 (filesystem side-effect, не git-tracked в brain repo)
Действие при execution commit 4:
```bash
cp -r ~/.claude/plugins/marketplaces/claude-plugins-official/external_plugins/context7/ \
~/.claude/plugins/cache/claude-plugins-official/context7/00679aef889e/
```
Соответствует pattern'у Phase 0 plugin-dev/hookify cache cp ([plugins-manifest.json:81-89](../../../user-level-files/plugins-manifest.json#L81-L89)).
---
## §5. Conflicts и mitigation
| ID | Конфликт | Mitigation | Where it lives |
|---|---|---|---|
| **C1** | `code-review` plugin vs `superpowers:requesting-code-review` | Не активировать code-review в brain. Routing.md §3.1 line 69 default остаётся superpowers | settings-fragment.json НЕ содержит ключ |
| **C2** | `security-guidance` bundled hooks.json vs brain economy-hooks | Не активировать security-guidance в brain. Built-in `/security-review` команда покрывает need | settings-fragment.json НЕ содержит ключ |
| **C3** | `pr-review-toolkit` agents vs `superpowers:requesting-code-review` agents | В brain оба не активны (no conflict). В consumer — задача PSR template'а | вне scope brain routing.md |
| **C4** | `telegram` notifications vs brain (нет аналога) | No conflict в brain | — |
| **C5** | `context7` MCP vs `WebFetch` для docs | Routing.md §3.1 +1 row: Context7 default for API/SDK; WebFetch fallback | docs/brain-plugin-routing.md v1.2 §3.1 |
| **C6** | Context7 npx runtime требование | Pre-install dep check (см. §7); если npx absent — Context7 entry остаётся, но enabledPlugins=false до решения dep | plan execution (Phase 1B) |
| **C7** | Telegram bun runtime требование (для consumer) | Pre-distribute dep check для Liderra; bun на Windows — отдельная установка. Spec помечает: telegram опционален для consumer без bun | — (не блокер brain v1.3) |
| **C8** | Context7 MCP coexistence c `magic` (21st.dev) MCP в `~/.claude.json:mcpServers` | merge-mcp.sh идемпотентно добавит context7 entry рядом с magic. **Не верифицировано** — verify-checkpoint в plan | plan execution |
| **C9** | Community-managed plugin'ы (Context7, telegram) vs brain до v1.2 — только Anthropic-authored | Spec disclaimer + routing.md §3.2 tie-breaker #4 | docs/brain-plugin-routing.md v1.2 §3.2 |
| **C10** | install-plugins.sh refactor ломает обратную совместимость (флаг `--install-target`) | Fallback-to-user with warning (см. §4.3) для прямых вызовов | scripts/lib/install-plugins.sh |
---
## §6. Verification (как проверять каждый артефакт в Phase 1B)
### §6.1. Per-file verification
**A. plugins-manifest.json:**
```bash
jq empty user-level-files/plugins-manifest.json
jq '.plugins | length' user-level-files/plugins-manifest.json # → 13
for p in code-review security-guidance pr-review-toolkit telegram context7; do
jq -r ".plugins[\"$p@claude-plugins-official\"][0].target" user-level-files/plugins-manifest.json
done
# Expected: consumer, consumer, consumer, consumer, user-level+consumer
```
**B. settings-fragment.json:**
```bash
jq empty user-level-files/settings-fragment.json
jq '.enabledPlugins | length' user-level-files/settings-fragment.json # → 9
jq '.enabledPlugins["context7@claude-plugins-official"]' user-level-files/settings-fragment.json # → true
```
**C. install-plugins.sh:**
```bash
bash -n scripts/lib/install-plugins.sh scripts/install.sh
# Functional dry-run regression
bash scripts/install.sh --dry-run --target=$HOME/.claude --version=brain-v1.2 # exit 0
# Filter functional test
BRAIN_ROOT=$PWD bash scripts/lib/install-plugins.sh \
--marketplaces=user-level-files/marketplaces.json \
--manifest=user-level-files/plugins-manifest.json \
--install-target=user 2>&1 | grep "Installing" # → 9 plugins
```
**D. routing.md:**
```bash
grep -E "^# Brain Plugin Routing Rules \(v1\.2\)$" docs/brain-plugin-routing.md
grep -c "^| **context7**" docs/brain-plugin-routing.md # → 1+ (в §2.1)
grep -cE "^\| #(1|2|7|10|12) \|" docs/brain-plugin-routing.md # → ≥5
```
**E. .brain-version:**
```bash
head -1 .brain-version # → v1.3
```
**F. Context7 cache:**
```bash
test -d ~/.claude/plugins/cache/claude-plugins-official/context7/00679aef889e
jq empty ~/.claude/plugins/cache/claude-plugins-official/context7/00679aef889e/.claude-plugin/plugin.json
jq -r .name ~/.claude/plugins/cache/claude-plugins-official/context7/00679aef889e/.claude-plugin/plugin.json
# Expected: context7
```
### §6.2. Runtime smoke test (после install.sh + restart)
```bash
jq '.enabledPlugins["context7@claude-plugins-official"]' ~/.claude/settings.json # → true
npx -y @upstash/context7-mcp --help 2>&1 | head -5 # exit 0
```
Manual: открыть новую сессию, проверить что Skill tool / mcpServers видит context7.
### §6.3. Regression check (existing 8 plugins после install-plugins.sh refactor)
```bash
# До refactor (commit 1 в HEAD)
git stash
git checkout HEAD~1 -- scripts/lib/install-plugins.sh scripts/install.sh
bash scripts/install.sh --dry-run --target=$HOME/.claude --version=brain-v1.2 | tee before.txt
# После refactor
git stash pop
bash scripts/install.sh --dry-run --target=$HOME/.claude --version=brain-v1.2 | tee after.txt
diff before.txt after.txt # diff не должен содержать added/removed plugins из 8 existing
```
### §6.4. Final verification gate
Перед claim «Phase 1 готов» — обязательно invoke `superpowers:verification-before-completion`. Skill сам проверит:
- atomic commits sequence (5 commits) в git log
- git tag `brain-v1.3` создан
- `.brain-version` соответствует git rev-parse HEAD
- verify.sh exit 0
- runtime smoke test (Context7 в новой сессии) — verified или явно «не верифицировал X»
---
## §7. Runtime dependencies (pre-install checks)
Phase 1B execution (writing-plans) обязан включить pre-install dep check как отдельный helper. Возможный артефакт `scripts/verify-deps.sh`:
```bash
require_runtime() {
local cmd="$1"; local plugin="$2"
if ! command -v "$cmd" >/dev/null 2>&1; then
log_warn "$plugin requires '$cmd' — not in PATH"
return 1
fi
log_info "$plugin runtime OK: $cmd ($(command -v "$cmd"))"
return 0
}
require_runtime npx context7 || log_warn "context7 будет в manifest но enabledPlugins=false"
require_runtime bun telegram || log_warn "telegram остаётся registered-only для consumer без bun"
```
Не верифицировал, что `npx` и `bun` присутствуют на машине Дмитрия — это входит в Phase 1B как первый шаг execution.
---
## §8. Atomic commits sequence (Phase 1B execution)
5 коммитов, каждый — один логический change, self-contained, reversible.
| # | Commit message | Files modified | Verify gate |
|---|---|---|---|
| 1 | `feat(brain-spec): Phase 1 design (consumer-universal plugins + context7 activation)` | spec doc (this file) | markdown self-review |
| 2 | `refactor(brain-install): filter plugins by target ENUM in install-plugins.sh` | scripts/lib/install-plugins.sh, scripts/install.sh | bash -n + regression dry-run |
| 3 | `feat(brain-plugins): register 4 consumer-universal plugins (code-review, security-guidance, pr-review-toolkit, telegram)` | plugins-manifest.json (+4) | jq schema + target check |
| 4 | `feat(brain-plugins): register and activate context7 user-level+consumer` | plugins-manifest.json (+1), settings-fragment.json (+1), cache cp side-effect | jq + cache dir + runtime smoke |
| 5 | `docs(brain-routing): bump v1.1 → v1.2 with Phase 1 entries; chore brain-version v1.2 → v1.3` | docs/brain-plugin-routing.md, .brain-version | grep version + verify.sh |
После commit 5: `git tag brain-v1.3` (не амендится; следующие итерации — `brain-v1.3.1` per memory project_outstanding_items rule).
**Push на origin/main:** ТОЛЬКО после явного user-approve, не auto.
### §8.1. Rollback strategy
| Что сломалось | Rollback |
|---|---|
| Spec self-review выявил противоречие (commit 1) | Amend commit 1 (изолирован) |
| install-plugins.sh регрессия (commit 2) | `git revert <c2-sha>` — manifest и spec остаются |
| 4 entries малформированы (commit 3) | `git revert <c3-sha>` — install-plugins.sh уже умеет filter |
| Context7 cache cp fail / npx broken (commit 4) | `git revert <c4-sha>` + `rm -rf ~/.claude/plugins/cache/claude-plugins-official/context7/` |
| routing.md mismatch (commit 5) | `git revert <c5-sha>` |
---
## §9. Открытые риски
### §9.1. Технические
- **C6 npx availability** — не верифицировано на машине Дмитрия. Если npx absent → Context7 в brain runtime не работает; деградация до registered-only.
- **C7 bun availability** — не верифицировано для Liderra deploy; не блокер brain v1.3, но блокер Liderra distribute telegram.
- **C8 MCP coexistence** — merge-mcp.sh не тестировался на сценарии «magic + context7 одновременно». Verify-checkpoint в plan.
- **lychee/markdownlint** — не верифицировано наличие на машине.
- **shellcheck** — не верифицировано наличие.
### §9.2. Документационные
- Spec self-review (§10) может выявить ambiguity, требующую правки до Phase 1B start'а.
- routing.md changes v1.2 могут потребовать обновления `Plugin_stack_rules.template.md` для consumer'ов (PSR template), но это вне scope brain v1.3 — будет в Phase 1C / Liderra integration.
### §9.3. Risk acknowledgment community-managed
Phase 1 вводит **первые** community-managed plugin'ы в brain distribute (Context7 — Upstash, telegram — community). До v1.2 brain содержал только Anthropic-authored + 2 marketplace с vetted-репутацией (FD/UPM через `nextlevelbuilder/ui-ux-pro-max-skill`, superpowers через `obra/superpowers`).
Для **Liderra (152-ФЗ персданные):**
- Context7 → шлёт только docs queries (не PII). Acceptable.
- Telegram → обмен сообщениями через бота. Перед production-use Liderra — обязательная allowlist policy в `/telegram:access`, явное согласование с заказчиком на data flows.
---
## §10. Spec self-review (выполняется автором перед user review)
**Placeholders scan:**
- `<utc-at-commit-time>` в §4.1 (Context7 entry) — будет подставлен в Phase 1B при actual commit. Это placeholder с явной семантикой, не TODO.
- `<commit-5-sha-after-atomic-commit>` в §4.5 — то же самое.
- `<rest>` в §4.5 (sha plug) — phasing, означает «текущий sha brain-v1.2».
- Других TBD / TODO в тексте нет.
**Internal consistency:**
- §2 таблица 5 артефактов согласована с §4.1-§4.5 файловыми изменениями (5 plugins ↔ 5 entries в manifest).
- §3.1 архитектурная диаграмма соответствует §4.3 install-plugins.sh filter logic.
- §5 C1-C10 не противоречат §6 verification (каждый conflict либо mitigated через config, либо имеет verify-checkpoint).
- §8 atomic commits sequence согласован с §4 deliverables (commit N → file group N).
**Scope check:**
- Фокусирован на одну задачу — Phase 1 release с 5 plugins + install-sh fix.
- НЕ включает Phase 2 stack-gated, custom skills, Liderra deploy — явно вынесено в out-of-scope §1.
- Готов под один writing-plans → executing-plans cycle.
**Ambiguity check:**
- `community-managed` — однозначно определено как «не Anthropic-authored, поддержка третьей стороной» (см. marketplace.json tag).
- `target` ENUM — три значения определены в routing.md v1.1 §4.1 (`user-level`, `consumer`, `user-level+consumer`).
- `installMethod` — два значения используются (`manual-cp-from-marketplace-Path2`, `registered-only-not-cached`), оба явно описаны.
**Известные ограничения (не верифицировано):**
- npx availability в env Дмитрия
- bun availability
- shellcheck, markdownlint, lychee availability
- Точное поведение Claude Code при enabling plugin'а с bundled `.mcp.json` — auto-register или нужна manual edit `~/.claude/.claude.json`? Documenting как assumption, verify-checkpoint в Phase 1B commit 4.
---
## §11. Что после этого spec'а
1. **User review этого файла** — phase 1A gate.
2. После approve → invoke `superpowers:writing-plans` для детального implementation plan'а Phase 1B (5 атомарных коммитов по §8).
3. Plan review с пользователем.
4. Invoke `superpowers:executing-plans` для выполнения plan'а с verification checkpoints (§6).
5. Final invoke `superpowers:verification-before-completion` перед claim «Phase 1 brain v1.3 готов».
6. (Опционально, после user-approve) push на origin/main + git tag brain-v1.3.
**Brain v1.3 release не требует Liderra deploy** — это отдельный Phase 1C (или часть Phase 2 при decision point).
+5 -5
View File
@@ -1,5 +1,5 @@
{
"version": "brain-v1.0",
"version": "brain-v1.3",
"created": "2026-05-10T22:03:38Z",
"min_python_version": "3.10",
"required_tools": ["jq", "python", "git", "bash"],
@@ -12,7 +12,7 @@
"docs/Plugin_stack_rules.md": "a6624d13bc1366c572d590a7ab125aaeea9cce091c00264797443b00eeefb864",
"docs/Pravila_raboty_Claude.md": "33adaba80b311269861777422f378438bfd08e1a6b1114c49836dd74a096f14c",
"docs/Tooling.md": "9ac1bde261de859760033d2cc22d8a848279ec540c409bf15b7735f39f8d8f99",
"docs/visualizations/hooks-skills-plugins-map.html": "ad61c5069ac25c70f23315bf7d4c9bd80d2f55380f27f5a95d0e93b80dfe2532"
"docs/visualizations/hooks-skills-plugins-map.html": "dfe16e722505b57c0371b4f72f9183d3fb6a67b2297d0e91497112f36c0cd7bb"
},
"user-mode": {
"hooks/economy-mode-test.py": "8e42f2137ca79206b8b205334cdf89f1ac991932fe9e773c828c8a1496fa2403",
@@ -34,7 +34,7 @@
"project-files/docs/Plugin_stack_rules.template.md": "a6624d13bc1366c572d590a7ab125aaeea9cce091c00264797443b00eeefb864",
"project-files/docs/Pravila_raboty_Claude.template.md": "33adaba80b311269861777422f378438bfd08e1a6b1114c49836dd74a096f14c",
"project-files/docs/Tooling.template.md": "9ac1bde261de859760033d2cc22d8a848279ec540c409bf15b7735f39f8d8f99",
"project-files/docs/visualizations/hooks-skills-plugins-map.html": "ad61c5069ac25c70f23315bf7d4c9bd80d2f55380f27f5a95d0e93b80dfe2532",
"project-files/docs/visualizations/hooks-skills-plugins-map.html": "dfe16e722505b57c0371b4f72f9183d3fb6a67b2297d0e91497112f36c0cd7bb",
"user-level-files/README.md": "1bca220f99df30ef1fbfb9314b8f5182784ba44e44e63e7ded10edd77e3c2cba",
"user-level-files/hooks/economy-mode-test.py": "8e42f2137ca79206b8b205334cdf89f1ac991932fe9e773c828c8a1496fa2403",
"user-level-files/hooks/economy-mode.py": "865f36bba142a717dec18fb1e5f055c17b157bd53cc5fdbc7ef1e8628b3c2f64",
@@ -48,8 +48,8 @@
"user-level-files/hooks/skill-marker.py": "2d2ff205ae1390f87d1f8162e238729fa4d8c12340f02016ee1d54b3fff014a4",
"user-level-files/marketplaces.json": "9017c313525cb78f2078ba79fd974260cb8016f69dbb9a099dcff7b4153af300",
"user-level-files/mcp-user.template.json": "80cce6f971fa3dfca5533becab009060b703c914196a92ac3d6b2e3768b8b923",
"user-level-files/plugins-manifest.json": "1374cf8f4206b972a9ef5be6692773f2b8eaf1016588470a32588539f347f324",
"user-level-files/settings-fragment.json": "cbdda1e23034d0056db5165a85667d6a7d55de6e0629d7be4e9d9d7e4ebb4a7d"
"user-level-files/plugins-manifest.json": "05abd90466e6633466189110ef68ff8cd548df2d05e2d8dbf6745d970ba6f80e",
"user-level-files/settings-fragment.json": "f9cf40f2670b826539421f7df2f0c1f5ef9f447fd01e4954ba4d526b57caf53d"
}
}
}
@@ -1508,7 +1508,7 @@ main { position: relative; z-index: 2; }
<div class="hero-meta">
<span class="caps">Carta · vol. i · 2026</span>
<span class="hero-meta-divider"></span>
<span class="mono">10.05.2026</span>
<span class="mono">11.05.2026</span>
</div>
<h1 class="hero-title display">
@@ -1521,13 +1521,13 @@ main { position: relative; z-index: 2; }
</svg>
<p class="hero-sub">
Иллюстрированный справочник по внутреннему устройству Claude Code в проекте&nbsp;Лидерра.
Иллюстрированный справочник по внутреннему устройству Claude Code в&nbsp;проекте с&nbsp;установленным <span class="mono">claude-brain&nbsp;v1.0</span>.
Что срабатывает в начале промпта, что — посреди вашей работы, и что — в конце.
<strong>Три типа сущностей, семь хуков, пять событий, четыре плагина.</strong>
<strong>Три типа сущностей, семь хуков, пять событий, четыре плагина, четыре MCP-сервера.</strong>
</p>
<div class="hero-stamp">
<span class="num">vIII</span>
<span class="num">vIV</span>
<span class="lbl">Edition · Carta</span>
</div>
</div>
@@ -1687,7 +1687,7 @@ Plugin ──> ничего не делает сам — только дост
<div class="hier-priority-row">
<div class="hier-priority-lvl">1</div>
<div class="hier-priority-content">
<div class="hier-priority-name">Pravila_raboty_Claude_v1_1.md</div>
<div class="hier-priority-name">Pravila_raboty_Claude.md</div>
<div class="hier-priority-note">Продуктовые правила работы Claude, утверждены заказчиком (~13 секций).</div>
</div>
</div>
@@ -1711,7 +1711,7 @@ Plugin ──> ничего не делает сам — только дост
<div class="hier-priority-row">
<div class="hier-priority-lvl">3</div>
<div class="hier-priority-content">
<div class="hier-priority-name">Plugin_stack_rules_v1.md</div>
<div class="hier-priority-name">Plugin_stack_rules.md</div>
<div class="hier-priority-note">Координирующий слой между плагинами (Superpowers + Frontend Design + UPM + 21st Magic), 16 правил.</div>
</div>
</div>
@@ -2088,10 +2088,10 @@ Plugin ──> ничего не делает сам — только дост
</div>
<div class="plugin-card-desc">
Единственный канал правок корневого CLAUDE.md. Не даёт ему расходиться с Pravila и Tooling.
Содержит claude-md-improver (audit) и revise-claude-md (capture learnings).
Содержит claude-md-improver (skill — audit) и revise-claude-md (slash-command — capture learnings).
</div>
<div class="plugin-skills-list">
2&nbsp;skills · инфраструктура CLAUDE.md
1&nbsp;skill + 1&nbsp;slash-command · инфраструктура CLAUDE.md
</div>
</div>
@@ -2116,8 +2116,8 @@ Plugin ──> ничего не делает сам — только дост
<div class="plugin-card-scope">nextlevelbuilder · ui-ux-pro-max-skill</div>
</div>
<div class="plugin-card-desc">
Резерв-библиотека: 50+ стилей, 161 палитра, 57 пар шрифтов, 161 тип продукта, 99 UX-гайдлайнов.
Off-phase tool — активируется только через R14 pipeline в Plugin Stack Rules.
Резерв-библиотека: 67 UI styles, 161 palette, 57 font pairings, 99 UX guidelines, 25 chart types
(across 15+ tech stacks). Off-phase tool — активируется только через R14 pipeline в Plugin Stack Rules.
</div>
<div class="plugin-skills-list">
1&nbsp;skill · резерв-библиотека UI/UX
@@ -2136,8 +2136,8 @@ Plugin ──> ничего не делает сам — только дост
<div class="section-num display-i">VII</div>
<h2 class="section-title">Скилы по&nbsp;плагинам</h2>
<p class="section-lede">
Все 28 скилов сгруппированы по родительскому плагину. 18 принадлежат
одному из 4 установленных плагинов, 10 — &laquo;standalone / встроенные&raquo;
Все 28 capabilities (27 skills + 1 slash-command) сгруппированы по родительскому плагину.
18 принадлежат одному из 4 установленных плагинов (17 skills + 1 command), 10 — &laquo;standalone / встроенные&raquo;
(не доставляются плагином, идут с Claude Code как часть базовой системы).
</p>
@@ -2213,7 +2213,7 @@ Plugin ──> ничего не делает сам — только дост
<div class="sp-cat">
<div class="sp-cat-symbol"></div>
<div class="sp-cat-name">claude-md-management</div>
<div class="sp-cat-meta">2&nbsp;skills · anthropic · claude-plugins-official</div>
<div class="sp-cat-meta">1&nbsp;skill + 1&nbsp;command · anthropic · claude-plugins-official</div>
</div>
<div class="sp-skills-detail">
<div class="sp-skill-row">
@@ -2221,8 +2221,8 @@ Plugin ──> ничего не делает сам — только дост
<div class="sp-skill-what"><em>Audit + targeted updates CLAUDE.md.</em> Единственный канал структурных правок: добавление/удаление секций, версии в&nbsp;шапке, правки правил.</div>
</div>
<div class="sp-skill-row">
<div class="sp-skill-key">revise-claude-md</div>
<div class="sp-skill-what"><em>Захват session-learnings.</em> Новые квирки, команды, паттерны из текущей сессии → автоматически в CLAUDE.md.</div>
<div class="sp-skill-key">revise-claude-md <span style="color:var(--rust); font-style:italic;">(command)</span></div>
<div class="sp-skill-what"><em>Захват session-learnings.</em> Новые квирки, команды, паттерны из текущей сессии → автоматически в CLAUDE.md. Доставляется как slash-command в <span class="mono">commands/</span>, не skill.</div>
</div>
</div>
</div>
@@ -2250,7 +2250,7 @@ Plugin ──> ничего не делает сам — только дост
<div class="sp-skills-detail">
<div class="sp-skill-row">
<div class="sp-skill-key">ui-ux-pro-max</div>
<div class="sp-skill-what"><em>Резерв-библиотека UI/UX.</em> 50+ стилей, 161 палитра, 57 пар шрифтов, 99 UX guidelines, 25 типов графиков для 10 стеков. Активируется через PSR_v1 R14 pipeline.</div>
<div class="sp-skill-what"><em>Резерв-библиотека UI/UX.</em> 67 UI styles, 161 palette, 57 font pairings, 99 UX guidelines, 25 chart types (across 15+ tech stacks). Активируется через PSR R14 pipeline.</div>
</div>
</div>
</div>
@@ -2317,17 +2317,18 @@ Plugin ──> ничего не делает сам — только дост
<div class="section-num display-i">VIII</div>
<h2 class="section-title">Карта на&nbsp;диске</h2>
<p class="section-lede">
Где физически лежит каждый компонент. Хук-скрипты живут отдельно от проекта Лидерры —
это пользовательская инфраструктура Claude Code. Спеки и планы — в репозитории проекта.
Где физически лежит каждый компонент. Три уровня: <em>user</em> (общая инфраструктура Claude Code),
<em>brain (source)</em> (репозиторий-источник, который правится осознанно), <em>project (consumer)</em>
(любой проект, в который brain установлен через <span class="mono">install.sh</span>).
</p>
<div class="fs">
<pre style="margin:0;">
<span class="fs-section-tag">user</span><span class="fs-path">C:\Users\Administrator\<b>.claude\</b></span>
├── settings.json <span class="fs-comment">главный конфиг: permissions + hooks</span>
├── settings.json <span class="fs-comment">главный конфиг: permissions + hooks (собран из settings-fragment.json)</span>
├── settings.json.backup-pre-economy-hardening
├── <span class="fs-path"><b>hooks/</b></span> <span class="fs-comment">наши Python-скрипты хуков</span>
├── <span class="fs-path"><b>hooks/</b></span> <span class="fs-comment">Python-скрипты хуков (синкаются из brain user-level-files/hooks/)</span>
│ ├── skill-marker.py <span class="fs-comment">PreToolUse(Skill)</span>
│ ├── skill-check.py <span class="fs-comment">PreToolUse(Edit|Write|MultiEdit)</span>
│ ├── economy-mode.py (v3) <span class="fs-comment">UserPromptSubmit + state writer</span>
@@ -2339,32 +2340,58 @@ Plugin ──> ничего не делает сам — только дост
│ ├── economy-verifier.py <span class="fs-comment">Stop wrapper</span>
│ └── economy-postcompact.py <span class="fs-comment">PostCompact</span>
├── <span class="fs-path"><b>plugins/cache/</b></span> <span class="fs-comment">загруженные плагины</span>
│ ├── superpowers-dev/superpowers/5.1.0/
│ ├── claude-plugins-official/claude-md-management/
├── <span class="fs-path"><b>plugins/cache/</b></span> <span class="fs-comment">загруженные плагины (marketplace-источники в marketplaces.json)</span>
│ ├── superpowers-dev/superpowers/5.1.0/ <span class="fs-comment">obra/superpowers</span>
│ ├── claude-plugins-official/claude-md-management/1.0.0/
│ ├── claude-plugins-official/frontend-design/
│ └── ui-ux-pro-max-skill/ui-ux-pro-max/
│ └── ui-ux-pro-max-skill/ui-ux-pro-max/2.5.0/
└── <span class="fs-path"><b>projects/&lt;cwd&gt;/memory/</b></span> <span class="fs-comment">долгосрочная память</span>
└── <span class="fs-path"><b>projects/&lt;cwd&gt;/memory/</b></span> <span class="fs-comment">долгосрочная память (per-project)</span>
├── MEMORY.md (index)
── feedback_superpowers_hard_rule.md
├── project_state.md
└── reference_github.md
── ... per-project files
<span class="fs-section-tag">project</span><span class="fs-path">c:\моя\проекты\портал crm\<b>Документация\</b></span>
├── CLAUDE.md <span class="fs-comment">главная карта проекта</span>
├── cspell-words.txt <span class="fs-comment">словарь cspell для pre-commit</span>
<span class="fs-section-tag">brain (source)</span><span class="fs-path">c:\моя\проекты\<b>claude-brain\</b></span>
├── manifest.json <span class="fs-comment">SHA-256 hashes всех файлов brain v1.0</span>
├── CLAUDE.md / README.md / CHANGELOG.md
├── docs/Pravila_raboty_Claude_v1_1.md <span class="fs-comment">§12 hard rule</span>
├── docs/Plugin_stack_rules_v1.md <span class="fs-comment">16 правил координации</span>
├── docs/Tooling_v8_3.md <span class="fs-comment">реестр 33 инструментов</span>
├── <span class="fs-path"><b>project-files/</b></span> <span class="fs-comment">копируется в consumer-проекты install.sh'ом</span>
├── CLAUDE.md.template
├── .mcp.json.template <span class="fs-comment">playwright + github + semgrep</span>
│ └── docs/
│ ├── Pravila_raboty_Claude.template.md
│ ├── Plugin_stack_rules.template.md
│ ├── Tooling.template.md
│ └── visualizations/hooks-skills-plugins-map.html <span class="fs-comment">вы тут</span>
├── docs/superpowers/specs/ <span class="fs-comment">спеки фич (этот документ — для visualization)</span>
── 2026-05-10-economy-hook-bypass-closure-design.md
├── docs/superpowers/plans/ <span class="fs-comment">пошаговые планы</span>
── 2026-05-10-economy-hook-bypass-closure.md
└── docs/visualizations/ <span class="fs-comment">визуализации (вы тут)</span>
└── hooks-skills-plugins-map.html
├── <span class="fs-path"><b>user-level-files/</b></span> <span class="fs-comment">копируется в ~/.claude/ install.sh'ом</span>
── hooks/ <span class="fs-comment">7 рантайм + 3 test .py</span>
├── settings-fragment.json <span class="fs-comment">фрагмент для merge в settings.json</span>
── marketplaces.json <span class="fs-comment">3 marketplace-источника</span>
│ ├── plugins-manifest.json <span class="fs-comment">4 плагина + версии</span>
└── mcp-user.template.json <span class="fs-comment">magic (21st.dev)</span>
├── <span class="fs-path"><b>scripts/</b></span> <span class="fs-comment">инструменты sync</span>
│ ├── install.sh <span class="fs-comment">copy brain → consumer / ~/.claude</span>
│ ├── verify.sh <span class="fs-comment">cross-check hashes vs manifest.json</span>
│ └── extract.sh <span class="fs-comment">rescue: consumer → brain</span>
└── docs/ <span class="fs-comment">документация brain'а самого</span>
├── architecture.md
├── how-to-use-brain.md
├── secrets-and-tokens.md
└── sessions/2026-05-11-bootstrap-session.md
<span class="fs-section-tag">project (consumer)</span><span class="fs-path">&lt;consumer-project&gt;/</span>
├── CLAUDE.md <span class="fs-comment">из template, substitutions заполнены при install</span>
├── .mcp.json <span class="fs-comment">project-mode MCP (playwright/github/semgrep)</span>
└── docs/
├── Pravila_raboty_Claude.md <span class="fs-comment">§12 hard rule (без версии в имени)</span>
├── Plugin_stack_rules.md <span class="fs-comment">16 правил координации</span>
├── Tooling.md <span class="fs-comment">реестр инструментов проекта</span>
├── CHANGELOG_claude_md.md
├── superpowers/{specs,plans}/ <span class="fs-comment">создаются по мере работы</span>
└── visualizations/hooks-skills-plugins-map.html <span class="fs-comment">этот файл, installed copy</span>
</pre>
</div>
</div>
@@ -2476,7 +2503,7 @@ Plugin ──> ничего не делает сам — только дост
<div class="graph-legend-section">
<h4>Узлы (категории)</h4>
<div class="graph-legend-item"><span class="graph-legend-swatch" style="background:var(--rust); border-radius:50%;"></span>Плагин (4)</div>
<div class="graph-legend-item"><span class="graph-legend-swatch" style="background:var(--blueprint); border-radius:50%;"></span>Скил (28)</div>
<div class="graph-legend-item"><span class="graph-legend-swatch" style="background:var(--blueprint); border-radius:50%;"></span>Скил/команда (28)</div>
<div class="graph-legend-item"><span class="graph-legend-swatch" style="background:var(--amber); border-radius:50%;"></span>Скрипт хука (7)</div>
<div class="graph-legend-item"><span class="graph-legend-swatch" style="background:var(--sage);"></span>Событие хука (5)</div>
<div class="graph-legend-item"><span class="graph-legend-swatch" style="background:var(--rust); transform:rotate(45deg);"></span>Файл состояния (1)</div>
@@ -2499,11 +2526,88 @@ Plugin ──> ничего не делает сам — только дост
</section>
<!-- ============================================================
XI. ACTIONS
XI. MCP SERVERS
============================================================ -->
<section class="section">
<div class="frame">
<div class="section-num display-i">XI</div>
<h2 class="section-title">MCP-серверы — внешние tool-провайдеры</h2>
<p class="section-lede">
Четыре сервера Model Context Protocol. Один на user-уровне (магазин компонентов), три на project-уровне
(браузер, GitHub API, статанализ). MCP — это <em>не</em> плагин и <em>не</em> хук: это отдельный процесс,
который запускается рядом с Claude Code и предоставляет дополнительные tools через stdio или HTTP.
</p>
<div class="plugins">
<div class="plugin-card">
<div class="plugin-card-header">
<div class="plugin-card-name">magic</div>
<div class="plugin-card-scope">user · stdio · npx</div>
</div>
<div class="plugin-card-desc">
UI-генерация компонентов от 21st.dev. Поиск, inspiration, refiner, logo search — для быстрых
визуальных набросков. Зарегистрирован в <span class="mono">~/.claude/mcp.json</span>
(template: <span class="mono">user-level-files/mcp-user.template.json</span>).
</div>
<div class="plugin-skills-list">
<span class="mono">npx @21st-dev/magic@latest</span> · API_KEY required
</div>
</div>
<div class="plugin-card">
<div class="plugin-card-header">
<div class="plugin-card-name">playwright</div>
<div class="plugin-card-scope">project · stdio · npx</div>
</div>
<div class="plugin-card-desc">
Headless-браузер. Открытие <span class="mono">web/*.html</span>, screenshot, проверка интерактива,
навигация по DOM. Используется для визуальной верификации UI-работы.
</div>
<div class="plugin-skills-list">
<span class="mono">npx @playwright/mcp@latest</span>
</div>
</div>
<div class="plugin-card">
<div class="plugin-card-header">
<div class="plugin-card-name">github</div>
<div class="plugin-card-scope">project · HTTP · hosted</div>
</div>
<div class="plugin-card-desc">
Официальный hosted GitHub MCP. Issues, PRs, файлы, search, actions. Требует
<span class="mono">GITHUB_TOKEN</span> (PAT, scopes: repo, read:org).
Заменил deprecated <span class="mono">@modelcontextprotocol/server-github</span> 06.05.2026.
</div>
<div class="plugin-skills-list">
<span class="mono">https://api.githubcopilot.com/mcp</span>
</div>
</div>
<div class="plugin-card">
<div class="plugin-card-header">
<div class="plugin-card-name">semgrep</div>
<div class="plugin-card-scope">project · stdio · npx</div>
</div>
<div class="plugin-card-desc">
SAST. Семантический поиск и анализ кода через Semgrep rules прямо в Claude Code.
Для security-review и поиска паттернов уязвимостей.
</div>
<div class="plugin-skills-list">
<span class="mono">npx semgrep-mcp</span>
</div>
</div>
</div>
</div>
</section>
<!-- ============================================================
XII. ACTIONS
============================================================ -->
<section class="section">
<div class="frame">
<div class="section-num display-i">XII</div>
<h2 class="section-title">Что вы можете сделать</h2>
<p class="section-lede">
Шесть практических действий. Каждое — одна команда или одно изменение в одном файле.
@@ -2565,8 +2669,8 @@ Plugin ──> ничего не делает сам — только дост
<div>
<div class="caps" style="margin-bottom:6px;">Document meta</div>
<span class="mono">hooks-skills-plugins-map.html</span> &middot;
<span class="mono">2026-05-10</span> &middot;
<span class="mono">10 ч / 7 хуков / 4 плагина / ~22 скила</span>
<span class="mono">2026-05-11</span> &middot;
<span class="mono">brain v1.0 · 7 хуков / 4 плагина / 4 MCP / 28 capabilities</span>
</div>
<div class="foot-ornament">~&nbsp;fin&nbsp;~</div>
<div style="text-align:right;">
@@ -2608,7 +2712,7 @@ const GRAPH_NODES = [
{ id: 'skl:writing-skills', type: 'skill', label: 'writing-skills', desc: 'Создание новых skills.' },
// claude-md-management (2)
{ id: 'skl:md-improver', type: 'skill', label: 'claude-md-improver', desc: 'Audit + targeted updates CLAUDE.md.' },
{ id: 'skl:md-revise', type: 'skill', label: 'revise-claude-md', desc: 'Захват session-learnings.' },
{ id: 'skl:md-revise', type: 'skill', label: 'revise-claude-md (command)', desc: 'Захват session-learnings. Доставляется как slash-command (commands/), не skill.' },
// frontend-design (1)
{ id: 'skl:fd-skill', type: 'skill', label: 'frontend-design', desc: 'Distinctive UI без AI-aesthetics.' },
// ui-ux-pro-max (1)
+6 -1
View File
@@ -144,9 +144,14 @@ elif [ "$mode" = "user" ]; then
# Plugins
if [ "$with_plugins" = "yes" ]; then
if [ -f "$src/marketplaces.json" ] && [ -f "$src/plugins-manifest.json" ]; then
# NOTE: this plugin-install block currently only runs in user mode
# (it sits inside `elif [ "$mode" = "user" ]` above). Future consumer-mode
# plugin install would need a separate block in the `if [ "$mode" = "project" ]`
# branch above, passing --install-target=consumer.
bash "$SCRIPT_DIR/lib/install-plugins.sh" \
--marketplaces="$src/marketplaces.json" \
--manifest="$src/plugins-manifest.json" || exit 6
--manifest="$src/plugins-manifest.json" \
--install-target=user || exit 6
fi
fi
fi
+29 -2
View File
@@ -18,16 +18,30 @@ source "$SCRIPT_DIR/common.sh"
marketplaces=""
manifest=""
install_target=""
while [ $# -gt 0 ]; do
case "$1" in
--marketplaces=*) marketplaces="${1#--marketplaces=}" ;;
--manifest=*) manifest="${1#--manifest=}" ;;
--install-target=*) install_target="${1#--install-target=}" ;;
*) log_error "Unknown arg: $1"; exit 1 ;;
esac
shift
done
# Backwards-compat: если флаг не передан, default 'user' с warning
if [ -z "$install_target" ]; then
log_warn "--install-target not specified, defaulting to 'user' (deprecated path)"
install_target="user"
fi
# Validate
case "$install_target" in
user|consumer) ;;
*) log_error "--install-target must be 'user' or 'consumer', got: $install_target"; exit 1 ;;
esac
[ -f "$marketplaces" ] || { log_error "Marketplaces file: $marketplaces not found"; exit 1; }
[ -f "$manifest" ] || { log_error "Manifest file: $manifest not found"; exit 1; }
@@ -57,8 +71,21 @@ for mp in $(jq -r 'keys[]' "$marketplaces"); do
fi
done
# Install plugins
for plugin in $(jq -r '.plugins | keys[]' "$manifest"); do
# Install plugins (filtered by target ENUM per --install-target)
case "$install_target" in
user)
filter='.plugins | to_entries[] | select(.value[0].target == "user-level" or .value[0].target == "user-level+consumer") | .key'
;;
consumer)
filter='.plugins | to_entries[] | select(.value[0].target == "consumer" or .value[0].target == "user-level+consumer") | .key'
;;
*)
log_error "internal: unhandled install_target=$install_target (should have been validated above)"
exit 1
;;
esac
for plugin in $(jq -r "$filter" "$manifest"); do
expected_sha=$(jq -r ".plugins[\"$plugin\"][0].gitCommitSha" "$manifest")
expected_ver=$(jq -r ".plugins[\"$plugin\"][0].version" "$manifest")
+130 -5
View File
@@ -8,7 +8,9 @@
"version": "2.5.0",
"installedAt": "2026-05-08T04:27:19.451Z",
"lastUpdated": "2026-05-08T04:27:19.451Z",
"gitCommitSha": "b7e3af80f6e331f6fb456667b82b12cade7c9d35"
"gitCommitSha": "b7e3af80f6e331f6fb456667b82b12cade7c9d35",
"target": "user-level+consumer",
"category": "consumer-UI"
}
],
"claude-md-management@claude-plugins-official": [
@@ -18,7 +20,9 @@
"version": "1.0.0",
"installedAt": "2026-05-09T11:00:16.145Z",
"lastUpdated": "2026-05-09T11:00:16.145Z",
"gitCommitSha": "76b35e91d1c99c090b1a08dade53bcc5e352c1b2"
"gitCommitSha": "76b35e91d1c99c090b1a08dade53bcc5e352c1b2",
"target": "user-level",
"category": "meta"
}
],
"superpowers@superpowers-dev": [
@@ -28,7 +32,9 @@
"version": "5.1.0",
"installedAt": "2026-05-09T11:57:22.170Z",
"lastUpdated": "2026-05-09T11:57:22.170Z",
"gitCommitSha": "f2cbfbefebbfef77321e4c9abc9e949826bea9d7"
"gitCommitSha": "f2cbfbefebbfef77321e4c9abc9e949826bea9d7",
"target": "user-level",
"category": "process"
}
],
"frontend-design@claude-plugins-official": [
@@ -38,8 +44,127 @@
"version": "unknown",
"installedAt": "2026-05-09T13:02:38.251Z",
"lastUpdated": "2026-05-10T21:02:22.266Z",
"gitCommitSha": "76b35e91d1c99c090b1a08dade53bcc5e352c1b2"
"gitCommitSha": "76b35e91d1c99c090b1a08dade53bcc5e352c1b2",
"target": "user-level+consumer",
"category": "consumer-UI"
}
],
"skill-creator@claude-plugins-official": [
{
"scope": "user",
"installPath": "C:\\Users\\Administrator\\.claude\\plugins\\cache\\claude-plugins-official\\skill-creator\\00679aef889e",
"version": "00679aef889e",
"installedAt": "2026-05-11T12:33:00.000Z",
"lastUpdated": "2026-05-11T10:26:01.750Z",
"gitCommitSha": "unknown",
"installMethod": "manual-git-clone-Path2",
"target": "user-level",
"category": "meta"
}
],
"claude-code-setup@claude-plugins-official": [
{
"scope": "user",
"installPath": "C:\\Users\\Administrator\\.claude\\plugins\\cache\\claude-plugins-official\\claude-code-setup",
"version": "1.0.0",
"installedAt": "2026-05-11T12:33:00.000Z",
"lastUpdated": "2026-05-11T12:33:00.000Z",
"gitCommitSha": "unknown",
"installMethod": "manual-git-clone-Path2",
"target": "user-level",
"category": "meta"
}
],
"plugin-dev@claude-plugins-official": [
{
"scope": "user",
"installPath": "C:\\Users\\Administrator\\.claude\\plugins\\cache\\claude-plugins-official\\plugin-dev\\00679aef889e",
"version": "00679aef889e",
"installedAt": "2026-05-11T11:10:30.000Z",
"lastUpdated": "2026-05-11T11:10:30.000Z",
"gitCommitSha": "00679aef889efe36bb0389f81d70b6229a2013ee",
"installMethod": "manual-cp-from-marketplace-Path2",
"target": "user-level",
"category": "meta"
}
],
"hookify@claude-plugins-official": [
{
"scope": "user",
"installPath": "C:\\Users\\Administrator\\.claude\\plugins\\cache\\claude-plugins-official\\hookify\\00679aef889e",
"version": "00679aef889e",
"installedAt": "2026-05-11T11:13:29.000Z",
"lastUpdated": "2026-05-11T11:13:29.000Z",
"gitCommitSha": "00679aef889efe36bb0389f81d70b6229a2013ee",
"installMethod": "manual-cp-from-marketplace-Path2",
"target": "user-level",
"category": "meta"
}
],
"code-review@claude-plugins-official": [
{
"scope": "user",
"installPath": null,
"version": "00679aef889e",
"installedAt": null,
"lastUpdated": "2026-05-11T12:18:00.000Z",
"gitCommitSha": "00679aef889efe36bb0389f81d70b6229a2013ee",
"installMethod": "registered-only-not-cached",
"target": "consumer",
"category": "consumer-universal"
}
],
"security-guidance@claude-plugins-official": [
{
"scope": "user",
"installPath": null,
"version": "00679aef889e",
"installedAt": null,
"lastUpdated": "2026-05-11T12:18:00.000Z",
"gitCommitSha": "00679aef889efe36bb0389f81d70b6229a2013ee",
"installMethod": "registered-only-not-cached",
"target": "consumer",
"category": "consumer-universal"
}
],
"pr-review-toolkit@claude-plugins-official": [
{
"scope": "user",
"installPath": null,
"version": "00679aef889e",
"installedAt": null,
"lastUpdated": "2026-05-11T12:18:00.000Z",
"gitCommitSha": "00679aef889efe36bb0389f81d70b6229a2013ee",
"installMethod": "registered-only-not-cached",
"target": "consumer",
"category": "consumer-universal"
}
],
"telegram@claude-plugins-official": [
{
"scope": "user",
"installPath": null,
"version": "00679aef889e",
"installedAt": null,
"lastUpdated": "2026-05-11T12:18:00.000Z",
"gitCommitSha": "00679aef889efe36bb0389f81d70b6229a2013ee",
"installMethod": "registered-only-not-cached",
"target": "consumer",
"category": "consumer-universal"
}
],
"context7@claude-plugins-official": [
{
"scope": "user",
"installPath": "C:\\Users\\Administrator\\.claude\\plugins\\cache\\claude-plugins-official\\context7\\00679aef889e",
"version": "00679aef889e",
"installedAt": "2026-05-11T12:29:49.000Z",
"lastUpdated": "2026-05-11T12:29:49.000Z",
"gitCommitSha": "00679aef889efe36bb0389f81d70b6229a2013ee",
"installMethod": "manual-cp-from-marketplace-Path2",
"target": "user-level+consumer",
"category": "consumer-universal"
}
]
}
}
}
+6 -1
View File
@@ -3,7 +3,12 @@
"ui-ux-pro-max@ui-ux-pro-max-skill": true,
"claude-md-management@claude-plugins-official": true,
"frontend-design@claude-plugins-official": true,
"superpowers@superpowers-dev": true
"superpowers@superpowers-dev": true,
"skill-creator@claude-plugins-official": true,
"claude-code-setup@claude-plugins-official": true,
"plugin-dev@claude-plugins-official": true,
"hookify@claude-plugins-official": true,
"context7@claude-plugins-official": true
},
"permissions": {
"allow": [