Skip to content

Bootstrap engine

toolkit/bootstrap.js deploys packages from toolkit/packages/ into each supported tool’s home directory. It is driven by a TOOL_CONFIG map (13 entries) plus an external-dependencies.yaml manifest.

Per-tool home directories

Each TOOL_CONFIG entry sets a targetSubdir and a ruleDir. The eleven user-facing targets:

Tool keytargetSubdir
claude-code-4.5.claude
codex.codex
copilot.copilot
gemini.gemini
hermes-agent.hermes
nanoclaw.claude (shared with Claude)
amazonq.amazonq/rules
cursor.cursor/rules
cline.clinerules
roo.roo/rules
clawdhubskills

Two additional internal entries, claude and packages, back the rules-glob and copy-entire-folder code paths and are not selected directly as deploy targets.

Package mappings

For tools with usePackagesStructure: true, packageMappings controls which packages/ subtrees land where. For claude-code-4.5:

Source under packages/Target under ~/.claude/
skillsskills
agentsagents
utilities/utilsutils
utilities/hookshooks
utilities/output-stylesoutput-styles
utilities/reflectionsreflections

codex and copilot map only skills and utilities/reflections (no agents).

Template substitutions

Each tool config declares templateSubstitutions keyed by glob (**/*.md, **/*.sh, **/*.py, **/*.js, **/*.ts, **/*.json, **/*.yaml, **/*.yml, **/*.toml). Two tokens are rewritten per tool so deployed files reference the correct home dir:

Tokenclaude-code-4.5codexcopilot
TOOL_DIR.claude.codex.copilot
HOME_TOOL_DIR~/.claude~/.codex~/.copilot

This is why skills must use {{TOOL_DIR}} / {{HOME_TOOL_DIR}} placeholders rather than hardcoded .claude paths.

--verify mode

Terminal window
node bootstrap.js --tool=<X> --verify

Read-only. Checks every applicable manifest entry has its SKILL.md at the expected path, and reports per-tool parity and orphans. Makes no changes.

Adding a new target tool

  1. Add a TOOL_CONFIG entry with ruleDir, targetSubdir, packageMappings, and templateSubstitutions.
  2. If the tool consumes the manifest, add it to the relevant applies-to lists in external-dependencies.yaml (and to TOOL_CANONICAL_NAMES if its manifest name differs from its key).
  3. Run node bootstrap.js --tool=<new> --verify to confirm parity.

See also