Skill Auditor
Audit an installed set of Claude Code skills for the failure modes that make them misfire — overlapping descriptions that misroute tasks, trigger phrasing that never matches, bloated bodies, missing boundaries, and over-broad tool grants — and return a prioritized fix list with rewritten descriptions. Use when a skill fires on the wrong tasks, never fires at all, or a skills folder has grown past what anyone reviews.
npx agentscamp add skills/skill-auditorInstall to ~/.claude/skills/skill-auditor/SKILL.md
Point this skill at a skills directory and it returns a health report: descriptions that overlap enough to misroute, triggers in implementation language that never match a real request, bloated bodies, missing boundaries, and over-broad allowed-tools grants — each finding paired with a concrete rewrite, in severity order.
An installed skill set degrades quietly: each individual SKILL.md looked fine when it was added, but collectively the descriptions overlap, the triggers drift from how people actually ask, and nobody has re-read the folder since. This skill audits the set as a system — because routing quality is a property of the whole collection, not any single file.
When to use this skill
- A skill fires on tasks it shouldn't, or the wrong skill wins when two could apply.
- A skill you installed never triggers, even on tasks it obviously covers.
- The skills folder (project or personal) has grown past ten entries and nobody reviews it.
- Before packaging skills into a plugin for the team — audit first, ship clean.
When NOT to use this skill
- You're writing a new skill — that's the create-skill command's job; this one reviews what exists.
- One specific skill misbehaves and you already know which — see Testing and Debugging Skills for the single-skill fix loop.
- You want a security review of a repo's whole Claude Code config (permissions, hooks, MCP servers) — that's claude-settings-auditor; this skill stays inside the skills directory.
Instructions
- Inventory the set. Glob every
SKILL.mdunder the target directory (default: the project's.claude/skills/, plus~/.claude/skills/if asked). For each, extractname,description, any triggering fields (when_to_use,paths,disable-model-invocation,user-invocable),allowed-tools, and the body length. Build the table before judging anything. - Check descriptions pairwise for overlap. Two descriptions overlap when a plausible user request matches both — test with concrete phrasings, not vibes ("split this commit" → does it match both the commit skill and the refactor skill?). Overlap is the highest-severity finding: it makes routing nondeterministic. For each collision, propose which skill owns the job and rewrite the other's description to cede it explicitly.
- Check each description for trigger quality. Flag descriptions written in implementation language ("normalizes VCS metadata") rather than request language ("write a commit message"), descriptions missing a "Use when…" clause, and descriptions so broad they'd match half of all sessions. Rewrite each flagged one in the two-sentence shape: what it does, then when to use it, in the words a user would type.
- Check bodies for weight and boundaries. Flag bodies that restate things the model already knows (generic best practices, tool tutorials), bodies over ~150 lines with no bundled files to absorb the detail, and — most important — procedures with side effects that lack an explicit boundary line ("writing the files is the whole job"). Propose the one-line boundary where missing.
- Check tool grants against the procedure. For each
allowed-tools, verify every granted tool is actually used by the body's steps. Flag grants broader than the procedure (bareBashwhereBash(git diff:*)would do) and destructive-capable skills that auto-invoke — those should carrydisable-model-invocation: true. - Check for dead weight. Skills whose job is fully covered by a newer skill, skills duplicating a slash command name, and skills whose
pathsrestriction no longer matches anything in the repo. Recommend deletion — a smaller set routes better. - Deliver the report in severity order. Misrouting collisions first, dead triggers second, missing boundaries third, everything else after. Every finding names the file, quotes the offending line, and includes the concrete rewrite — not advice, replacement text.
WARNING
Do not edit any SKILL.md unless explicitly asked. The audit's product is the report; applying rewrites is a separate, reviewed step — descriptions are routing behavior, and changing five at once without review is how a working set breaks.
TIP
Re-run the audit after adding every third or fourth skill rather than waiting for symptoms. Overlap is much easier to resolve when the newer skill is still fresh enough to rename.
Output
A prioritized audit report: the inventory table (name, one-line description summary, body size, tool grants), findings grouped by severity with file and line references, a rewritten description for every routing-level finding, and a short keep/merge/delete verdict per skill for sets over ten.
Related
- What Are Claude Skills? The Complete GuideClaude Skills explained: what a SKILL.md is, how progressive disclosure keeps skills cheap, where they run, and how to install or write your own.
- Claude Code Skills: Best PracticesThe patterns that make Claude Code skills reliable: trigger-first descriptions, one job per skill, lean bodies, bundled scripts, and scoped tools.
- Testing and Debugging Claude Code SkillsVerify a Claude Code skill triggers on the right prompts, check its output, and fix the five common failures — from vague triggers to broken paths.
- Create SkillScaffold a new Claude Code skill into .claude/skills/<name>/SKILL.md — a model-invoked capability with a trigger-rich description, scoped tools, and a lean body that pushes detail into resource files.
- Plugin ScaffolderScaffold a complete, valid Claude Code plugin from a description — the .claude-plugin/plugin.json manifest, component directories (skills, agents, commands, hooks, MCP config), portable ${CLAUDE_PLUGIN_ROOT} wiring, a local test loop with --plugin-dir, and a marketplace.json for distribution. Use when turning scattered .claude/ customizations into one installable, versioned package.
- Claude Settings AuditorAudit every Claude Code settings layer — user, project, local, and managed — and report the effective merged configuration with its risks: over-broad Bash allows, missing deny rules for secrets, bypassPermissions defaults, unvetted MCP servers and hooks, and rules that never match. Use before trusting a new repo's checked-in settings, or to harden your own before handing the agent more autonomy.
- Claude Skills Not Working? Fixes for Every Failure ModeSkill missing from the / menu, never auto-triggering, firing too often, or breaking mid-run — the symptom-by-symptom fix list for Claude skills.