# 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//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": "", "lastUpdated": "", "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) 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": "", "lastUpdated": "", "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": "", "lastUpdated": "", "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) 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: ``` - [ ] **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) 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 - `` 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. - `` in Task 3 Step 2 — same: explicit cross-reference to Task 3 Step 1 output. - `` 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?