Status: Accepted (2026-04-14)
The work Kaio needs this repo to do splits into two distinct audiences:
commands/, skills/, CLAUDE.md, bootstrapped
into ~/.claude/ via bootstrap.sh.@dotbabel/dotbabel npm package — a reusable plugin other repos
install via npm i -D. Lives under plugins/dotbabel/.The overlap is large: both surfaces define slash commands, skills, hooks, and CI workflows. Keeping two repos in sync by copy-paste was the status quo; drift appeared within days.
Single repo. Two top-level trees:
dotbabel/
├─ commands/ skills/ CLAUDE.md bootstrap.sh sync.sh ← dotfile persona
└─ plugins/dotbabel/ ← npm package
package.json.files excludes the dotfile-only paths from the npm tarball.
Consumers installing the package see only plugins/dotbabel/. The author’s
bootstrap.sh symlinks from commands/ and skills/ into ~/.claude/.
package.json.files becomes a trust boundary: a missing entry there
silently ships dotfile scripts into consumer installs. Covered by an
integration test that asserts plugins/dotbabel/scripts/* is shipped
and bootstrap.sh is not.plugins/dotbabel/tests/.