doctor
Skill2 starsChanged 2 months agoMITView on GitHub
Use when the friend wants a framework health check, or after /ren:update to confirm nothing broke. Triggers on /ren:doctor. Runs a battery of small, isolated checks (env, wiki structure, frontmatter, schema versions, budget lint, dangling L2 pointers, graphify status, backup configuration, global-tier drift, harness neutrality) — all warn-not-block.
- Reads credentials
81 other projects use a version of this.
Adopted by
Most recently taken up by
- JanSzewczyk/spec-driven-developmenttheir own version, first seen Nov 8, 2026
- stunt-double/stuntdouble-mcptheir own version, first seen Nov 8, 2026
- aaroncohn/openspec-conductor-powerupstheir own version, first seen Nov 8, 2026
- hydra-db/hydradb-claude-codetheir own version, first seen Nov 8, 2026
- woosikkim/oh-my-claudecode-slimtheir own version, first seen Nov 8, 2026
- Ubuntu-Buddha/claude-code-stranger-dangertheir own version, first seen Nov 8, 2026
Used with
Projects with it also use uninstall, cancel and 9 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
AnthropicSkilluninstall
Uninstall a community skill that was installed via the hub. Confirms before deleting files, refuses to touch first-party plugin skills, and logs every action. Use when the user wants to fully remove a community skill ("uninstall [skill]", "remove this skill") rather than just disable it.
Also in 6 projects that use this
woosikkimSkillcancel
Clear any stale OMC-Slim state
Also in 3 projects that use this
ibahgatSkillmode
Inspect or switch omi operating mode/profile for speed, depth, autonomy, or strict quality gates.
Also in 3 projects that use this
BlockSkillopen
Open markdown documents in Penpal for collaborative review. Use when you want a human to review a document, plan, or research artifact.
Also in 3 projects that use this
QinghongLinSkilleditor
Read analyst.json and detective.json, make all editorial decisions — what the blog argues, which findings matter, narrative arc and section structure. No visual design. Outputs editor.md (prose) and editor.json (structure with edt_xx IDs).
Also in 3 projects that use this
AnthropicSkillstatus
Case status summary by audience — client-facing (plain language), internal (for the professor), or court-ready (formal caption format per local rules). Same facts, different framing and depth. Use when a student needs to update the client, brief the professor, or prepare a court status report.
Also in 15 projects that use this
Other versions81 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 81
- Yeachan-Heo/oh-my-codex★ 34ksame name
- jihe520/MathModelAgent★ 6.2ksame name
- spotify/portal-ai-plugins★ 2.8ksame name
- fakechris/obsidian_vault_pipeline★ 165same name
- NoobyGains/godmode★ 118same name
- Rich627/whatsapp-claude-plugin★ 114same name
- bluzir/claude-code-design★ 102same name
- jjanczur/tyran★ 81same name
- svy04/ballast★ 73same name
- Hainrixz/agente-pagokit★ 68same name
71 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository19 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- backupSkill
- bootstrap-projectSkill
- code-mapSkill
- distillSkill
- ingest-projectSkill
- installSkill
- interviewSkill
- metric-watchSkill
- pinSkill
- recallSkill
- rememberSkill
- retrospectiveSkill
- routine-initSkill
- suggestionsSkill
- updateSkill
- wiki-healthSkill
- wiki-migrationSkill
- wrapSkill
The file
Files
doctor
Adapted from donor skills/doctor/scripts/check-*.sh (one bash script per section) into a single Python check-harness (skills.doctor.lib.run_checks()) — the new checks below need to call directly into this repo's Python lib modules (collect, promotion, code-map, backup, portability), so the harness itself is Python, not bash, per this task's ADAPT (not CARRY) label.
Checks
Carried (logic ported from donor's bash):
| Check | What it verifies |
check_env | git + python3 on PATH, ANTHROPIC_API_KEY set |
check_wiki_structure | wiki root exists, identity.md/log.md present |
check_frontmatter | scripts/lint-yaml-frontmatter.py passes over the wiki |
check_schema_versions | every typed page vs. skills.wiki-migration.lib's registry — behind-current pages named with their pending migration chain |
Donor's Node/gh/claude-cli checks, activity-feed/RC-channel/fleet checks, and the wikilink dead-link/stale-page/heavy-page check are all dropped — see the module docstring's "DROPPED entirely" note for why each one doesn't apply here.
New (Task 7.3, all warn-not-block):
| Check | What it verifies |
check_budget_lint | measured capability_tokens (Task 3.1) vs. any SKILL.md-declared tokens: ceiling — info when nothing's declared to compare against yet, skip when no measured data exists |
check_dangling_pointers | every l2-map page's "## Decision map" pointer targets actually exist |
check_hub_convention | legacy projects/*/knowledge/**/index.md knowledge hubs still pending the folder-note-hubs-1 migration (#56) — names the first 5 |
check_graphify_status | importlib.import_module("skills.code-map.lib").status() — not installed → info w/ companions.md pointer; version outside pin → warn; stale graph → info |
check_companions | registry choices vs reality (lib/companions) — accepted-but-missing → warn; undecided-and-absent → info; consistent → ok |
check_backup_configured | skills.backup.lib.backup_configured() |
check_global_drift | lib.memory.promotion.demote_check() — non-doctrine/preference pages in global/ |
check_harness_neutrality | lib.portability.agents_surface.lint_generated_surfaces — soft-wired: skips cleanly if that module (Task 7.2, built in parallel) isn't present |
check_routing_audit | 0.6.1 E4: harvested subagent_spawn metrics vs. doctrine/model-classes.md's class table — warn when >30% of spawns used orchestrator-class models or any parallel_peak > 5; info with per-class counts otherwise; info "no spawn data yet" when empty |
check_model_map_staleness | 0.6.1 E4: the renos:model-map-updated stamp in doctrine/model-classes.md — warn if older than 180 days, info otherwise |
check_orphaned_projects | issue #19: every projects/<slug>/ reachable from a repo — warn naming each slug with neither a projects.json repo mapping nor a <dev_root>/<slug>/ dir (memory nothing can ever inject) |
check_execution_doctrine | 0.6.4: agents/ren-reviewer.md present (doctrine card references it) → error if missing; a manual pre-0.6.4 <!-- renos:doctrine-stopgap --> block left in ~/.claude/CLAUDE.md → warn (the wake-up hook injects the card now, the manual block is redundant residue) |
check_standing_instructions_drift | #63: repo CLAUDE.md standing-instructions block matches a fresh render of the wiki page |
check_agent_shadowing | 0.6.5: a user or project .claude/agents/<name>.md filename colliding with a shipped agents/*.md → warn naming the colliding agent(s); checks both claude_user_dir()/agents and, when the cwd resolves to a registered project, that project's .claude/agents/; skip when neither directory exists |
check_cache_env_hygiene | #40: any <cache>/<version>/.venv inside the versioned plugin cache dir → warn naming the version(s) — invocations should redirect via UV_PROJECT_ENVIRONMENT (see ren_paths.envs_dir()); ok when none found; skip when the cache root is unresolvable |
check_interpreter_freshness | spec 2026-08-21 (0.8.2) §8: the wake-up hook's recorded fast-path interpreter — dangling path or non-current version → warn (fast path degraded to cold uv); valid + current → ok; no record → info; another machine's synced record → skip |
check_doctrine_index_pins | spec 2026-08-22 §5: the global CLAUDE.md doctrine index's absolute paths pin a plugin version — a bump leaves them naming the previous one, dead once that cache dir is GC'd. Pins match → ok; any pin naming another version → warn with both; no file, no managed block, or no pins → skip |
Behavior
- Call
skills.doctor.lib.run_checks(). - Each check is isolated — a crashing check produces a
CheckResult(status="error", message="check crashed: ...")rather than aborting the run; every OTHER check still executes (same isolation discipline asskills.metric-watch.lib.watch, Task 6.3). - Render the report: one line per check,
<name> | <status> | <message>.
Why every check is warn-not-block
Per the task brief: doctor is diagnostic, not a gate. Even the carried checks (env, wiki structure, frontmatter) report their findings as ok/warn/skip/info — none of them can fail a build or block a command. The risk-tier gate (Task 6.1) and the PreToolUse hooks (Task 6.2) are where blocking actually happens; doctor's job is visibility.
What this skill does NOT do
- Fix anything. Every check is read-only; remediation is always a follow-up action the friend or another skill takes.
- Validate
verify.json/schema conformance in the JSON-Schema sense.check_schema_versionsonly asks "is this page's declaredschema_versionbehind the registry's current for its type" — that'sskills.wiki-migration.lib.migration_chain's job, reused here, not reimplemented. - Require graphify, backup, or
lib.portabilityto be present. Each of those checks degrades gracefully (info/skip) rather than erroring when its dependency is absent.
References
- Task 3.1 (
lib/instrument/collect.py) —capability_tokensdatacheck_budget_lintreads - Task 6.1 (
lib/memory/promotion.py'sdemote_check) — the global-tier drift this check surfaces - Task 7.2 (
lib/portability/agents_surface.py) — soft-wired dependency forcheck_harness_neutrality skills/code-map/lib/__init__.py—status(), the graphify-presence/freshness checkskills/backup/lib/__init__.py—backup_configured(), shared with metric-watch's own backup checkskills/wiki-migration/lib/__init__.py— the registrycheck_schema_versionsreads
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

