agentleFS
hazarsozerhazarsozer/ren-os/skills/doctor/SKILL.md

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

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.
  • AnthropicSkill

    uninstall

    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

  • woosikkimSkill

    cancel

    Clear any stale OMC-Slim state

    Also in 3 projects that use this

  • ibahgatSkill

    mode

    Inspect or switch omi operating mode/profile for speed, depth, autonomy, or strict quality gates.

    Also in 3 projects that use this

  • BlockSkill

    open

    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

  • QinghongLinSkill

    editor

    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

  • AnthropicSkill

    status

    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

The file

Files
SKILL.md

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):

CheckWhat it verifies
check_envgit + python3 on PATH, ANTHROPIC_API_KEY set
check_wiki_structurewiki root exists, identity.md/log.md present
check_frontmatterscripts/lint-yaml-frontmatter.py passes over the wiki
check_schema_versionsevery 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):

CheckWhat it verifies
check_budget_lintmeasured 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_pointersevery l2-map page's "## Decision map" pointer targets actually exist
check_hub_conventionlegacy projects/*/knowledge/**/index.md knowledge hubs still pending the folder-note-hubs-1 migration (#56) — names the first 5
check_graphify_statusimportlib.import_module("skills.code-map.lib").status() — not installed → info w/ companions.md pointer; version outside pin → warn; stale graph → info
check_companionsregistry choices vs reality (lib/companions) — accepted-but-missing → warn; undecided-and-absent → info; consistent → ok
check_backup_configuredskills.backup.lib.backup_configured()
check_global_driftlib.memory.promotion.demote_check() — non-doctrine/preference pages in global/
check_harness_neutralitylib.portability.agents_surface.lint_generated_surfaces — soft-wired: skips cleanly if that module (Task 7.2, built in parallel) isn't present
check_routing_audit0.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_staleness0.6.1 E4: the renos:model-map-updated stamp in doctrine/model-classes.md — warn if older than 180 days, info otherwise
check_orphaned_projectsissue #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_doctrine0.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_shadowing0.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_freshnessspec 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_pinsspec 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

  1. Call skills.doctor.lib.run_checks().
  2. 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 as skills.metric-watch.lib.watch, Task 6.3).
  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_versions only asks "is this page's declared schema_version behind the registry's current for its type" — that's skills.wiki-migration.lib.migration_chain's job, reused here, not reimplemented.
  • Require graphify, backup, or lib.portability to 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_tokens data check_budget_lint reads
  • Task 6.1 (lib/memory/promotion.py's demote_check) — the global-tier drift this check surfaces
  • Task 7.2 (lib/portability/agents_surface.py) — soft-wired dependency for check_harness_neutrality
  • skills/code-map/lib/__init__.py — status(), the graphify-presence/freshness check
  • skills/backup/lib/__init__.py — backup_configured(), shared with metric-watch's own backup check
  • skills/wiki-migration/lib/__init__.py — the registry check_schema_versions reads

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.