CLAUDE.md.template gains `session handoff: read on start, write on end` between `pull remote before work` and `follow project discipline` (session-lifecycle clustering). Step 5.6 trigger->fulfiller table gains the corresponding row (template ↔ table source-of-truth invariant). Greenfield-bootstrap'ed projects now ship handoff trigger из коробки. Existing projects unaffected — CLAUDE.md merge in Step 5 is idempotent and respects user removals. Bump 1.11.0 -> 1.12.0 MINOR (new canonical trigger = new capability, backward-compatible). dist/project-bootstrap.skill rebuilt. Closes [session-handoff-bootstrap-template-extend]. Unblocks [session-handoff-existing-projects-upgrade] Path B. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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
- 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. - Confirm. One question, one confirmation. Nothing is written before the user agrees.
- Steps 1–5. Create or skip each piece in order — git, README,
.wiki/,.tasks/,CLAUDE.md. Steps 3 and 4 delegate to the setup-skills. - Step 5.5. Write
bootstrap-manifest.mdrecording the versions ofproject-bootstrap,setup-wiki,setup-tasks,project-discipline,setup-interns, andusing-internsused. - Step 5.6. Skill dependencies check. Walk the canonical trigger list
in
CLAUDE.md, look each up in an embeddedtrigger → fulfillermap, detect what's missing on this host (~/.claude/skills/<name>/SKILL.mdfor skills,~/.claude/plugins/installed_plugins.jsonfor 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. - Commit.
chore: bootstrap project structurefor fresh repos, orchore: upgrade project structureadding only the new files for existing ones. Pushes only on explicit user request. - 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
setup-wiki— companion, owns.wiki/layout.setup-tasks— companion, owns.tasks/layout.using-wiki— runtime policy for working with.wiki/.using-tasks— runtime policy for working with.tasks/.project-discipline— cross-project rules activated by thefollow project disciplinetrigger.setup-interns,using-interns— pair behind thedelegate to interns when allowedtrigger; cheap-LLM delegation under a per-session permission grant.- Karpathy's LLM Wiki gist: https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f