Audit your Claude skills for collisions. Finds why the wrong skill triggers and gives the exact fixes. Zero dependencies.
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.
Diagnose a skill library. Find skills whose descriptions compete for the same prompts, then fix the routing.
Point the engine at EITHER:
<root>/<name>/SKILL.md), orskills-plugin/.../manifest.json)The engine lives in scripts/ next to this file. Zero dependencies (Python 3.8+ stdlib).
# From the directory containing this SKILL.md:
python3 -m scripts <path-to-skills-or-manifest> # Markdown report
python3 -m scripts <path> --format json --out report.json # machine output
python3 -m scripts <path> --fail-on critical # CI gate (exit 1)Common options:
--merge-at 0.55 — collision score that triggers a MERGE recommendation--disambig-at 0.30 — score that triggers a DISAMBIGUATE recommendation--vague-threshold 0.5 — flag descriptions vaguer than this--top 12 — how many top collisions to list--format md|json|both| Code | Severity | Meaning |
|---|---|---|
DUPLICATE_TRIGGER | 🔴 | Same trigger phrase claimed by 2+ skills (top cause of mis-routing) |
DUPLICATE_NAME | 🔴 | Two skills share a name |
MISSING_DESCRIPTION | 🔴 | Skill can never trigger reliably |
HIGH_OVERLAP | 🔴/🟠 | Two descriptions are semantically too close |
VAGUE_DESCRIPTION | 🟠 | Filler-heavy, no "use when", no triggers |
NAME_DIR_MISMATCH | 🟠 | name ≠ directory (breaks the spec) |
BAD_NAME_FORMAT | 🟠 | name breaks lowercase/hyphen rules |
DESC_TOO_SHORT / DESC_TOO_LONG | 🟠/🟡 | Outside 40–1024 chars |
NO_BOUNDARY | 🟡 | No "For X, see <other>" cross-reference |
BODY_TOO_LONG | 🔵 | SKILL.md body > 500 lines |
collision = 0.50·cosine(TF-IDF of descriptions)
+ 0.35·jaccard(trigger phrases)
+ 0.15·jaccard(domain keywords)Bands: <0.22 LOW · 0.22 MEDIUM · 0.38 HIGH · 0.55 CRITICAL. See references/scoring.md for the full rationale.
MERGE → draft one combined description, suggest the surviving name.ABSORB → name the skill to delete and where its triggers move.DISAMBIGUATE → write the two mirror boundary lines ("For X, see Y.").duplicate-trigger table, recommendations, full issue list, ASCII heatmap.
--format json) for CI gates or other tools.the agent (you) only after the user approves.
only move/disambiguate them — don't drop them.
See references/methodology.md for the algorithm and references/issue-catalog.md for how to fix each issue type.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.