Audit skills
Collection of Claude Code and Claude Desktop skills for developer workflows, automation, and productivity
npx -y skills add mostafa-drz/claude-skills --skill audit-skillsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Audits all personal Claude skills against the SKILLS_GUIDE.md manifest, latest official Claude skills documentation, and best practices. Reports issues, missing patterns, and improvement suggestions per skill. Use to keep skills healthy, consistent, and up-to-date with the latest standards.
SKILL.md
8.6 KB, as published. Nobody here has run it
Audit Skills
Audit personal Claude skills for consistency, best practices, and up-to-date standards.
Command routing
Check $ARGUMENTS:
help→ display help then stop--fix [skill-name]→ auto-fix issues (see Fix mode)--verbose [skill-name]→ show full details for every check (not just failures)<skill-name>→ audit a single skill- empty → audit all skills
Help
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 present
Step 1: Load references
Local manifest
Read ~/.claude/skills/SKILLS_GUIDE.md — this is the source of truth for local conventions.
Latest upstream docs
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 changes
Fetch and read the top results. Extract:
- Any NEW frontmatter fields not in our manifest
- Any CHANGED best practices (naming, descriptions, tool restrictions)
- Any DEPRECATED patterns we're still using
- Any NEW features we should adopt
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."
Step 2: Discover skills
~/.claude/skills/*/SKILL.md
List all found skills. If a specific skill-name was given in $ARGUMENTS, filter to just that one.
Step 3: Audit each skill
For each skill, run every check below. Track results as PASS/WARN/FAIL/INFO.
Frontmatter checks
| 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) |
Tool checks
| 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 |
Content checks
| 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 |
UX checks (from manifest conventions)
| 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 |
Upstream checks (from fetched docs)
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 |
Inventory check (only on full audit)
- Compare discovered skills against
SKILLS_GUIDE.mdinventory table - Report any skills not in the inventory (WARN)
- Report any inventory entries with no matching skill (WARN)
Step 4: Present results
Per-skill report
/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)
Summary (full audit only)
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} skills in SKILLS_GUIDE.md
{N} skill directories found
{discrepancies if any}
Step 5: Offer fixes (if --fix flag)
If --fix was passed:
- For each FAIL, propose a specific edit
- For each WARN, propose a fix (optional)
- Use
AskUserQuestion(multiSelect: true):- One option per proposed fix
- "Apply all fixes"
- "Skip all"
- Apply approved fixes using Edit tool
- Update
SKILLS_GUIDE.mdinventory if new skills were found - Report what was changed
Without --fix: just report findings.
Step 6: Save audit results
Write a timestamped audit log to:
~/.claude/skills/audit-skills/last-audit.md
Format:
# 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.
Principles
- Non-destructive by default: Only report, never modify without
--fixand user confirmation. - Manifest is local truth: SKILLS_GUIDE.md defines what "good" means for this user.
- Upstream is advisory: New features from official docs are INFO/WARN, not FAIL (unless the user's manifest adopts them).
- Be specific: Every FAIL/WARN includes exactly what's wrong and how to fix it.
- Fast: Don't re-read files unnecessarily. Parse frontmatter first, skip deep content checks if frontmatter fails.