doctorlisted
Install: claude install-skill hazarsozer/ren-os
# 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 |
| `che