Last updated: v2.1.0
This repo is a dual-purpose checkout. Three distinct audiences consume parts of it. Pick yours, then follow the “Start here” column.
| Persona | What you want | Start here |
|---|---|---|
Dotfile user — personal Claude Code config via bootstrap.sh |
Symlink into ~/.claude/, manage your own commands/skills |
dotfile-quickstart.md — start here, then ../CLAUDE.md for the full rules |
| Consumer — installing the CLI for bootstrap, doctor, drift detection, and optional spec-gov gates | Install, scaffold, run validators, wire CI | quickstart.md → cli-reference.md |
| Library user — importing the Node API into your own tooling | Import, typed signatures, error codes | api-reference.md |
| Contributor — sending PRs to this repo | Dev workflow, local gates, spec discipline | ../CONTRIBUTING.md |
| Security researcher | Private disclosure, threat model | ../SECURITY.md |
| Path | Who consumes it |
|---|---|
package.json, plugins/dotbabel/src/**, plugins/dotbabel/bin/** |
Consumer + library user |
plugins/dotbabel/templates/** |
Consumer (installed by dotbabel-init) |
plugins/dotbabel/.claude-plugin/plugin.json |
Claude Code when the plugin is enabled |
bootstrap.sh, sync.sh, commands/**, skills/** |
Dotfile user |
CLAUDE.md, docs/specs/dotbabel-core/**, .claude/** at repo root |
Contributors + the dogfood CI |
docs/** (excluding specs/dotbabel-core/) |
All of the above |
ADR-0001 records the decision. Short version: the dotfiles and the plugin
cover the same surface area (Claude Code commands/skills/hooks), the
author wants a single source of truth, and npm install ignores the
dotfile-specific top-level scripts (bootstrap.sh, sync.sh, commands/,
skills/) via package.json.files.
If the dotfile side feels like noise when you’re only consuming the npm
package: it is. Install via npm i -D @dotbabel/dotbabel and you
never see bootstrap.sh — only node_modules/.../plugins/dotbabel/.