Files
claude-skills/skills/project-bootstrap/README.md
vitya 8c547d73af feat(project-bootstrap): generic Step 5.6 skill-deps check
Collapse Step 5.6 from a single-skill detector (only the
superpowers@claude-plugins-official plugin) into a generic
`trigger -> fulfiller` table walker that scales to every canonical
CLAUDE.md trigger.

Inline 9-row map in SKILL.md covers: caveman, superpowers (kind: plugin),
using-wiki, using-tasks, using-projects-meta, pulling-before-work,
project-discipline, using-interns, active-platform. The `kind` flag
(skill | plugin) drives which install command is emitted in the chat-only
recommendation block. Detection paths: ~/.claude/skills/<name>/SKILL.md
for skills, plugins.<id> in ~/.claude/plugins/installed_plugins.json
for plugins.

Algorithm: read project's CLAUDE.md -> match each non-comment line vs
map (substring + tolower, mirrors Step 5 idempotent merge) -> for each
canonical match check disk -> print one chat block listing every missing
fulfiller with copy-pasteable install commands, OR a single
"all dependencies satisfied" line. User-custom lines and removed
canonical lines are silently skipped. Hard rule "never auto-install"
preserved verbatim.

version: 1.6.0 -> 1.7.0 (MINOR per project-discipline Rule 3 -- adds
capability, absorbs prior superpowers-only detector cleanly).

Closes [bootstrap-skill-deps-check] (.tasks/STATUS.md done).
Closes [bootstrap-recommend-projects-meta] by absorption -- the deferred
mirror task was the seed of this generalization; the generic walker now
handles using-projects-meta along with everything else, no per-skill
mirror needed.

Design rationale at .wiki/concepts/bootstrap-skill-deps-check.md:
- why generic over per-skill mirrors (5x mirror explosion)
- skill vs plugin kind distinction
- MCP-server-backed skills (only check using-X policy skill;
  setup-X self-fires via Prerequisites pointer)
- source-of-truth invariant: SKILL map + assets/CLAUDE.md.template
  must stay in sync (a future CI lint could enforce)
2026-05-05 21:21:19 +03:00

5.3 KiB
Raw Blame History

project-bootstrap

Initializes or upgrades a project workspace in one pass: git, .gitignore, README.md, .wiki/ (Karpathy's LLM Wiki layout), .tasks/ (per-task board), and CLAUDE.md with skill triggers.

Operates in two modes, picked automatically:

  • init — empty or near-empty folder. Creates everything from scratch.
  • upgrade — existing project. Detects what's already there, only fills the gaps. Never overwrites without explicit confirmation.

When it triggers

The skill auto-activates on phrases like:

  • "initialize project", "bootstrap", "setup project"
  • "upgrade project", "add wiki", "add tasks"
  • "start project", "set everything up"
  • "let's start a project", "init"

It also triggers when an agent is launched in a fresh folder that the user clearly intends to turn into a workspace.

Prerequisites

project-bootstrap does not lay out .wiki/ or .tasks/ by itself — it delegates to two companion skills, which must be installed on the machine running it:

  • setup-wiki — creates the canonical .wiki/ layout.
  • setup-tasks — creates the canonical .tasks/ layout.

If either is missing, project-bootstrap stops with a clear error rather than falling back to ad-hoc creation. This keeps layout drift between projects bootstrapped at different times debuggable.

What it creates

Path Source Notes
.git/ git init Skipped if repo already initialized.
.gitignore assets/.gitignore.template Skipped if file exists.
README.md minimal stub Skipped if file exists.
.wiki/ delegated to setup-wiki Karpathy LLM Wiki layout — CLAUDE.md, index.md, log.md, overview.md, raw/, entities/, concepts/, packages/, sources/.
.tasks/ delegated to setup-tasks Canonical board — STATUS.md plus per-task <task-slug>.md files.
CLAUDE.md assets/CLAUDE.md.template Skill triggers (use superpowers, use project wiki, etc.). On non-Windows hosts, swap the we're on Windows line for we're on Linux / we're on macOS. On upgrade, the template is treated as a canonical set and merged idempotently — only missing trigger lines are appended after user confirm. Re-runs are no-ops.
.wiki/concepts/bootstrap-manifest.md generated Records which skill versions initialized the project, so cross-project layout drift is debuggable.

Workflow

  1. Detect mode. Inspect the current directory — git, .wiki/, .tasks/, CLAUDE.md, README.md — and print a single summary block: what was found, what will be created, what will be skipped.
  2. Confirm. One question, one confirmation. Nothing is written before the user agrees.
  3. Steps 15. Create or skip each piece in order — git, README, .wiki/, .tasks/, CLAUDE.md. Steps 3 and 4 delegate to the setup-skills.
  4. Step 5.5. Write bootstrap-manifest.md recording the versions of project-bootstrap, setup-wiki, setup-tasks, project-discipline, setup-interns, and using-interns used.
  5. Step 5.6. Skill dependencies check. Walk the canonical trigger list in CLAUDE.md, look each up in an embedded trigger → fulfiller map, detect what's missing on this host (~/.claude/skills/<name>/SKILL.md for skills, ~/.claude/plugins/installed_plugins.json for plugins), and print one chat-only block listing every missing fulfiller with a copy-pasteable install command. Prints a single line when nothing is missing. Never auto-installs, never modifies project files.
  6. Commit. chore: bootstrap project structure for fresh repos, or chore: upgrade project structure adding only the new files for existing ones. Pushes only on explicit user request.
  7. Summary. Final report — what was created, what was skipped, suggested next step.

Rules

  • Never overwrite an existing file without explicit user confirmation.
  • Always show the plan before touching the filesystem.
  • Never invent project details — read what's already there.
  • Commit only files just created — never touch the rest of the tree.
  • Push only after the user explicitly says so.

Install

From the repo root:

Windows (PowerShell):

bash scripts/install.sh project-bootstrap

Linux / macOS (bash):

bash scripts/install.sh project-bootstrap

install.sh works on Windows under git-bash. A native install.ps1 is planned but not required.

The skill installs to ~/.claude/skills/project-bootstrap/. Override the target with CLAUDE_SKILLS_DIR=/path bash scripts/install.sh ….

See also