doctor command
Verify the active host install, package, command ownership, enforcement, and harmless live-fire probe. Read-only.
/ca:doctor$ca-doctor/ca-doctorAvailability is read from each shipped host catalog. Preview-only commands are marked on the page.
What it does
Section titled “What it does”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:doctorTakes no arguments.
Example
Section titled “Example”> /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 entriesOK all 6 hook scripts presentOK 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.comOK statusline wired in ~/.claude/settings.json
doctor: 0 FAIL, 0 WARN, 9 OKverdict: healthy (static checks) — the live-fire probe in /ca:doctor proves hooks actually fire
live-fire probe: git add --all --dry-runBLOCKED [H-03]: 'git add -A' / 'git add .' / 'git add --all' / 'git add -u' areprohibited. Stage files explicitly (commit-gate skill).
verdict: healthy — hooks firingWhen to reach for it
Section titled “When to reach for it”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.
Related
Section titled “Related”Source
Section titled “Source”Source — plugins/ca/commands/doctor.md (v2.11.0)
---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 exactremediation.
## 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-fireprobe with different spelling. MUST surface a failed probe as CRITICAL, never as a footnote.