skills/hermit-doctor/SKILL.md
Returns a six-check health report on the hermit installation — config validity, hook registration, state file integrity, cost budget, proposal health, file permissions. Use when diagnosing an install, before a release, or after suspicious behavior. Activates on messages like "/hermit-doctor", "health check", "diagnose the hermit", "what's wrong", "run diagnostic".
npx skillsauth add gtapps/claude-code-hermit hermit-doctorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Runs six read-only health checks against the current hermit install and surfaces the
summary. Safe to run at any time. Produces no side effects beyond writing
.claude-code-hermit/state/doctor-report.json and appending a summary block to SHELL.md.
Run the check script:
node ${CLAUDE_PLUGIN_ROOT}/scripts/doctor-check.js .claude-code-hermit
The script writes .claude-code-hermit/state/doctor-report.json and prints the same
JSON to stdout. It exits 0 unconditionally — on any internal failure the failing
check reports status: "fail" in its own entry rather than crashing the report.
Parse the JSON. For each of the six checks (config, hooks, state, cost,
proposals, permissions), emit one line using this format:
✓ <id> — <detail> when status: ok⚠ <id> — <detail> when status: warn✗ <id> — <detail> when status: failAppend a summary section to .claude-code-hermit/sessions/SHELL.md under a new
## Doctor Report (<ts>) heading. Use the same six lines from step 2. Place it
above the ## Monitoring section so it sits with session-level context, not
with monitoring chatter.
Return the six lines to the caller. Cap total output at 15 lines.
ok, return only: All six checks passed. Do not notify via
channel (Tier 0). Still append to SHELL.md so the run is traceable.warn or fail, return the full six-line summary. Channel
notification follows the usual § Operator Notification policy in CLAUDE.md —
fail warrants a proactive ping; warn alone does not unless the operator asked.| id | What it verifies | Status rules |
|---|---|---|
| config | Runs validate-config.js against .claude-code-hermit/config.json. | fail on any error; warn on any warning. |
| hooks | Parses hooks/hooks.json; verifies each referenced script file exists on disk. | fail if any script is missing. |
| state | JSON.parse every .claude-code-hermit/state/*.json; warns if expected files missing. | fail on unparseable file; warn if any expected file (alert-state.json, reflection-state.json, runtime.json, monitors.runtime.json) is absent. |
| cost | Sums today's estimated_cost_usd from .claude/cost-log.jsonl against config.idle_budget. | fail ≥ 100%; warn ≥ 80%; ok below. |
| proposals | Counts proposals/PROP-*.md with status: open; ages via created: frontmatter. | warn if any open PROP > 30 days, or if more than 10 open. |
| permissions | fs.statSync(p).mode & 0o777 on config.json, state/*.json, and proposals/. | warn if any world-readable (mode & 0o004 ≠ 0). |
No automatic fixes. Doctor reports; the operator acts.
scripts/doctor-check.js so it can be unit-tested without
invoking the model.tools
Composes and delivers the daily fitness brief — a forward-looking morning read (readiness + today's plan) or a backward-looking evening read (today's training, or an earned-rest note, + tomorrow's setup) — in the operator's configured voice. Invoke with /claude-code-fitness-hermit:fitness-brief --morning|--evening|--slot <name>. Becomes the plugin's two daily beats — the morning Strava connectivity check and the evening activity sync, RPE binding, and Run deep-dive.
development
Renew the hermit's long-lived Claude login token over the channel, before it expires. Relays a one-time sign-in link to the operator, takes the code back, installs the new token, and restarts. Activates on messages like 'relogin', 'renew my login', 'reauth', 'the login is expiring', or when doctor's credential-expiry check flags setup-token.
development
Synthesizes the past 7 days of archived briefs into a weekly digest — top stories, emerging vs faded themes, category activity, and per-source performance built from archive frontmatter. Delivers to the operator's configured channel and archives a weekly note. Designed as a weekly routine. Invoke with /feed-hermit:weekly-digest.
development
Manage developing story arcs tracked across briefs — add, resolve, and list active arcs in compiled/story-arcs-*.md. Arc Watch keywords drive the feed-brief arc-tagging enrichment. Invoke with /feed-hermit:story-arcs add|resolve|list.