Skip to content

doctor

Verify the active host install, package, command ownership, enforcement, and harmless live-fire probe. Read-only.

Proves the install is actually enforcing, rather than just present. codeArbiter’s worst failure shape is silent dormancy: a plugin cache surviving claude plugin update unchanged, hooks that look wired but never fire, and nothing that says so. This command checks in two parts. First a static pass — interpreter resolution, plugin payload integrity, stale cached versions, repo activation state, git identity, statusline wiring — reported one OK/WARN/FAIL line per check. Then, in an arbiter-enabled repo, a live-fire probe: it actually attempts a real, gate-tripping command (a dry-run git add --all) and checks whether the hook layer blocks it. A healthy install blocks the probe; if the probe instead executes, that is reported as CRITICAL — the static checks alone cannot catch a hook that’s registered but not actually firing.

It is read-only end to end. Because the probe uses --dry-run, getting blocked is the outcome it wants to see — that block is the passing verdict, not a failure to route around.

/ca:doctor

Takes no arguments.

> /ca:doctor
OK python3 resolves and runs (/usr/bin/python3)
OK plugin payload at /home/x/.claude/plugins/ca (version 2.8.11)
OK hooks.json parses: 6 events, 11 entries
OK all 6 hook scripts present
OK single cached plugin version (no stale siblings)
OK repo is arbiter-enabled (CONTEXT.md frontmatter)
OK project is initialized (<!--INITIALIZED--> marker present)
OK git identity for audit attribution: dev@example.com
OK statusline wired in ~/.claude/settings.json
doctor: 0 FAIL, 0 WARN, 9 OK
verdict: healthy (static checks) — the live-fire probe in /ca:doctor proves hooks actually fire
live-fire probe: git add --all --dry-run
BLOCKED [H-03]: 'git add -A' / 'git add .' / 'git add --all' / 'git add -u' are
prohibited. Stage files explicitly (commit-gate skill).
verdict: healthy — hooks firing

Statusline wiring only is a narrower question answered by /ca:statusline status; scaffold state alone by /ca:init --check; project progress (not install health) by /ca:status.

Source — plugins/ca/commands/doctor.md (v2.9.1)
---
description: Verify the active host install, package, command ownership, enforcement, and harmless live-fire probe. Read-only.
argument-hint: (none)
---
# /ca:doctor — install health
Silent dormancy is the worst failure shape this plugin has: the gates look installed but never fire.
This command proves the active host is healthy and reports every non-OK finding with an exact
remediation.
## Flow
1. Run `python3 "${CLAUDE_PLUGIN_ROOT}/hooks/doctor.py" || python "${CLAUDE_PLUGIN_ROOT}/hooks/doctor.py"`
and present its report verbatim.
2. In an arbiter-enabled repo, attempt `git add --all --dry-run` via Bash. `[H-03]` means hooks are
firing; execution means **CRITICAL: gates dormant**.
## Remediation ladder
1. Restart Claude Code so hooks register at session start.
2. Uninstall and reinstall `ca`; an unchanged marketplace version can preserve stale cache bytes.
3. If dormancy was intended, `/ca:init` opts the repository in.
## When NOT to use
- Statusline wiring only → `/ca:statusline status`.
- Scaffold state only → `/ca:init --check`.
- Project progress, not install health → `/ca:status`.
## Hard gate
Read-only. MUST NOT create markers, stage files, grant trust, weaken a block, or retry the live-fire
probe with different spelling. MUST surface a failed probe as CRITICAL, never as a footnote.

View in repo