# bootstrap-skill-deps-check ## Goal Refactor `project-bootstrap` Step 5.6 (single-skill `superpowers` plugin detector) into a single, generic **Step 5.6 "Skill dependencies check"** that walks the canonical CLAUDE.md template, looks up each trigger line against a `trigger → fulfiller` map, detects what's missing on the host, and prints one chat-only block with prioritized install commands. Replaces the per-skill `Step 5.X` shape (which doesn't scale: every new canonical trigger would need its own mirror section). Subsumes the deferred `[bootstrap-recommend-projects-meta]` task — that task was the seed of this generalization. Bumps `project-bootstrap` 1.6.0 → 1.7.0 (MINOR — adds capability without breaking existing flow). ## Key files - `skills/project-bootstrap/SKILL.md` — replace Step 5.6 contents, bump `version:` 1.6.0 → 1.7.0 - `skills/project-bootstrap/README.md` — Workflow Step 5.6 description + (optional) See also - `skills/project-bootstrap/assets/CLAUDE.md.template` — source of truth for the trigger list (no change here, but the new step reads from it) - `skills/project-bootstrap/assets/skill-deps-map.md` (or `.json` / inline in SKILL.md) — the `trigger → fulfiller` table; new file or inline section, decide during impl - `.wiki/concepts/bootstrap-skill-deps-check.md` — design rationale (why generic over per-skill mirrors, kind: skill vs plugin, MCP server caveat) - `.tasks/STATUS.md` — supersede `[bootstrap-recommend-projects-meta]`; mark this task active when started - `dist/project-bootstrap.skill` — rebuild after changes ## Decisions log - 2026-05-05: chose generic Step 5.6 over `Step 5.7 mirror per missing-skill` shape. Rationale: `bootstrap-recommend-projects-meta` (deferred task) + the analogous gap for `setup-interns` / `using-interns` / `pulling-before-work` / `project-discipline` would all need their own mirror sections — that's a 5×Step-5.X explosion. Single generic step reads the template (already canonical), maps each trigger to its fulfiller, prints one block. - 2026-05-05: scope of detection is the canonical CLAUDE.md template's trigger lines. Don't try to detect arbitrary user-added lines — the project-bootstrap contract is "we own canonical triggers; non-canonical lines are user's responsibility". - 2026-05-05: differentiate `kind: skill` (install via `bash scripts/install.sh `) from `kind: plugin` (install via `/plugin install @`). The install-command line in the chat block differs between the two; one mapping table that flags `kind` keeps the recommendation block honest. - 2026-05-05: MCP-server-backed skills (`using-context7`, `using-projects-meta`, `using-interns`) — only check the `using-X` policy skill. If MCP isn't registered, the `using-X` Prerequisites pointer fires `setup-X` at first use; bootstrap doesn't need to duplicate that detection. Keeps the Step simple. - 2026-05-05: hard rule from current Step 5.6 (`never auto-install`) **carries over** verbatim. Slash-commands aren't callable from a skill; silently mutating `~/.claude/skills/` is overreach. Recommendation only — chat block with copy-pasteable commands. ## Open questions - [ ] Storage of the map: inline in SKILL.md (simplest, single source of truth), or separate `assets/skill-deps-map.md` / `.json` (cleaner, programmatically parseable)? Inline probably fine for MVP — the table is short. - [ ] When the user pinned a non-canonical platform line (e.g. `we're on Linux` on a Windows host), the platform-line check is already handled in Step 5 idempotent merge. Step 5.6 should ignore the platform line entirely — same dependency (`active-platform` skill) regardless of which platform. - [ ] How to handle a CLAUDE.md the user has *removed* canonical triggers from on purpose? Step 5.6 reads from `CLAUDE.md` (the actual project file), not from `template`, so removed lines silently skip the check — correct behavior. Verify in implementation. - [ ] Optional polish: print a one-line "✅ all skill dependencies satisfied" when nothing is missing, to make the silent-success case visible. Probably worth it; very low cost. ## Completed steps - [x] 2026-05-05: read `skills/project-bootstrap/SKILL.md` + README to confirm scope (Step 5.6 located lines 349-389; README Workflow item 5). - [x] 2026-05-05: wrote `.wiki/concepts/bootstrap-skill-deps-check.md` design page (rationale, skill/plugin kind, MCP-server caveat, source-of-truth invariant). - [x] 2026-05-05: replaced SKILL.md Step 5.6 in place with generic `trigger → fulfiller` map (9 rows) + algorithm + recommendation block. Hard rule "never auto-install" preserved verbatim. ✅ all-satisfied case prints one line. - [x] 2026-05-05: bumped SKILL.md `version:` 1.6.0 → 1.7.0 (MINOR per project-discipline Rule 3 — adds capability, absorbs prior single-skill detector cleanly). - [x] 2026-05-05: updated README.md Workflow Step 5.6 description to match the new shape. - [x] 2026-05-05: rebuilt `dist/project-bootstrap.skill` via `scripts/build.sh`, reinstalled to `~/.claude/skills/project-bootstrap/` via `scripts/install.sh`; verified installed `version: 1.7.0`. - [x] 2026-05-05: updated `.wiki/index.md` (added concept entry) and `.wiki/log.md` (ingest + decision lines). - [x] 2026-05-05: closed sibling `[bootstrap-recommend-projects-meta]` 🟢 in same commit (closed by absorption — note in commit message). ## Notes - Triggers in current template (2026-05-05) and their fulfillers — initial seed for the map: | Trigger | Fulfiller | Kind | Install | |---|---|---|---| | `talk like a caveman` | `caveman` | skill | `bash scripts/install.sh caveman` | | `use superpowers` | `superpowers@claude-plugins-official` | plugin | `/plugin install superpowers@claude-plugins-official` | | `use project wiki` | `using-wiki` | skill | `bash scripts/install.sh using-wiki` | | `use task management system` | `using-tasks` | skill | `bash scripts/install.sh using-tasks` | | `check across all projects` | `using-projects-meta` | skill | `bash scripts/install.sh using-projects-meta` | | `pull remote before work` | `pulling-before-work` | skill | `bash scripts/install.sh pulling-before-work` | | `follow project discipline` | `project-discipline` | skill | `bash scripts/install.sh project-discipline` | | `delegate to interns when allowed` | `using-interns` | skill | `bash scripts/install.sh using-interns` | | `we're on Windows` / `we're on Linux` / `we're on macOS` | `active-platform` | skill | `bash scripts/install.sh active-platform` | - Detection paths: `~/.claude/skills//SKILL.md` for skills; `~/.claude/plugins/installed_plugins.json` (`plugins.`) for plugins. Both paths identical on Windows / Linux / macOS under `~`. - Once shipped, close `[bootstrap-recommend-projects-meta]` with a note pointing at the commit that absorbed it. - Versioning per project-discipline Rule 3: 1.6.0 → 1.7.0 (MINOR — adds capability, doesn't break the existing Step-5.6 superpowers detector since it absorbs it cleanly).