doctor · git:20260625.6f2bfc0 · 2026-06-25 · sha256 0bd089b39a396495
doctor git:20260625.6f2bfc0A
Immutable. This exact content is served forever at /api/v1/blob/0bd089b39a396495.
---
name: doctor
description: Diagnose evolve health on Claude — verify the CLAUDE.md @import is actually loading the thin EVOLVE.md into sessions
context: fork
---
# Doctor
## Overview
On Claude, evolve is delivered by a single `@.evolve/EVOLVE.md` import line in
this repo's `./CLAUDE.md`. That import requires a one-time, per-project "allow
external imports" approval. If you (or a teammate) declined it — even once, in a
past session — Claude silently disables the import forever, the thin EVOLVE.md
never loads, and evolve becomes a no-op with **no error**.
This skill checks whether the import is actually reaching your sessions, by
looking for a canary token that the installed EVOLVE.md expands into the session
transcript when the import loads.
## Required Action
Run the doctor script from the repo root:
```bash
python3 ${CLAUDE_PLUGIN_ROOT}/skills/evolve-lite/doctor/scripts/doctor.py
```
It is read-only and always exits 0. Read the status code it prints:
- **OK** — the import is loading; nothing to do.
- **IMPORT_DISABLED** — the `@import` line is in `CLAUDE.md` but its content is
not reaching sessions (you likely declined the external-import approval).
Follow the remediation the script prints: purge the project approval, start a
new session, and **Allow** the import dialog.
- **NOT_INSTALLED** — evolve isn't wired into this repo; re-run the installer.
- **STALE_EVOLVE_MD** — the installed `.evolve/EVOLVE.md` predates the canary;
re-run the installer to refresh it.
- **UNKNOWN** — no recent Claude transcripts for this project yet; open a
session, then re-run.
Relay the status and any remediation to the user.