Doctor
Run when the user asks for a health check of their NVZver marketplace install — "doctor", "health check", "verify install", "is my install wired", "something's broken", a skill that should have triggered didn't, or right after installing or updating plugins. Runs four fixed read-only diagnostic checks — required plugins installed (core + lsa), the core/CLAUDE.md always-on fragment merged into the project CLAUDE.md, installed plugin versions consistent with their source manifests, and the marketplace gate scripts passing — and reports a per-check PASS/WARN/FAIL/SKIP table with the evidence found and a one-line fix per failure. Never edits anything. Not for free-form questions ("what is X?", "how do I Y?") — the doctor only runs its fixed checks.From its SKILL.md
npx -y skills add NVZver/claude-marketplace --skill doctorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 4 commands, including `bash scripts/lint.sh` and 3 more.
SKILL.md
7.3 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it
Trace. On load, print first:
=============== [core/skills/doctor/SKILL.md] [core] ===============
Doctor
A user-runnable self-check for the marketplace install: four fixed, read-only diagnostic checks, each reporting PASS / WARN / FAIL / SKIP with the evidence it actually observed and a one-line fix when it fails — so a broken or half-wired install reports itself instead of failing silently (per .lsa/pitches/onboarding-diagnostics.md). Free-form cited Q&A ("what is X?", "how do I Y?") is out of scope; the doctor never answers open questions — it only runs the checks below.
Goal
Produce a four-row diagnostic table — required plugins, CLAUDE.md fragment, version consistency, gate scripts — where every verdict is backed by evidence actually observed (never a bare "OK"), and every non-PASS row carries a one-line fix.
Input
- No required arguments. An optional user symptom ("skills don't trigger", "lint is red") is echoed above the report — the four checks themselves are fixed and always all run.
- The current project's files (read-only), and — when readable — Claude Code's plugin state under
~/.claude/plugins/(installed_plugins.json, themarketplaces/NVZver/clone).
Steps
-
Detect the environment. Read
.claude-plugin/marketplace.jsonat the project root. If it exists with"name": "NVZver", the doctor is running inside the marketplace source repo; otherwise inside a consumer project. This picks the version source-of-truth in Step 4 and run-vs-SKIP in Step 5. Observable result: the environment named (marketplace-source/consumer) with the evidence quoted (the"name"line, or "no.claude-plugin/marketplace.json"). -
Check 1 — required plugins installed (
core+lsa). Installation is only heuristically observable from inside a project, so gather evidence in order: (a) the session's own context — docore:*andlsa:*skills appear in the available-skills list? (b)~/.claude/plugins/installed_plugins.json— do the keyscore@NVZverandlsa@NVZverexist? Both plugins evidenced → PASS. Either missing from every readable source → FAIL for the missing one (fix:/plugin install <name>@NVZver, then/reload-plugins). No evidence source readable in this environment → WARN "not determinable", naming what was looked for. Never infer "installed" from the plugin source directories being present in the repo — source on disk is not an install. Observable result: the verdict plus the exact evidence found (skill names seen, or the JSON keys), or the not-determinable reason. -
Check 2 —
core/CLAUDE.mdfragment present in the projectCLAUDE.md. Grep the project'sCLAUDE.mdfor the four always-on rule anchors the fragment declares (core/CLAUDE.md):ground-rules,core/output,flow-selector,reuse-first. All four found → PASS. Some found → WARN — partial merge (users adapt the fragment; report per-anchor, name each missing one). None found, or noCLAUDE.mdat all → FAIL (fix: mergecore/CLAUDE.mdinto the projectCLAUDE.md, percore/README.md§ "Merge the CLAUDE.md fragment"). Observable result: a per-anchor found/missing list, each hit cited asCLAUDE.md:<line>. -
Check 3 — installed plugin versions vs source manifests. For each NVZver plugin evidenced installed in Step 2, read the installed version (the
versionfield ininstalled_plugins.json, or the versioned cache path) and compare it to the source manifest<plugin>/.claude-plugin/plugin.json— the repo's own manifest when inside the marketplace source repo, else the synced clone under~/.claude/plugins/marketplaces/NVZver/. All equal → PASS. Any mismatch → WARN, listing each<plugin>: installed X ≠ source Y(fix: update the NVZver marketplace and the stale plugins via/plugin, then/reload-plugins). Neither installed state nor a source manifest readable → WARN "not determinable". Observable result: per-plugininstalled → sourceversion pairs. -
Check 4 — gate scripts pass. Inside the marketplace source repo only: run
bash scripts/lint.sh,bash scripts/check-links.sh,bash scripts/check-citations.sh,bash scripts/check-version-changelog.sh. All exit 0 → PASS. Any nonzero → FAIL, quoting the script's own failing line as the fix pointer. In a consumer project → SKIP ("gate scripts are repo-internal to the marketplace source repo — nothing to run here"). Observable result: the four script exit codes, or the SKIP reason. -
Render the report. One table, one row per check:
# | Check | Verdict | Evidence | Fix— Verdict ∈ PASS / WARN / FAIL / SKIP; Evidence is what was observed (a quoted key, afile:line, an exit code); Fix is one line (—on PASS/SKIP). Close with a one-line overall verdict —PASS(all rows PASS),PASS WITH WARNINGS(any WARN or SKIP, no FAIL),FAIL(any FAIL) — labels percore/knowledge/output-vocabulary.md. Observable result: the environment line + table + overall verdict delivered as the turn-final message.
Output
The environment line, a four-row per-check table (# | Check | Verdict | Evidence | Fix), and a one-line overall verdict (PASS / PASS WITH WARNINGS / FAIL). Human-readable, delivered turn-final; every Evidence cell holds something the reader can re-check (a file:line, a JSON key, an exit code) — never a bare assertion.
Constraints
- Read-only. Never create, edit, or delete any user file; never install, update, or remove a plugin; never fetch the network. The doctor reports and instructs — the human fixes (the Step 5 scripts are the repo's own detect-and-report-only checks; auto-repair is a pitch no-go).
- No new shipped executable. Every check runs through the agent's existing tools (Read / Grep / read-only Bash) and the repo's already-existing
scripts/*.sh; this skill ships no script or hook of its own — the trust boundary stays pure Markdown. - Honest verdicts only. A check whose evidence is not observable in the current environment reports WARN or SKIP with the reason — never a guessed PASS, never a fabricated FAIL. Per
ground-rulesRule 7 Done is a gate-proven, cited predicate. - Fixed procedure, not Q&A. The doctor runs exactly the checks above — it never answers open questions.
- Outputs follow
../output/SKILL.md— citation by link, never restated.
Every output this skill produces still obeys core/ground-rules (content) and core/output (format).
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.