/doctor
Diagnose whether Skill Autopilot's hooks are actually firing and config is valid. Use when the autopilot seems inactive, suggestions never appear, after install or update to verify setup, or the user says "autopilot不工作", "check autopilot", "autopilot broken".
$ npx -y skills add WinterDDo/claude-code-skill-autopilot --skill doctor --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/doctor
Context preview
The summary Claude sees to decide when to auto-load this skill.
Diagnose whether Skill Autopilot's hooks are actually firing and config is valid. Use when the autopilot seems inactive, suggestions never appear, after install or update to verify setup, or the user says "autopilot不工作", "check autopilot", "autopilot broken".
SKILL.md
doctor.SKILL.mdname: doctor
description: Diagnose whether Skill Autopilot's hooks are actually firing and config is valid. Use when the autopilot seems inactive, suggestions never appear, after install or update to verify setup, or the user says "autopilot不工作", "check autopilot", "autopilot broken".
Autopilot health check
Two independent checks. Report both, then a one-line verdict.
Check 1 — self report (only the model can confirm this)
State plainly, first: did the CURRENT prompt's context contain a block starting with `[AUTOPILOT]`? Yes or no. If yes, injection reaches the model — the core product works.
Check 2 — the canary
Run:
sh "${CLAUDE_PLUGIN_ROOT}/hooks/run.sh" doctor-noop 2>/dev/null; python3 "${CLAUDE_PLUGIN_ROOT}/scripts/doctor.py" "$HOME/.claude/command-autopilot" "<current session id if known>"Read the output. Key line is `router canary`: if it shows THIS session, the hook fired end-to-end. If it says NEVER FIRED, tell the user to restart Claude Code (hooks load at startup) and run this skill again.
Check 3 — skills surfacing (read-only; the Skills Autopilot layer)
Report what the skill layer sees and has done. All read-only, no writes:
python3 - <<'EOF'
import json, os
d = os.path.expanduser("~/.claude/command-autopilot")
try:
idx = json.load(open(d + "/skills-index.json")); b = idx.get("budget", {})
print("skills indexed:", len(idx.get("skills", [])),
"| parked (native can't auto-fire these):", b.get("parked_count"),
"| over native budget:", b.get("over_budget"))
except Exception:
print("no skills index yet — restart Claude Code so SessionStart builds it")
try:
s = json.load(open(d + "/state.json")); w = s.get("counters", {}).get("wake", {})
f = lambda k: sum(v.get(k, 0) for v in w.values())
print("wake popups — shown:", f("shown"), "accepted:", f("accepted"), "declined:", f("declined"))
except Exception:
pass
EOFReport in one line: N skills installed, M parked (invisible to native — the ones the autopilot uniquely surfaces), and the wake shown/accepted tally. If `shown` is still 0 after real use, surfacing isn't firing yet — say so honestly; the real ledger is the judge, not assumptions.
Verdict
- Both pass → "Autopilot is healthy." Show the config line so the user sees their current mode.
- Check 1 fails but files look fine → restart needed, or another hook is crowding the context; suggest restart first.
- Python missing in check 2 → explain stateless mode honestly: core rules still work, learning and evidence are paused until Python 3.8+ is installed.
Read more
name: doctor description: Diagnose whether Skill Autopilot's hooks are actually firing and config is valid. Use when the autopilot seems inactive, suggestions never appear, after install or update to verify setup, or the user says "autopilot不工作", "check autopilot", "autopilot broken".
Autopilot health check
Two independent checks. Report both, then a one-line verdict.
Check 1 — self report (only the model can confirm this)
State plainly, first: did the CURRENT prompt's context contain a block starting with `[AUTOPILOT]`? Yes or no. If yes, injection reaches the model — the core product works.
Check 2 — the canary
Run:
sh "${CLAUDE_PLUGIN_ROOT}/hooks/run.sh" doctor-noop 2>/dev/null; python3 "${CLAUDE_PLUGIN_ROOT}/scripts/doctor.py" "$HOME/.claude/command-autopilot" "<current session id if known>"Read the output. Key line is `router canary`: if it shows THIS session, the hook fired end-to-end. If it says NEVER FIRED, tell the user to restart Claude Code (hooks load at startup) and run this skill again.
Check 3 — skills surfacing (read-only; the Skills Autopilot layer)
Report what the skill layer sees and has done. All read-only, no writes:
python3 - <<'EOF'
import json, os
d = os.path.expanduser("~/.claude/command-autopilot")
try:
idx = json.load(open(d + "/skills-index.json")); b = idx.get("budget", {})
print("skills indexed:", len(idx.get("skills", [])),
"| parked (native can't auto-fire these):", b.get("parked_count"),
"| over native budget:", b.get("over_budget"))
except Exception:
print("no skills index yet — restart Claude Code so SessionStart builds it")
try:
s = json.load(open(d + "/state.json")); w = s.get("counters", {}).get("wake", {})
f = lambda k: sum(v.get(k, 0) for v in w.values())
print("wake popups — shown:", f("shown"), "accepted:", f("accepted"), "declined:", f("declined"))
except Exception:
pass
EOFReport in one line: N skills installed, M parked (invisible to native — the ones the autopilot uniquely surfaces), and the wake shown/accepted tally. If `shown` is still 0 after real use, surfacing isn't firing yet — say so honestly; the real ledger is the judge, not assumptions.
Verdict
- Both pass → "Autopilot is healthy." Show the config line so the user sees their current mode.
- Check 1 fails but files look fine → restart needed, or another hook is crowding the context; suggest restart first.
- Python missing in check 2 → explain stateless mode honestly: core rules still work, learning and evidence are paused until Python 3.8+ is installed.
Use the skills you've installed — not just the ones you remember. You install skills to extend Claude Code — then forget which ones you have, or when they fit.
Other skills on claude-code-skill-autopilot.
- /config
Adjust Skill Autopilot settings — mute it, change aggressiveness (teaching/normal/quiet), switch guidance language (en/zh), or toggle the auto plan-mode gate. Use when the user says the autopilot is too noisy, too quiet, "mute autopilot", "autopilot太烦了", "别再提示了", or wants
Open skill - /evolve
Distill Skill Autopilot's accumulated usage evidence into personalized rules — the self-evolution step. Use when the autopilot announces an evolution window, or the user says "evolve", "学习一下我的习惯", "update your instincts", "distill autopilot".
Open skill - /profile
Show the Skill Autopilot dashboard — what it did for you, before/after comparison, learned rules with evidence, mastered commands. Also drafts a feedback issue. Use when the user asks "what has the autopilot done", "show my profile", "驾驶舱", "autopilot 报告", "学到了什么", or wants to
Open skill - /tutor
Guided first tour of Skill Autopilot — see auto plan mode happen, learn the 4 habit commands (/clear, /btw, /rewind, plan mode), and what Claude now handles silently. Use when the user asks how the autopilot works, what commands they should learn, how to undo Claude's changes,
Open skill - /whats-new
Explain what's newly possible — new Claude Code commands after a knowledge-base update, and installed-but-never-used skills. Use when the autopilot announces a knowledge update, or the user asks "what's new", "有什么新功能", "我装了哪些没用过的 skill".
Open skill

