Borrowing it
Nothing to install: this file belongs to racecraft-lab/racecraft-plugins-public. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/racecraft-lab/racecraft-plugins-public/main/.claude/skills/speckit-doctor/SKILL.mdgit clone --depth 1 https://github.com/racecraft-lab/racecraft-plugins-publicWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/racecraft-lab/racecraft-plugins-public/speckit-doctor)<a href="https://agentmods.dev/skills/racecraft-lab/racecraft-plugins-public/speckit-doctor"><img src="https://agentmods.dev/badge/skills/racecraft-lab/racecraft-plugins-public/speckit-doctor/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/racecraft-lab/racecraft-plugins-public/speckit-doctor"><img src="https://agentmods.dev/badge/skills/racecraft-lab/racecraft-plugins-public/speckit-doctor.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00024 | $0.00917 |
| Opus 5 | $0.00012 | $0.00458 |
| Sonnet 5 | $0.00005 | $0.00183 |
| Haiku 4.5 | $0.00002 | $0.00092 |
Grade A, and why
speckit-doctor scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
Copies of this mod
1 near-identical copy found in the catalogue:
- speckit-speckit-utils-doctor — 91% identical, 12 lines differ
How it starts
The opening of the file, as written. The whole thing — 116 lines — stays where its author put it; the contents beside it link to each section on GitHub.
User Input
$ARGUMENTS
Outline
Run a comprehensive health check on the spec-kit project, validating that all required components are present and correctly configured.
Step 1: Find the project root
Locate the .specify/ directory. If not found, error: "No spec-kit project found. Run specify init first."
Step 2: Check templates
Verify these template files exist in .specify/templates/ and are non-empty:
spec-template.mdplan-template.mdtasks-template.mdconstitution-template.mdchecklist-template.md
For each template:
- File exists and non-empty: PASS
- File exists but empty: WARN ("template is empty")
- File missing: FAIL ("template not found")
Step 3: Check agent configuration
Read .specify/init-options.json to determine the configured AI agent.
If no init-options.json exists: WARN ("no AI agent configured - run specify init to set up")
If an agent is configured (e.g., "ai_assistant": "claude"):
- Check that the agent's directory exists (e.g.,
.claude/) - Check that command files are registered (e.g.,
.claude/commands/speckit.*.md) - Count registered commands
- Agent dir exists with commands: PASS
- Agent dir missing: FAIL ("agent directory not found")
- Agent dir exists but no commands: WARN ("no command files registered")
Step 4: Check the Python runner and helpers
Look for the current SpecKit Pro runner package in either location:
- Source checkout, relative to the project root:
speckit-pro/speckit_pro_runner/ - Installed payload, relative to the resolved plugin root:
speckit_pro_runner/
If a runner package is present, verify these files exist and are non-empty:
__main__.pyruntime.pyhelpers/registry.pygates/registry.pyspeckit-pro-runner.manifest.jsonspeckit-pro-runner.sha256
Read the manifest with Python standard-library json and confirm it is a JSON object.
- Runner package and all required files are valid: PASS
- Runner package exists but a required file is missing, empty, or invalid: FAIL
- Neither runner location exists: WARN ("SpecKit Pro Python runner not found - skipping plugin runtime layout checks")
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 116 lines · 24 tokens per session scan A 5f60bc31333a
speckit-doctor is a skill published in the GitHub repository racecraft-lab/racecraft-plugins-public (5 stars, last pushed today), licensed MIT. It adds 24 tokens to every session and 917 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
bug-investigator
Use when encountering any bug, test failure, or unexpected behavior during spec-superflow execution, before proposing fixes. Invoked automatically when build-executor hits a blockage.
backprop
Bug → spec protocol. When a bug is found or a test fails, trace the cause, decide whether a new §V invariant would catch recurrence, append to §B. This is the one non-obvious thing SDD does that plan-then-execute doesn't. Triggers on test failure, bug report, post-mortem, or explicit user ask.
check
Read-only drift detector. Diffs SPEC.md against current code and reports violations grouped by severity. Writes nothing — suggests remedies via the spec or build skills but never invokes them. Triggers when the user asks to check drift, audit the spec, verify invariants, or ask whether code still matches the spec.…
speq-audit
Audit a speq project's health — spec-library structure, feature/decision-log/plan validation, mission-to-spec sync, unrecorded plans, and gitignore hygiene — then guide fixes. Use when the user asks to audit, health-check, doctor, lint, or sanity-check the specs or repo, or after cloning or inheriting a speq project.
error-design
Reviews error handling and exception design, applying the "define errors out of existence" principle. Use when reviewing error handling, when a module throws too many exceptions, or when callers must handle errors they shouldn't need to know about. Not for general caller-burden complexity (use pull-complexity-down)…
diagnose
Routes a vague symptom or complaint to the most relevant Clairvoyance skill via a decision tree. Use when someone describes a problem but doesn't know which skill to reach for. Not for a comprehensive review (use design-review) or a checklist scan (use red-flags).