Files
claude-skills/.tasks/bootstrap-skill-deps-check.md
vitya 05ea501683 meta(tasks): create [bootstrap-skill-deps-check]; supersede [bootstrap-recommend-projects-meta]
New  ready task to refactor project-bootstrap Step 5.6 from a per-skill
mirror shape (superpowers detector + deferred projects-meta detector) into
a single generic "skill dependencies check" that walks the canonical
CLAUDE.md template, maps each trigger line to its fulfiller (skill or
plugin), and prints one chat-only recommendation block with install
commands. Hard rule "never auto-install" carries over verbatim.

Decision driven by the [interns-skills-mvp] commit (0eb7dd1): adding
`delegate to interns when allowed` made it visible that every new
canonical trigger would otherwise need its own Step 5.X mirror — doesn't
scale.

[bootstrap-recommend-projects-meta] marked superseded — that task was the
seed of this generalization; it stays in STATUS.md for archaeology and
will be closed once [bootstrap-skill-deps-check] ships.

.tasks/bootstrap-skill-deps-check.md carries the full spec: scope,
key files, decisions log (5 entries), open questions, initial
trigger→fulfiller seed table.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 19:41:04 +03:00

47 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 <name>`) from `kind: plugin` (install via `/plugin install <name>@<marketplace>`). 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
(none — task created)
## 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/<name>/SKILL.md` for skills; `~/.claude/plugins/installed_plugins.json` (`plugins.<name>`) 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).