skills/dev-skills-auditor/SKILL.md
Audit plugin skills and agents for compliance with Claude Code best practices — checks frontmatter, descriptions, tool restrictions, structure, and naming. Use when improving plugin quality or before publishing.
npx skillsauth add mpazaryna/agentic-factory dev-skills-auditorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Audit a plugin folder for compliance with Claude Code skill and agent best practices.
PLUGIN_PATH: $ARGUMENTS
If no PLUGIN_PATH is provided, STOP and ask the user to provide it.
.claude-plugin/plugin.json exists and is valid JSONskills/ for all SKILL.md filesagents/ for all agent definition filesFor every SKILL.md found, check each rule below. Track pass/fail per skill.
| Rule | Check | Severity |
|------|-------|----------|
| F1: name exists | name field present in frontmatter | ERROR |
| F2: name format | kebab-case only (lowercase, hyphens, numbers), ≤64 chars | ERROR |
| F3: name matches directory | name field matches the containing directory name | WARN |
| F4: description exists | description field present | ERROR |
| F5: description quality | ≥50 chars, starts with action verb, contains "Use when" or similar trigger phrase | WARN |
| F6: allowed-tools explicit | allowed-tools field is present | WARN |
| F7: allowed-tools minimal | No tools listed that the skill doesn't need (check skill body for tool usage signals) | INFO |
| F8: argument-hint present | If skill uses $ARGUMENTS or $N, argument-hint should exist | WARN |
| F9: context:fork has task | If context: fork, skill body contains actionable instructions (not just reference) | ERROR |
| F10: context:fork has agent | If context: fork, agent field is specified | WARN |
| F11: side-effects guarded | Plugin skills should have disable-model-invocation: false (true hides them from slash commands when installed). Only project-local .claude/skills/ may use true. | WARN |
| F12: no unknown fields | Frontmatter only contains recognized fields | INFO |
| Rule | Check | Severity |
|------|-------|----------|
| C1: length | SKILL.md ≤500 lines. If longer, reference material should be in supporting files | WARN |
| C2: supporting files referenced | If references/, templates/, scripts/ exist, they're referenced from SKILL.md | WARN |
| C3: paths use CLAUDE_SKILL_DIR | References to skill-local files use ${CLAUDE_SKILL_DIR}, not relative paths | WARN |
| C4: scripts executable | Any scripts in scripts/ have shebangs and are executable | ERROR |
For every agent definition file, check:
| Rule | Check | Severity |
|------|-------|----------|
| A1: name exists | name field present | ERROR |
| A2: name format | kebab-case | ERROR |
| A3: description exists | description field present | ERROR |
| A4: description quality | Explains when Claude should delegate to this agent | WARN |
| A5: tools explicit | tools field is present (principle of least privilege) | WARN |
| A6: model specified | model field present (haiku/sonnet/opus) | INFO |
| A7: system prompt exists | Markdown body after frontmatter has clear role + instructions | WARN |
| Rule | Check | Severity |
|------|-------|----------|
| P1: plugin.json valid | .claude-plugin/plugin.json exists and parses as valid JSON | ERROR |
| P2: plugin.json has name | name field in plugin.json is kebab-case | ERROR |
| P3: plugin.json has version | version field follows semver | WARN |
| P4: plugin.json has description | description field exists | WARN |
| P5: no nested components | No skills/ or agents/ inside .claude-plugin/ | ERROR |
| P6: CLAUDE.md exists | Plugin root has CLAUDE.md | WARN |
| P7: naming consistency | All skill/agent names use kebab-case throughout | ERROR |
Write the full audit report to {PLUGIN_PATH}/analysis.md. This file is the persistent artifact of the audit — it stays in the plugin folder for reference and tracking over time.
Use this structure for the file:
# Plugin Audit: {plugin-name}
**Path**: {PLUGIN_PATH}
**Date**: {today}
**Skills**: {count} | **Agents**: {count}
## Summary
| Severity | Count |
|----------|-------|
| ERROR | {n} |
| WARN | {n} |
| INFO | {n} |
| PASS | {n} |
## Plugin Structure
- P1: {PASS/FAIL} — plugin.json valid
- P2: {PASS/FAIL} — plugin.json has name
...
## Skills
### {skill-name}
- F1: {PASS/FAIL} — name exists
- F2: {PASS/FAIL} — name format
...
### {skill-name}
...
## Agents
### {agent-name}
- A1: {PASS/FAIL} — name exists
...
## Top Issues (by impact)
1. {Most impactful issue + suggested fix}
2. {Next issue + suggested fix}
3. ...
## Suggested Fixes
{For each ERROR and WARN, a specific actionable fix}
After writing the file, print a brief summary to the user:
analysis.mdDo NOT write fixes to skill/agent files. Only report them in analysis.md. The user decides what to apply.
Skills: name, description, argument-hint, allowed-tools, disable-model-invocation, user-invocable, context, agent, model, hooks
Agents: name, description, tools, disallowedTools, model, permissionMode, maxTurns, skills, mcpServers, memory, hooks, color, background, isolation
Good signals (any of these = likely good):
Bad signals (any of these = likely bad):
development
Comprehensive Cloudflare platform skill covering Workers, Pages, storage (KV, D1, R2), AI (Workers AI, Vectorize, Agents SDK), feature flags (Flagship), networking (Tunnel, Spectrum), security (WAF, DDoS), and infrastructure-as-code (Terraform, Pulumi). Use for any Cloudflare development task. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.
tools
Send and receive transactional emails with Cloudflare Email Service (Email Sending + Email Routing). Use when building email sending (Workers binding or REST API), email routing, Agents SDK email handling, or integrating email into any app — Workers, Node.js, Python, Go, etc. Also use for email deliverability, SPF/DKIM/DMARC, wrangler email setup, MCP email tools, or when a coding agent needs to send emails. Even for simple requests like "add email to my Worker" — this skill has critical config details.
tools
Build AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, chat applications, voice agents, or browser automation. Covers Agent class, state management, callable RPC, Workflows, durable execution, queues, retries, observability, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.
tools
Planning conductor — runs the full PRD → Spec → Gherkin loop in a single interactive session with human approval gates.