skill-doctor — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited skill-doctor (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Fixes: root cause of #30387 — "Custom skills not reliably auto-triggered. The model's training-time knowledge competes with and takes precedence over skill instructions."
"Skills for git/shell operations are ignored ~50% of the time." — issue #30387
When a SKILL.md description says "use for git operations", the model's training-time knowledge of git wins. The skill is never invoked. skill-doctor lints SKILL.md files against the same heuristics Anthropic's own template authors apply implicitly:
| Check | Severity | Why it matters |
|---|---|---|
name: present and kebab-case | error | Plugin loader rejects otherwise |
description: length 50–1024 | error | Anthropic's published bound |
| Description has trigger phrase | warn | Without "Use this when …", the model has nothing to route on |
| Description avoids vague words | info | "helper", "utility", "manager", "toolkit" — too generic |
| Description avoids training overlap | warn | "edits files", "git operations", "runs shell" — built-in tool wins |
| Description under 80 chars | warn | Not enough context to route to the right skill |
${CLAUDE_PLUGIN_ROOT}/skills/skill-doctor/lint.py <path> ${CLAUDE_PLUGIN_ROOT}/skills/skill-doctor/lint.py --all✗ error,⚠ warn, · info) and the issue codes (e.g. training-overlap, no-trigger) are the value. Don't summarize the categories — the per-skill report is what the user came for.
training-overlap: rewrite the description to name thespecific workflow the skill owns ("apply database migrations" not "for database operations").
no-trigger: add a sentence starting with "Use this when …".desc-thin: expand to include one concrete invocationexample and one trigger phrase.
apply themselves.
--allThe same locations as skill-budget:
~/.claude/skills/<name>/SKILL.md<cwd>/.claude/skills/<name>/SKILL.md~/.claude/plugins/*/skills/<name>/SKILL.md/claude-papercuts:skill-doctorthe frontmatter) — only the frontmatter and description.
allowed-tools: glob syntax. Claude Code'splugin loader does that.
"trigger-fuzz" mode is planned for a future release.
# JSON output for piping into other tools / CI
${CLAUDE_PLUGIN_ROOT}/skills/skill-doctor/lint.py --all --json
# Lint a specific path
${CLAUDE_PLUGIN_ROOT}/skills/skill-doctor/lint.py path/to/SKILL.md
# Scan a different project
${CLAUDE_PLUGIN_ROOT}/skills/skill-doctor/lint.py --all --cwd /path/to/projIf Anthropic ships a built-in SKILL.md linter (e.g. via claude plugin validate), this skill becomes a duplicate and gets deprecated in the next monthly release with the date.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.