From mmp
Bootstrap mmp in the current repository. Verifies dependencies, copies templates from the plugin into .orchestrator/, and runs /mmp:check. Idempotent — refuses to overwrite existing config.yaml without explicit user confirmation.
How this command is triggered — by the user, by Claude, or both
Slash command
/mmp:bootstrapThe summary Claude sees in its command listing — used to decide when to auto-load this command
# /mmp:bootstrap Bootstrap mmp inside the current git repo. ## Pre-check (hard fail on any) 1. `git rev-parse --is-inside-work-tree` must succeed. → if not, abort with "Not in a git repository. Run `git init` first." 2. `gh auth status` must succeed. → "gh CLI not authenticated. Run `gh auth login`." 3. `gh repo view` must succeed. → "Current repo not linked to a GitHub remote." 4. Each of the three required plugins must have a cache dir matching the marketplace-agnostic glob `~/.claude/plugins/cache/*/<plugin-name>/` (the cache is keyed by marketplace, not GitHub org, so do ...
Bootstrap mmp inside the current git repo.
git rev-parse --is-inside-work-tree must succeed. → if not, abort with
"Not in a git repository. Run git init first."
gh auth status must succeed. → "gh CLI not authenticated. Run
gh auth login."
gh repo view must succeed. → "Current repo not linked to a GitHub remote."
Each of the three required plugins must have a cache dir matching the
marketplace-agnostic glob ~/.claude/plugins/cache/*/<plugin-name>/ (the
cache is keyed by marketplace, not GitHub org, so do not hardcode
claude-plugins-official or any other marketplace name). For each plugin name
P in superpowers code-simplifier code-review, evaluate:
shopt -s nullglob
matches=( ~/.claude/plugins/cache/*/"$P" )
if (( ${#matches[@]} == 0 )); then
echo "✗ upstream plugin missing: $P"
missing+=("$P")
fi
If any plugin is missing, abort with instructions:
/plugin marketplace add claude-plugins-official
/plugin install superpowers
/plugin install code-simplifier
/plugin install code-review
(The marketplace names are guidance only; any source providing a plugin directory of the matching name satisfies the check.)
If .orchestrator/config.yaml already exists:
If .orchestrator/status.yaml already exists:
mkdir -p .orchestrator/archive .orchestrator/improved-tickets
Copy ${CLAUDE_PLUGIN_ROOT}/templates/config.example.yaml to
.orchestrator/config.yaml (unless user chose skip-config-keep-other
in the idempotency step).
Copy ${CLAUDE_PLUGIN_ROOT}/templates/orchestrator-readme.md to
.orchestrator/README.md.
Append ${CLAUDE_PLUGIN_ROOT}/templates/gitignore-snippet.txt to
.gitignore — idempotent. Check if the snippet's first marker line is
already present (e.g. via grep -F on a stable header line from the
snippet); if so, skip. Otherwise append with a leading newline if the
existing .gitignore does not end in one. Create .gitignore if it
does not exist.
4a. Conflict detection: check whether the existing .gitignore already has
a blanket .orchestrator/ entry (line matches exactly .orchestrator/
or .orchestrator without any trailing wildcard or negation). If yes,
warn the user:
Your existing
.gitignorehas a blanket.orchestrator/entry that would override our snippet's selective tracking (the snippet keepsarchive/andimproved-tickets/<id>.original.mdin version control). Edit.gitignoremanually to use the snippet semantics, or remove the blanket line.
Continue with the append regardless — user choice whether to clean up.
AskUserQuestion: "Open .orchestrator/config.yaml in editor now? (yes/no)"
Invoke /mmp:check.
✓ Initialized mmp in <repo>.
Next steps:
1. Edit `.orchestrator/config.yaml`.
2. Run `/mmp:check` to verify.
3. Run `/mmp:run <milestone>` to start.
Use Bash for the pre-check commands and the file operations. Use Read
to confirm template availability under ${CLAUDE_PLUGIN_ROOT}/templates/.
Use AskUserQuestion (structured options) for both the overwrite prompt
and the editor prompt — never freeform yes/no when structured options are
clearer. After the apply phase, invoke /mmp:check and surface its
output before printing the final block.
Inspect $ARGUMENTS for one of --migrate, --refresh, --rollback. Run the
matching script via the Bash tool. Do not use frontmatter ! substitutions
here — those would execute every variant on every invocation (e.g. --rollback
would always run and fail because no backup exists yet on a fresh --migrate).
Migrates project state from v0.3.x to v0.4.0 (and cleans up legacy v0.4.0–v0.4.6 hook entries):
mmp/agents/*.md → .claude/agents/mmp-*.md with sha256 lock_mmp_managed hook entries from .claude/settings.json
left over from older mmp versions. Hooks are now declared in the plugin's
hooks/hooks.json and resolved correctly by Claude Code — no project-level
copy is needed (and v0.4.0–v0.4.6 wrote unresolvable ${CLAUDE_PLUGIN_ROOT}
references that floodeded every tool use with errors)..orchestrator/.gitignoreIdempotent — safe to run multiple times.
Restart Claude Code after running this on an active session so that the plugin-provided hooks load and the cleaned settings take effect.
Invocation: bash ${CLAUDE_PLUGIN_ROOT}/scripts/migrate-v0.3-to-v0.4.sh --step all
Re-copies agents from plugin source, overwriting local customisations. Customised files are backed up to .orchestrator/agent-customisations-<ts>.bak/.
Invocation: bash ${CLAUDE_PLUGIN_ROOT}/scripts/migrate-v0.3-to-v0.4.sh --refresh
Restores agents from the most recent .orchestrator/agent-customisations-*.bak/ directory.
Invocation: bash ${CLAUDE_PLUGIN_ROOT}/scripts/migrate-v0.3-to-v0.4.sh --rollback
npx claudepluginhub ahlerjam/mmp --plugin mmp/bootstrapBuilds an HTTPS bootstrap endpoint that returns per-user JSON configuration (MCP servers, skills, dynamic config) for a Claude add-in, validating Entra JWTs and supporting template interpolation.
/bootstrapBootstraps Vercel-linked repo: preflight checks, provisions Neon Postgres via Vercel, verifies/pulls env vars, runs db migrations and dev startup.
/bootstrapGenerates a hand-written style API quick reference markdown file (API_REFERENCE.md) from the ida-domain source code by exploring Python files, identifying classes and methods, and producing a concise reference.
/bootstrapBootstraps a complete project with security foundation, scaffold (Static/SPA/Workers/Fullstack/Astro), design system, i18n, SEO, tests, and deploy pipeline after gathering requirements.
/bootstrapScaffolds the minimum repo structure required by session-orchestrator, auto-detecting the appropriate tier (fast/standard/deep). Also supports upgrade, retroactive lock, sync-rules, and ecosystem-health subcommands.
/bootstrapScaffolds missing test, lint, and CI infrastructure for JavaScript/TypeScript, Python, Go, Rust projects using standard tools. Detects stack, proposes plan, implements after approval. Scopes: test|lint|ci|all.