audit-skills — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited audit-skills (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.
Audit personal Claude skills for consistency, best practices, and up-to-date standards.
Check $ARGUMENTS:
Doctor — Audit personal Claude skills for health and consistency
Usage:
/audit-skills Audit all personal skills
/audit-skills <skill-name> Audit a single skill
/audit-skills --fix Auto-fix all skills
/audit-skills --fix <skill-name> Auto-fix a specific skill
/audit-skills --verbose Full detail for every check
/audit-skills help This help
Checks performed:
Manifest Does the skill follow SKILLS_GUIDE.md conventions?
Frontmatter Are all required/recommended fields present and correct?
Content Is the skill under 500 lines? Are references bundled?
Tools Are allowed-tools minimal? Any duplicates? Any contradictions?
UX Does it have help/config/reset? First-time detection? Memory?
Docs Is the description third-person with trigger keywords?
Security Does disable-model-invocation match the side-effect profile?
Upstream Does it follow latest official Claude skills documentation?
Output:
[PASS] Check passed
[WARN] Non-critical suggestion
[FAIL] Violates manifest or best practice
[INFO] Informational note
Example output:
/slack-to-ticket
[PASS] Third-person description
[PASS] disable-model-invocation: true (has side effects)
[WARN] SKILL.md is 120 lines — fine, but has inline examples that could be bundled
[FAIL] Missing help subcommand
[PASS] Preferences memory pattern presentRead ~/.claude/skills/SKILLS_GUIDE.md — this is the source of truth for local conventions.
Search the web for the latest Claude Code skills documentation:
ultrathink
Search for:
site:code.claude.com skills — official skill format docssite:platform.claude.com agent-skills best-practices — authoring best practicesclaude code skills 2026 — any new features or changesFetch and read the top results. Extract:
Compile a checklist of upstream checks in addition to the manifest checks.
If web search is unavailable, proceed with manifest-only checks and note: "Could not fetch upstream docs — manifest checks only."
~/.claude/skills/*/SKILL.mdList all found skills. If a specific skill-name was given in $ARGUMENTS, filter to just that one.
For each skill, run every check below. Track results as PASS/WARN/FAIL/INFO.
| Check | PASS | FAIL |
|---|---|---|
name present | Has name | Missing |
description present | Has description | Missing |
description is third-person | Starts with verb in third person ("Creates", "Analyzes") | Imperative/second person ("Create", "Analyze") |
description has trigger keywords | Contains "Use when" or similar usage hint | No usage context |
description length | ≤1024 chars | Over 1024 |
argument-hint present | Has hint | WARN: missing (optional but recommended) |
disable-model-invocation | true if skill has side effects (check allowed-tools for Write, Edit, Bash, MCP create/update tools) | Missing when side effects present |
allowed-tools present | Listed | WARN: missing (broad permissions) |
| Check | PASS | FAIL |
|---|---|---|
| No duplicate MCP tools | Single prefix per service | Both mcp__linear-server__* and mcp__claude_ai_Linear__* |
| MCP tools use canonical prefix | Uses mcp__claude_ai_Linear__* | Uses mcp__linear-server__* |
| No contradictory tools | Read-only skills don't have Write/Edit | Read-only principle violated |
| Minimal tools | Only tools actually referenced in body | Tools listed but never used |
| Check | PASS | FAIL |
|---|---|---|
| Under 500 lines | ≤500 | WARN: over 500 |
| No redundant instructions | Doesn't tell Claude how to use JSON, git basics, etc. | WARN: generic instructions |
| Uses numbered checklists for workflows | Steps are numbered | WARN: prose-only workflow |
| References bundled files if >100 lines of examples | Examples in separate files | WARN: large inline examples |
| Check | PASS | FAIL |
|---|---|---|
help subcommand | Body handles $ARGUMENTS = "help" | Missing |
config subcommand | Body handles $ARGUMENTS = "config" | Missing |
reset subcommand | Body handles $ARGUMENTS = "reset" | Missing |
| First-time detection | Checks for preferences file existence | Missing |
| Preferences memory | References preferences.md file | Missing |
| Dynamic context injection | Uses !backtick`` preprocessing | WARN: missing where applicable |
Apply any new checks discovered in Step 1. Common ones:
| Check | PASS | FAIL |
|---|---|---|
context: fork for self-contained skills | Set when skill doesn't need conversation history | WARN: could benefit from fork |
model field for reasoning-heavy skills | Set for complex analysis skills | INFO: could benefit from model override |
Positional args $0, $1 | Used for structured inputs | INFO: could use positional args |
| Skill directory structure | Has SKILL.md + optional reference/examples | Non-standard structure |
There is no hand-maintained inventory to compare against — the README catalog is generated from each skill's frontmatter, which is the only copy that exists. Instead:
make check in the skills repo: it fails if the catalog is stale or anyfrontmatter won't parse (frontmatter errors fail soft in Claude Code, so this is the only place they surface)
claude plugin validate ~/.claude/skills for the same check on what's installedSKILL.md, or a SKILL.md with no description/skill-name
[PASS] 8 checks passed
[WARN] 2 warnings
[FAIL] 1 failure
Failures:
- disable-model-invocation missing (skill creates Linear issues)
Warnings:
- No dynamic context injection (could pre-fetch git branch)
- SKILL.md is 180 lines with inline examples (consider bundling)Doctor Summary — {date}
Skills audited: {N}
[PASS] {N} fully healthy
[WARN] {N} with warnings
[FAIL] {N} with failures
Top issues:
1. {most common failure across skills}
2. {second most common}
Upstream updates:
{Any new features/changes from official docs worth adopting}
(or "All skills are up-to-date with latest docs")
Inventory:
{N} skill directories found
make check: {pass|fail — reason}--fix flag)If --fix was passed:
make catalog if any frontmatter description changedWithout --fix: just report findings.
Write a timestamped audit log to:
~/.claude/skills/audit-skills/last-audit.mdFormat:
# Skill Audit — {date}
## Summary
- Skills: {N}
- Pass: {N}, Warn: {N}, Fail: {N}
## Per-skill results
{compact results}
## Upstream notes
{anything new from docs}This allows comparing across audits to track improvement.
--fix and user confirmation.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.