From learning-loop
Runs health checks on a learning-loop installation, presents issues with severity, and offers per-fix remediation with auto-runnable or manual options. Re-runs each check after fixing to confirm resolution.
How this skill is triggered — by the user, by Claude, or both
Slash command
/learning-loop:doctorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A read-mostly diagnostic. Runs the health-check library, presents the result, and walks you through fixes one at a time.
A read-mostly diagnostic. Runs the health-check library, presents the result, and walks you through fixes one at a time.
PLUGIN, PLUGIN_DATA, VAULT are injected by the session-start hook. If absent:
node PLUGIN/scripts/resolve-paths.mjs
node PLUGIN/scripts/health-check.mjs --full --json
Parse the JSON. The schema:
{
"ts": "...",
"ran": "full",
"checks": [
{ "id", "name", "status": "ok" | "fail", "severity": "ok" | "warn" | "fail", "detail", "fix" }
]
}
Format the dashboard like this:
learning-loop doctor
====================
Health checks (N passed, M warnings, F issues):
✓ Node.js v25.9.0
✓ Claude Code 2.1.145
⚠ ~/.local/bin on PATH not on PATH
→ Add to your shell rc: export PATH="$HOME/.local/bin:$PATH"
✗ ll-search binary missing at /Users/.../bin/ll-search
→ Run /learning-loop:init to re-download the binary
…
F issues, M warnings.
Icon rules:
✓ when status === "ok"⚠ when status === "fail" && severity === "warn"✗ when status === "fail" && severity === "fail"Print ✓ All checks pass. Nothing to fix. and exit.
For each check with status === "fail":
✗ <name>: <detail>
Suggested fix: <fix>
AskUserQuestion:
Fix this (auto-runnable) — only when the fix is in the auto-runnable table belowRun the suggested command and tell me when done — when the fix is manualSkip — I'll handle this laterStop the doctor session — exits cleanlynode PLUGIN/scripts/health-check.mjs --full --json and find the same check by its id field. Report:
✓ Fixed (new state: <detail>) if the check now returns ok⚠ Still warning: <new detail> if it improved to warn✗ Still failing: <new detail> if it didn't help (don't loop — move on)Done? [Y]es / [N]o. On Yes, re-run node PLUGIN/scripts/health-check.mjs --full --json and find the same check by its id field, then report as above.| Check id | Action |
|---|---|
binary-exists, binary-version-file, binary-runs | node PLUGIN/scripts/download-binary.mjs |
shims-exist | node PLUGIN/scripts/install-shims.mjs --install |
vault-folders | mkdir -p each missing folder under <VAULT> |
vault-system-files | Write default content from PLUGIN/templates/persona.md and PLUGIN/templates/capture-rules.md |
search-index-exists | ll-search index |
nli-socket-fresh (stale file) | rm <path> |
watch-daemon-status (stale pidfile) | rm <pidfile> then ll-watch start |
abi-drift | npm rebuild in the affected plugin directory |
Manual-only fixes (user must run; doctor reports the command):
episodic-memory-installed, learning-loop-installed → claude plugin install <name>@<marketplace>local-bin-on-path → user adds to their shell rcclaudemd-section-present, claudemd-section-current → defer to /learning-loop:init Phase 5vault-path → defer to /learning-loop:init Phase 2plugin-cache-version-present → claude plugin install …node-version, claude-version → run install.sh or upgrade manuallyAfter all checks have been processed, print:
Doctor summary
==============
Fixed: F_fixed
Skipped: F_skipped
Manual: F_manual (commands above)
Now-warn: F_warn (started fail, now warn)
Then write the final result via:
node PLUGIN/scripts/health-check.mjs --full --json > <PLUGIN_DATA>/last-health.json
(One last cache refresh so the next session-start detector reflects the post-doctor state.)
✓, ⚠, ✗, →). No ASCII fallback.install.sh, to verify setup⚠ learning-loop: N issues — run /learning-loop:doctornpx claudepluginhub robinslange/learning-loop --plugin learning-loopRuns comprehensive diagnostics on Claude Code environment: plugins, settings, hooks, MCP servers. Identifies issues, supports --fix and --verbose.
Checks an AI Brain Starter vault for health issues like missing CLAUDE.md, stale hooks, or broken scripts. Run after a git pull or when Claude behavior seems off.
Audits .claude/ structure, naming, hooks, and plugin versions. Runs hygiene and sync checks, outputs health report with fix commands.