@codewizard-dt/bootstrap
v3.2.0
Published
Bootstrap Claude Code projects with an LLM Wiki, reusable skills, hooks, and MCP setup
Readme
@codewizard-dt/bootstrap
Bootstrap Claude Code projects with an LLM Wiki, reusable skills, enforcement hooks, MCP setup, and project scaffolding from one npm CLI.
Repository: https://github.com/codewizard-dt/bootstrap-claude
Description
@codewizard-dt/bootstrap is an npm-distributed setup toolkit for Claude Code users who repeatedly configure the same agent workflow in new repositories. It installs Model Context Protocol servers, syncs a global skill library, copies hook scripts, scaffolds an LLM Wiki, assembles a project-specific MCP tools guide, and provides explicit commands for CI/CD and strict type-checking setup.
The project exists to move AI-agent state out of chat history and into structured, versioned markdown. Requirements, decisions, tasks, UAT specs, bug reports, roadmaps, source summaries, and operating logs all live in a predictable wiki layout, so future Claude Code sessions and subagents can resume work from file-system state instead of relying on prior conversation context.
The package is aimed at developers and teams using Claude Code as a daily engineering assistant. It provides a reusable operating system for AI-assisted software work: durable knowledge, lifecycle-managed work artifacts, slash-command skills, LSP-first code navigation rules, and safety hooks that keep agent behavior consistent across projects.
Architecture
Overview
@codewizard-dt/bootstrap is a CLI-plus-template package, not a long-running service. The Node.js CLI in bin/cli.js dispatches commands to Bash orchestration scripts, and those scripts install global assets, scaffold project-local files, register MCP servers, and invoke the Claude Code CLI for context-sensitive setup. Most state is written into the target project as markdown, JSON, YAML, and shell-generated scaffolding; the package itself remains stateless between invocations.
At a glance, the package entry point selects a script, scripts copy or generate assets, assets become global Claude Code skills/hooks or project-local wiki files, and Claude Code plus MCP servers provide the runtime behavior in the consumer project.
Components
CLI Entry Point
- Responsibility: Routes
bootstrap <command>andnpx @codewizard-dt/bootstrap <command>invocations to the appropriate setup script. - Tech: Node.js CommonJS,
child_process.execFileSync - Inputs: Commands such as
setup,update,install,deploy,migrate,typechecks, anddashboard, plus optional extra arguments for deploy, migration, and dashboard (port override) flows. - Outputs: Executes the selected script with inherited stdio and propagates the script exit status.
- Depends on: Setup Scripts
Setup Scripts
- Responsibility: Coordinate project setup, updates, global installs, explicit deployment scaffolding, Serena bootstrapping, wiki migration, and strict type-checking setup.
- Tech: Bash,
rsync,find,grep,claudeCLI, npm-executed shell scripts - Inputs: Target project path, interactive prompts, CLI flags such as
--dry-run, API keys supplied by environment variables or stdin, and optional user context for deploy/typecheck setup. - Outputs: Global hooks and skills, MCP registrations, project-local
wiki/,raw/,wiki/guides/,.mcp.json,.serena/project.yml, and optional deployment or type-check configuration when those explicit commands are run. - Depends on: CLI Entry Point, Skills Library, Hooks Library, Wiki Scaffold Templates, Prompt Templates, Guide Stubs, Claude Code CLI, MCP servers
MCP Installer
- Responsibility: Registers Serena, Brave Search, Context7, and Playwright MCP servers with the correct user or project scope.
- Tech: Bash,
claude mcp add,uvx,npx, Docker (sharedbrave-search-mcpcontainer), launchd (macOS Playwright LaunchAgent) - Inputs:
--interactive,--project-dir,BRAVE_API_KEY, optionalCONTEXT7_API_KEY, and scope choices from interactive prompts. - Outputs: User-scope MCP registrations for shared tools and project-scope
.mcp.jsonregistration for Serena when selected. - Depends on: Claude Code CLI, uv/uvx, npm package execution
Skills Library
- Responsibility: Provides reusable Claude Code skills for requirements, decisions, tasks, UAT, bugs, roadmaps, research, docs, linting, evals, security audits, flashcards, demos, and other agent workflows.
- Tech: Markdown
SKILL.mdfiles inlib/skills/ - Inputs: User-invoked skill names in Claude Code sessions, file paths, task descriptions, requirements, and project context.
- Outputs: Structured agent behavior, wiki work items, generated reports, UAT specs, documentation updates, and guided workflow transitions.
- Depends on: Target project files, MCP guide rules, installed MCP servers where applicable
Hooks Library
- Responsibility: Enforces safety and Serena-first code navigation policies across Claude Code sessions, including sessions running with permissive tool modes.
- Tech: Node.js hook scripts in
lib/hooks/, shared helper modules inlib/hooks/lib/ - Inputs: Claude Code PreToolUse, PostToolUse, and SessionStart hook payloads for tools such as Read, Write, Edit, Bash, Grep, Glob, and Agent.
- Outputs: Pass-through decisions, block messages, Serena-equivalent suggestions, and navigation state files under
~/.claude/state/. - Depends on: Claude Code hook registration,
.serena/project.yml, global~/.claude/hooks/installation
Wiki Scaffold Templates
- Responsibility: Defines the LLM Wiki directory structure, conventions, lifecycle specs, indexes, archive folders, and Claude guidance installed into target projects.
- Tech: Markdown templates under
lib/scripts/templates/wiki/,CLAUDE.mdsnippets,.gitkeepfiles - Inputs: Target project path and
sync-wiki-scaffold.shcopy policy. - Outputs:
raw/,wiki/knowledge/,wiki/work/, lifecycle files, family indexes, archive directories,wiki/conventions.md,wiki/log.md, and target-projectCLAUDE.mdadditions. - Depends on: Setup Scripts
Guide Stubs
- Responsibility: Builds
wiki/guides/mcp-tools.mdfrom only the MCP sections that apply to the target project. - Tech: Markdown fragments in
lib/scripts/templates/guides/stubs/, Bash assembly inbuild-mcp-guide.sh - Inputs: Target project path and installed MCP server names.
- Outputs: A tailored MCP tools guide in the target project's
wiki/guides/directory. - Depends on: MCP Installer, Setup Scripts
Prompt Templates
- Responsibility: Provide Claude Code with structured instructions for CI/CD setup, wiki migration, Serena configuration, and strict type-checking setup when static templates are too brittle.
- Tech: Markdown prompt files in
lib/prompts/ - Inputs: Target project context, raw guide content, script interpolation, and optional user-provided deployment/typecheck details.
- Outputs: Claude-generated project configuration, workflow files, migrated wiki artifacts, and type-check tooling.
- Depends on: Claude Code CLI, raw guides, Setup Scripts
GitHub Actions Templates
- Responsibility: Supplies repository automation for secret scanning and a Docker/GHCR build-push template.
- Tech: GitHub Actions YAML, Gitleaks action, Docker Buildx actions
- Inputs: Pushes and pull requests to
mainforsecurity.yml; manualworkflow_dispatchforbuild.yml; root-levelDockerfilefor container build execution. - Outputs: Gitleaks scan results, optional GHCR container images, and a placeholder deploy job that must be customized before production use.
- Depends on: GitHub Actions,
.gitleaks.toml, GitHub package permissions
Component Interaction
flowchart LR
subgraph User ["Developer"]
DEV["Shell<br/>npx @codewizard-dt/bootstrap"]
end
subgraph CLI ["Package CLI"]
BIN["bin/cli.js<br/>Node.js"]
end
subgraph Scripts ["lib/scripts/"]
SETUP["setup-project.sh"]
UPDATE["update-project.sh"]
INSTALL["install-global.sh"]
MCPS["install-mcps.sh"]
WIKI["sync-wiki-scaffold.sh"]
GUIDE["build-mcp-guide.sh"]
DEPLOY["setup-deployment.sh"]
SERENA["bootstrap-serena.sh"]
end
subgraph Assets ["Package Assets"]
SKILLS["Skills<br/>lib/skills/"]
HOOKS["Hooks<br/>lib/hooks/"]
TEMPLATES["Wiki Templates<br/>lib/scripts/templates/wiki/"]
STUBS["Guide Stubs<br/>lib/scripts/templates/guides/stubs/"]
PROMPTS["Prompt Templates<br/>lib/prompts/"]
RAW["Raw Guides<br/>raw/guides/"]
end
subgraph Global ["Global Claude Code State"]
GSKILLS["~/.claude/skills/"]
GHOOKS["~/.claude/hooks/"]
GSETTINGS["~/.claude/settings.json<br/>permissions.deny"]
GMCP["User MCPs<br/>Brave, Context7, Playwright"]
end
subgraph Target ["Target Project"]
WIKI_DIR["wiki/ + raw/"]
DOCS["wiki/guides/mcp-tools.md"]
MCP_JSON["Serena (local scope)<br/>~/.claude.json project entry"]
SERENA_CFG[".serena/project.yml"]
WORKFLOWS[".github/workflows/"]
end
subgraph External ["External Tools"]
CLAUDE["Claude Code CLI"]
UVX["uvx<br/>Serena"]
DOCKER["Docker<br/>brave-search-mcp container<br/>http :8941"]
LAUNCHD["launchd<br/>playwright-mcp LaunchAgent<br/>http :8931 (macOS)"]
NPX["npx<br/>Playwright MCP (non-macOS stdio)"]
GHA["GitHub Actions"]
NPM["npm Registry"]
end
DEV -->|CLI args| BIN
BIN -->|execFileSync| SETUP
BIN -->|execFileSync| UPDATE
BIN -->|execFileSync| INSTALL
BIN -->|execFileSync| DEPLOY
SETUP -->|runs| MCPS
SETUP -->|runs| INSTALL
SETUP -->|runs| WIKI
SETUP -->|runs| GUIDE
SETUP -->|runs| SERENA
INSTALL -->|rsync| SKILLS
INSTALL -->|rsync| HOOKS
INSTALL -->|merge deny list| GSETTINGS
SKILLS -->|copy| GSKILLS
HOOKS -->|copy| GHOOKS
MCPS -->|claude mcp add| GMCP
MCPS -->|project scope| MCP_JSON
MCPS -->|launches| UVX
MCPS -->|docker run| DOCKER
MCPS -->|bootstraps plist| LAUNCHD
MCPS -->|non-macOS| NPX
WIKI -->|copy-once + refresh| TEMPLATES
WIKI -->|writes| WIKI_DIR
GUIDE -->|assemble selected sections| STUBS
GUIDE -->|writes| DOCS
DEPLOY -->|claude -p| PROMPTS
DEPLOY -->|reads| RAW
DEPLOY -->|writes| WORKFLOWS
SERENA -->|claude -p| CLAUDE
SERENA -->|writes| SERENA_CFG
WORKFLOWS -->|runs| GHA
DEV -->|npm publish| NPMData Flow
sequenceDiagram
participant Dev as Developer
participant CLI as bin/cli.js
participant Setup as setup-project.sh
participant MCP as install-mcps.sh
participant Global as install-global.sh
participant Wiki as sync-wiki-scaffold.sh
participant Guide as build-mcp-guide.sh
participant Claude as Claude Code CLI
participant Project as Target Project
Dev->>CLI: npx @codewizard-dt/bootstrap setup
CLI->>Setup: execFileSync(setup-project.sh ".")
Setup->>MCP: install-mcps.sh --interactive --project-dir <project>
MCP-->>MCP: docker run brave-search-mcp (http :8941, API key baked in)
MCP-->>MCP: bootstrap playwright launchd agent (http :8931, macOS)
MCP->>Claude: claude mcp add selected servers (http URLs for brave/playwright)
MCP-->>Project: serena registered at local scope (~/.claude.json) when selected
Setup->>Global: install-global.sh --skip-mcps
Global-->>Global: rsync skills to ~/.claude/skills/
Global-->>Global: rsync hooks to ~/.claude/hooks/
Global-->>Global: merge canonical deny list into ~/.claude/settings.json
Setup->>Wiki: sync-wiki-scaffold.sh <project>
Wiki-->>Project: raw/, wiki/, CLAUDE.md snippets, wiki/guides/ (tiered: required + opted-in optional)
Setup->>Guide: build-mcp-guide.sh <project> <installed-mcps>
Guide-->>Project: wiki/guides/mcp-tools.md
Setup->>Claude: bootstrap-serena prompt
Claude-->>Project: .serena/project.yml
Setup-->>Dev: setup completesequenceDiagram
participant Dev as Developer
participant CLI as bin/cli.js
participant Migrate as migrate-project.sh
participant Claude as Claude Code CLI
participant Git as Git
participant Project as Existing Project
Dev->>CLI: npx @codewizard-dt/bootstrap migrate --dry-run
CLI->>Migrate: execFileSync(migrate-project.sh "." "--dry-run")
Migrate-->>Dev: legacy .docs inventory
Dev->>CLI: npx @codewizard-dt/bootstrap migrate
CLI->>Migrate: execFileSync(migrate-project.sh ".")
Migrate->>Git: verify clean tree and create wiki-migration branch
Migrate->>Claude: migration prompt with mapping rules
Claude->>Project: git mv legacy files, synthesize frontmatter, rewrite links
Claude-->>Project: wiki/work indexes and log updates
Migrate-->>Dev: migration branch ready for reviewDesign Decisions
- CLI dispatch stays thin:
bin/cli.jsonly maps command names to scripts, leaving workflow logic in Bash where filesystem setup and command orchestration are easier to inspect and run directly. - Global skills and hooks, project-local wiki: Shared agent behavior is installed once under
~/.claude/, while project knowledge and work state remain versioned inside each repository. - Project-scoped Serena: Serena is registered against an absolute project path in
.mcp.json, avoiding cross-project language-server bleed while keeping other MCPs available globally when appropriate. - Copy-once vs. always-refresh templates: Project-owned files such as indexes and logs are not overwritten, while lifecycle specs, conventions, and guide content can be refreshed from the package.
- Hooks enforce behavior where permissions cannot: PreToolUse and PostToolUse hooks enforce
.envsafety, protected git operations, and Serena-first navigation even when normal allow/deny permissions are bypassed. - Claude-driven scaffolding handles project variance: Deployment, type-checking, Serena configuration, and wiki migration use prompt templates plus
claude -pbecause the right output depends on the consumer project's stack.
Technologies
Languages and runtimes
- Node.js CommonJS for the CLI and hook scripts
- Bash for installation, synchronization, migration, and setup orchestration
- Markdown for skills, prompts, wiki templates, raw guides, and project documentation
- YAML for GitHub Actions workflows and generated Serena/project configuration
- JSON for
package.json,.mcp.json, hook payloads, and Claude Code settings snippets
CLI and package distribution
- npm package distribution with the scoped package name
@codewizard-dt/bootstrap npxexecution for one-command setuppackage.jsonbinmapping to expose thebootstrapcommand
- npm package distribution with the scoped package name
Automation and scripting
rsyncfor idempotent global asset installation and scaffold synchronization- Git for migration preflights, branches, and history-preserving moves
- Shell utilities used by scripts for path resolution, file detection, and template assembly
AI and MCP tooling
- Claude Code CLI for MCP registration and prompt-driven scaffolding
- Model Context Protocol (MCP)
- Serena MCP for LSP-backed code exploration and editing
- Brave Search MCP for web research
- Context7 MCP for library documentation lookup
- Playwright MCP for browser automation and UI inspection
- uv/uvx for launching Serena from its GitHub source
Workflow assets
- Claude Code skills system using
SKILL.md - Claude Code hooks using PreToolUse, PostToolUse, and SessionStart events
- LLM Wiki structure with
raw/,wiki/knowledge/, andwiki/work/ - Mermaid diagrams embedded in documentation
- Claude Code skills system using
CI/CD and security
- GitHub Actions
- Gitleaks and
.gitleaks.toml - Docker Buildx GitHub Actions template
- GitHub Container Registry template workflow
Use Cases
- New Claude Code project bootstrap: Developers can run one command in a repository to install MCP tooling, global skills, global hooks, wiki scaffolding, MCP guides, and Serena configuration, then run deployment scaffolding separately when needed.
- Global agent workflow installation: Users can sync the latest skill and hook library into
~/.claude/without modifying any project by running the install command. - Legacy documentation migration: Existing
.docs/-style projects can be migrated into the current LLM Wiki structure with branch isolation, path mapping, frontmatter synthesis, and link rewrites. - AI-native engineering operations: Teams can manage requirements, decisions, tasks, UAT, roadmaps, bugs, evals, research, demos, and security audits as durable markdown artifacts that agents can read and update.
- Safer code-agent behavior: Serena-first hooks,
.envguards, and protected git operation blocks reduce fragile file access patterns and prevent common agent mistakes across normal and permissive sessions.
Skills Demonstrated
- CLI Tool Development (Node.js): Built an npm-executable CLI with command routing, argument forwarding, inherited stdio, clear usage output, and process exit-code propagation.
- Shell Scripting and Idempotent Automation (Bash, rsync): Implemented repeatable setup scripts with preflight checks, copy-once vs. refresh semantics, interactive and non-interactive modes, and safe global installation behavior.
- AI-Native Workflow System Design: Designed a structured markdown workflow for requirements, decisions, tasks, roadmaps, bugs, UAT, research, evals, and documentation that can be resumed by independent agent sessions.
- Knowledge Management Architecture (LLM Wiki): Modeled project memory as immutable raw sources, timeless knowledge synthesis, and lifecycle-managed work artifacts with conventions, indexes, logs, stable IDs, and typed links.
- Model Context Protocol Integration: Integrated Serena, Brave Search, Context7, and Playwright MCP servers with appropriate scope decisions, API-key handling, and generated MCP usage guidance.
- Claude Code Hook Engineering (Node.js): Built hook scripts that enforce file-safety and LSP-first navigation policies using Claude Code hook payloads, shared helper modules, and persistent navigation state.
- Prompt Engineering for Developer Tooling: Created prompt templates that let Claude Code generate context-sensitive deployment, migration, type-checking, and Serena configuration changes in consumer projects.
- CI/CD Pipeline Configuration (GitHub Actions): Provided security scanning and container build/push workflow templates using Gitleaks, Docker Buildx, GHCR, manual dispatch, and skip guards for repositories without Dockerfiles.
- Developer Experience Design: Organized commands, skills, templates, guides, and troubleshooting paths so repeated Claude Code setup work can be performed from a small set of predictable commands.
- Documentation Systems Engineering: Generated machine-parseable project documentation, skill instructions, lifecycle specs, MCP guides, and runbooks that serve both humans and downstream AI tools.
Deployment
Overview
This project deploys as a public npm CLI package. There is no hosted runtime, database, or production server; publishing a new npm version is the release process, while GitHub Actions provides repository security scanning and an optional manual container-build template.
Prerequisites
node >= 18for local CLI execution and npm packaging.npmwith publish access to the@codewizard-dtscope.- An authenticated npm session via
npm loginor an npm automation token. - Git access to the repository at
[email protected]:codewizard-dt/bootstrap-claude.git. - GitHub Actions enabled for repository CI checks.
- For local smoke tests of setup commands, install Claude Code with
npm install -g @anthropic-ai/claude-code. - For Serena setup smoke tests, install
uvsouvxis available.
Environment Variables
No environment variables are required to build or publish this package from a logged-in npm session. The setup scripts and generated workflows reference the following variables and secrets:
| Variable | Required | Example | Description |
|---|---|---|---|
| BRAVE_API_KEY | yes for non-interactive Brave MCP install | BSA... | Secret baked into the brave-search-mcp Docker container's environment at creation (it stays out of ~/.claude.json); prompted interactively if absent. To rotate: docker rm -f brave-search-mcp, then re-run bootstrap update with the new key. |
| BRAVE_MCP_PORT | no — defaults to 8941 | 8941 | Host port for the shared Brave Search MCP Docker container (mapped to the container's fixed port 8941); the registered endpoint is http://127.0.0.1:<port>/mcp. |
| PLAYWRIGHT_MCP_PORT | no — defaults to 8931 | 8931 | Port the shared Playwright MCP launchd agent listens on (macOS); the registered endpoint is http://127.0.0.1:<port>/mcp. |
| CONTEXT7_API_KEY | optional for Context7 MCP install | ctx_... | Optional secret sent as a Context7 MCP HTTP header; Context7 can be installed without it. |
| GITHUB_TOKEN | yes in GitHub Actions | ${{ secrets.GITHUB_TOKEN }} | GitHub-provided token used by Gitleaks and GHCR login in workflows. |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 | yes in workflows | true | Plain workflow config forcing JavaScript actions to run on Node 24. |
| REGISTRY | yes in build.yml | ghcr.io | Plain workflow config for the container registry in the template workflow. |
| OWNER | yes in build.yml | ${{ github.repository_owner }} | Plain workflow config used to build GHCR image tags. |
| IMAGE | yes in build.yml | ${{ github.event.repository.name }} | Plain workflow config used to build GHCR image tags. |
| CLAUDE_MIGRATION | optional | 1 | Plain flag recognized by some Serena enforcement hooks to bypass during migration flows. |
Build
There is no transpilation or bundling step. The package ships source files directly through the files list in package.json.
# Inspect the package contents before publishing
npm pack --dry-runThe publishable surface is bin/, lib/, raw/, .github/, and .gitleaks.toml.
Run Locally
# Show CLI usage without making project changes
node bin/cli.js
# Install global MCPs, hooks, and skills
node bin/cli.js install
# Run setup against the current repository
node bin/cli.js setup
# Launch the live wiki/work dashboard for the current repository (Ctrl-C to stop)
# Serves on http://localhost:4317 by default; pass a port to override
node bin/cli.js dashboard
node bin/cli.js dashboard 4400
# Preview deployment-scaffold detection for the current repository
node lib/scripts/setup-deployment.sh --dry-run .The setup command writes to the current project and to ~/.claude/, so run it from a disposable test repository when validating a release candidate.
Deploy
- Confirm the working tree contains only the intended release changes.
git status --short- Preview the package contents.
npm pack --dry-run- Bump the npm version.
npm version patch
# or: npm version minor
# or: npm version major- Publish the package.
npm publish --access public- Verify the published version.
npm view @codewizard-dt/bootstrap version
npx @codewizard-dt/bootstrap@latestCI/CD details:
.github/workflows/security.ymlruns Gitleaks on pushes and pull requests targetingmain..github/workflows/build.ymlis manual-only viaworkflow_dispatch; its build job skips unless a root-levelDockerfileexists, and its deploy job is a placeholder.- No workflow currently publishes the npm package automatically; npm release is manual.
Data & Migrations
This package has no database, schema migrations, object storage, queues, or runtime persistence. Data migration support in this repo refers to consumer-project documentation migration through npx @codewizard-dt/bootstrap migrate, which creates a reviewable wiki-migration branch and moves legacy .docs/ artifacts into the LLM Wiki structure.
Health Checks & Smoke Tests
There is no HTTP health endpoint because this is a CLI package. Use command-level smoke tests:
# Local CLI usage should print command help and exit nonzero
node bin/cli.js
# Package metadata should resolve from npm after publish
npm view @codewizard-dt/bootstrap version
# The latest package should execute and print usage without a command
npx @codewizard-dt/bootstrap@latest
# Security workflow should pass in GitHub Actions
gh run list --workflow security.yml --limit 5For end-to-end validation, run npx @codewizard-dt/bootstrap@latest setup inside a disposable repository and confirm wiki/, raw/, wiki/guides/, and the selected MCP configuration files are created.
Rollback
If a release is bad, prefer deprecating the broken npm version and publishing a fixed version:
npm deprecate @codewizard-dt/bootstrap@<bad-version> "Contains a release issue; upgrade to <fixed-version>."
npm version patch
npm publish --access publicIf the package version qualifies for npm unpublish rules and removal is necessary:
npm unpublish @codewizard-dt/bootstrap@<bad-version>For source rollback, revert the release commit and publish a new patch version rather than rewriting repository history.
Observability
There is no runtime telemetry, metrics backend, dashboard, or alerting because the project is a CLI package. Operational signals come from GitHub Actions logs, npm package metadata, npm install/publish output, and user-reported command failures.
Useful first places to inspect:
- GitHub Actions security workflow runs in
.github/workflows/security.yml. - Manual build template runs in
.github/workflows/build.yml. - npm package metadata from
npm view @codewizard-dt/bootstrap. - Local command traces from the setup scripts' stdout/stderr.
Troubleshooting
command not found: bootstrap: The package binary is not on PATH; run throughnpx @codewizard-dt/bootstrap <command>or usenode bin/cli.js <command>locally.claude: command not found: Claude Code is missing; install it withnpm install -g @anthropic-ai/claude-codebefore running setup, deploy scaffolding, migration, or typecheck setup.uv: command not found: Serena setup cannot launch; install uv souvxis available, then rerun setup.- Brave MCP install prompts for an API key: Set
BRAVE_API_KEYbefore non-interactive installs or enter it when prompted byinstall-mcps.sh. The key is baked into thebrave-search-mcpcontainer at creation, so a re-run never re-prompts while the container exists; to change the key,docker rm -f brave-search-mcpand re-runbootstrap update. Brave install also requires Docker to be running — if it is not, the script skips brave-search until the nextbootstrap update. brave-search endpoint not answering: The shared container should be servinghttp://127.0.0.1:8941/mcp(host port overridable viaBRAVE_MCP_PORT). Checkdocker logs brave-search-mcpand confirm Docker Desktop is running; enable Docker Desktop's "Start when you sign in" so the container comes back after reboots.playwright endpoint not answering(macOS): The launchd agentcom.bootstrap-claude.playwright-mcpshould be servinghttp://127.0.0.1:8931/mcp(overridable viaPLAYWRIGHT_MCP_PORT). Inspect it withlaunchctl print gui/$(id -u)/com.bootstrap-claude.playwright-mcpand check~/Library/Logs/playwright-mcp.log. Over SSH there is no GUI session for the agent to bootstrap into — log into the Mac GUI once, then re-runbootstrap update.- Context7 installs without authenticated access: Set
CONTEXT7_API_KEYif authenticated Context7 access is required; otherwise the script can register Context7 without the header. - Hooks copy but do not run:
install-global.shcopies scripts to~/.claude/hooks/, but hook registration in~/.claude/settings.jsonis a separate manual step documented inlib/hooks/README.md. Thepermissions.denylist is the exception:install-global.shmerges the canonical deny list fromlib/scripts/templates/settings-deny.jsoninto~/.claude/settings.jsonautomatically (additive-only — your own entries are never removed or reordered). Deleting a canonical entry locally means it gets re-added on the nextinstall/setup/updaterun; that re-convergence is the point of a canonical list. - Manual build workflow skips:
.github/workflows/build.ymlintentionally skips the build job unless a root-levelDockerfileexists. - npm package points at unexpected repository metadata: Check
package.jsonrepository,homepage, andbugsfields before publishing; they are independent of the local git remote.
