- Root
CLAUDE.mdexists and declares its areas in a Layout table. - Every declared area exists on disk.
- Every directory on disk that looks like a monorepo area is declared (no orphans).
- Every declared area has its own
CLAUDE.md. - No compiled executables or oversize files (> 5 MB) are tracked in non-asset paths.
This is a standalone command — no .planning/ directory required.
Output: a Markdown report printed to the terminal, plus exit code 0 (clean) or 1 (issues found).
Supported flags (pass them through verbatim):
--root <path>— audit a repo other than the cwd--json— machine-readable output instead of Markdown--no-binary-scan— skip the (slowest) binary walk
The standard AO Cyber Systems monorepo layout is:
| Path | Purpose |
|---|---|
go/ |
Go services + cmd entrypoints |
flutter/ |
Flutter mobile/desktop app |
admin/ |
Admin web UI (Next.js / Vite) |
mobile/ or pos/ or api-dart/ |
product-specific extras |
proto/ |
gRPC/protobuf schemas |
Every product monorepo (aodex, aosentry, eden-biz, politihub, aohealth) is being aligned to this layout. This skill is how you check whether a repo currently complies.
1. Locate the CLI.
The doctor logic lives at ${CLAUDE_PLUGIN_ROOT}/skills/monorepo-doctor/lib/cli.js. Resolve the plugin root from the env or fall back to the well-known install path.
2. Run the audit.
node "${CLAUDE_PLUGIN_ROOT}/skills/monorepo-doctor/lib/cli.js" $ARGUMENTS
Capture stdout (the human-readable report) and the exit code. Exit code 0 means the monorepo is compliant; exit code 1 means at least one issue was found.
3. Present the report.
Show the full report to the user verbatim. Do not summarise unless they ask — the report is already terse.
4. Suggest next steps.
If the report shows issues, suggest the user invoke /devflow:new-monorepo (template scaffold) or /devflow:quick to fix each issue category. Do not auto-fix without confirmation.
Do NOT use for:
- Linting code style (use language-native linters)
- Validating CI workflows (separate skill)
- DevFlow
.planning/state checks (use/devflow:status check)
Exit non-zero on failure so the parent skill / shell can chain.