- Root
CLAUDE.mdwith a Layout table - Per-area
CLAUDE.mdfor every selected area (go / flutter / admin / proto) .gitignorecovering Go + Flutter + Node + native build artifacts.devflow/no-binaries.yml(active by default once the plugin is installed)- Per-area GitHub Actions workflows with
paths:filters monorepo-doctor.ymlworkflow that runs on every PR
The skill is opinionated about the four standard areas. Product-specific extras (mobile/, pos/, api-dart/) should be added by the user after scaffolding and reflected in the Layout table.
Expected forms:
<slug>— minimum; product name defaults to title-cased slug, target defaults to./<slug><slug> --name "Eden Biz" --areas go,flutter --target /tmp/eden-biz
Standard areas: go, flutter, admin, proto. Anything else fails.
1. Resolve plugin root.
The template lives at ${CLAUDE_PLUGIN_ROOT}/templates/monorepo-scaffold/. The CLI is ${CLAUDE_PLUGIN_ROOT}/skills/new-monorepo/lib/cli.js.
2. Confirm the plan with the user.
Before stamping, summarise:
- Slug, name, description, target path
- Selected areas
- Files that will be written
Wait for confirmation unless --yes or --force was passed.
3. Stamp the template.
node "${CLAUDE_PLUGIN_ROOT}/skills/new-monorepo/lib/cli.js" \
--slug "<slug>" \
--name "<name>" \
--description "<desc>" \
--areas "<comma-separated>" \
--target "<target>"
4. Validate.
Run the doctor against the new repo to confirm it's clean:
node "${CLAUDE_PLUGIN_ROOT}/skills/monorepo-doctor/lib/cli.js" --root "<target>"
Exit code 0 = success.
5. Suggest next steps.
cd <target> && git init && git add . && git commit -m "chore: scaffold from monorepo-standards"- Push to GitHub
- Enable the
monorepo-standardsplugin in.claude/settings.jsonso the no-binaries hook is active for all collaborators (see plugin README)
Do NOT use for:
- Adding a new area to an existing monorepo (just create the directory + CLAUDE.md manually and update the Layout table)
- Single-language repos (use language-native init:
cargo new,go mod init, etc.)