Claude-skills plugin-audit
git clone https://github.com/alirezarezvani/claude-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/alirezarezvani/claude-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.gemini/skills/plugin-audit" ~/.claude/skills/alirezarezvani-claude-skills-plugin-audit && rm -rf "$T"
.gemini/skills/plugin-audit/SKILL.md/plugin-audit
Full audit pipeline for any skill, plugin, agent, or command in this repository. Runs 8 validation phases, auto-fixes what it can, and only stops for user input on critical decisions (breaking changes, new dependencies).
Usage
/plugin-audit product-team/code-to-prd /plugin-audit engineering/agenthub /plugin-audit engineering-team/playwright-pro
What It Does
Execute all 8 phases sequentially. Stop on critical failures. Auto-fix non-critical issues. Report results at the end.
Phase 1: Discovery
Identify what the skill contains and classify it.
- Verify
exists and contains{skill_path}SKILL.md - Read
frontmatter — extractSKILL.md
,name
,description
,CategoryTier - Detect skill type:
- Has
→ has Python toolsscripts/ - Has
→ has reference docsreferences/ - Has
→ has templates/samplesassets/ - Has
→ has test fixturesexpected_outputs/ - Has
→ has embedded agentsagents/ - Has
→ has sub-skills (compound skill)skills/ - Has
→ is a standalone plugin.claude-plugin/plugin.json - Has
→ has command registrationssettings.json
- Has
- Detect domain from path:
,engineering/
,product-team/
, etc.marketing-skill/ - Check for associated command: search
for acommands/
file matching the skill name.md
Display discovery summary before proceeding:
Auditing: code-to-prd Domain: product-team Type: STANDARD skill with standalone plugin Scripts: 2 | References: 2 | Assets: 1 | Expected outputs: 3 Command: /code-to-prd (found) Plugin: .claude-plugin/plugin.json (found)
Phase 2: Structure Validation
Run the skill-tester validator.
python3 engineering/skill-tester/scripts/skill_validator.py {skill_path} --tier {detected_tier} --json
Parse the JSON output. Extract:
- Overall score and compliance level
- Failed checks (list each)
- Errors and warnings
Gate rule: Score must be ≥ 75 (GOOD). If below 75:
- Read the errors list
- Auto-fix what's possible:
- Missing frontmatter fields → add them from SKILL.md content
- Missing sections → add stub headings
- Missing directories → create empty ones with a note
- Re-run after fixes. If still below 75, report as FAIL and continue to collect remaining results.
Phase 3: Quality Scoring
Run the quality scorer.
python3 engineering/skill-tester/scripts/quality_scorer.py {skill_path} --detailed --json
Parse the JSON output. Extract:
- Overall score and letter grade
- Per-dimension scores (Documentation, Code Quality, Completeness, Usability)
- Improvement roadmap items
Gate rule: Score must be ≥ 60 (C). If below 60, report the improvement roadmap items as action items.
Phase 4: Script Testing
If the skill has
scripts/ with .py files, run the script tester.
python3 engineering/skill-tester/scripts/script_tester.py {skill_path} --json --verbose
Parse the JSON output. For each script, extract:
- Pass/Partial/Fail status
- Individual test results
Gate rule: All scripts must PASS. Any FAIL is a blocker. PARTIAL triggers a warning.
Auto-fix: If a script fails the
--help test, check if it has argparse — if not, this is a real issue. If it fails the stdlib-only test, flag the import and ask the user whether the dependency is acceptable (this is a critical decision).
Phase 5: Security Audit
Run the skill security auditor.
python3 engineering/skill-security-auditor/scripts/skill_security_auditor.py {skill_path} --strict --json
Parse the JSON output. Extract:
- Verdict (PASS/WARN/FAIL)
- Critical findings (must be zero)
- High findings (must be zero in strict mode)
- Info findings (advisory only)
Gate rule: Zero CRITICAL findings. Zero HIGH findings. Any CRITICAL or HIGH is a blocker — report the exact file, line, pattern, and recommended fix.
Do NOT auto-fix security issues. Report them and let the user decide.
Phase 6: Marketplace & Plugin Compliance
6a. plugin.json Validation
If
{skill_path}/.claude-plugin/plugin.json exists:
- Parse as JSON — must be valid
- Verify only allowed fields:
,name
,description
,version
,author
,homepage
,repository
,licenseskills - Version must match repo version (
)2.1.2
must beskills"./"
must match the skill directory namename
Auto-fix: If version is wrong, update it. If extra fields exist, remove them.
6b. settings.json Validation
If
{skill_path}/settings.json exists:
- Parse as JSON — must be valid
- Version must match repo version
- If
field exists, verify each command has a matching file incommandscommands/
6c. Marketplace Entry
Check if the skill has an entry in
.claude-plugin/marketplace.json:
- Search the
array for an entry withplugins
matchingsource
+ skill path./ - If found: verify
,version
, and thatname
path existssource - If not found: check if the skill's domain bundle (e.g.,
) would include it via itsproduct-skills
pathsource
6d. Domain plugin.json
Check the parent domain's
.claude-plugin/plugin.json:
- Verify the skill count in the description matches reality
- Verify version matches repo version
Auto-fix: Update stale counts. Fix version mismatches.
Phase 7: Ecosystem Integration
7a. Cross-Platform Sync
Verify the skill appears in platform indexes:
grep -l "{skill_name}" .codex/skills-index.json .gemini/skills-index.json
If missing from either index:
python3 scripts/sync-codex-skills.py --verbose python3 scripts/sync-gemini-skills.py --verbose
7b. Command Integration
If the skill has associated commands (from settings.json
commands field or matching name in commands/):
- Verify the command
file has valid YAML frontmatter (.md
,name
)description - Verify the command references the correct skill path
- Verify the command is in
navmkdocs.yml
Auto-fix: Add missing mkdocs.yml nav entries.
7c. Agent Integration
If the skill has embedded agents (
{skill_path}/agents/*.md):
- Verify each agent has valid YAML frontmatter
- Verify agent references resolve (relative paths to skills)
Search
agents/ for any cs-* agent that references this skill:
grep -rl "{skill_name}\|{skill_path}" agents/
If found, verify the agent's skill references are correct.
7d. Cross-Skill Dependencies
Read the SKILL.md for references to other skills (look for
../ paths, skill names in "Related Skills" sections):
- Verify each referenced skill exists
- Verify the referenced skill's SKILL.md exists
Phase 8: Domain-Appropriate Code Review
Based on the skill's domain, invoke the appropriate agent's review perspective:
| Domain | Agent | Review Focus |
|---|---|---|
or | cs-senior-engineer | Architecture, code quality, CI/CD integration |
| cs-product-manager | PRD quality, user story coverage, RICE alignment |
| cs-content-creator | Content quality, SEO optimization, brand voice |
| cs-quality-regulatory | Compliance checklist, audit trail, regulatory alignment |
| cs-growth-strategist | Growth metrics, revenue impact, customer success |
| cs-financial-analyst | Financial model accuracy, metric definitions |
| Other | cs-senior-engineer | General code and architecture review |
How to invoke: Read the agent's
.md file to understand its review criteria. Apply those criteria to review the skill's SKILL.md, scripts, and references. This is NOT spawning a subagent — it's using the agent's documented perspective to structure your review.
Review checklist (apply domain-appropriate lens):
- SKILL.md workflows are actionable and complete
- Scripts solve the stated problem correctly
- References contain accurate domain knowledge
- Templates/assets are production-ready
- No broken internal links
- Attribution present where required
Final Report
Present results as a structured table:
╔══════════════════════════════════════════════════════════════╗ ║ PLUGIN AUDIT REPORT: {skill_name} ║ ╠══════════════════════════════════════════════════════════════╣ ║ ║ ║ Phase 1 — Discovery ✅ {type}, {domain} ║ ║ Phase 2 — Structure ✅ {score}/100 ({level}) ║ ║ Phase 3 — Quality ✅ {score}/100 ({grade}) ║ ║ Phase 4 — Scripts ✅ {n}/{n} PASS ║ ║ Phase 5 — Security ✅ PASS (0 critical, 0 high) ║ ║ Phase 6 — Marketplace ✅ plugin.json valid ║ ║ Phase 7 — Ecosystem ✅ Codex + Gemini synced ║ ║ Phase 8 — Code Review ✅ {domain} review passed ║ ║ ║ ║ VERDICT: ✅ PASS — Ready for merge/publish ║ ║ ║ ║ Auto-fixes applied: {n} ║ ║ Warnings: {n} ║ ║ Action items: {n} ║ ║ ║ ╚══════════════════════════════════════════════════════════════╝
Verdict Logic
| Condition | Verdict |
|---|---|
| All phases pass | PASS — Ready for merge/publish |
| Only warnings (no blockers) | PASS WITH WARNINGS — Review warnings before merge |
| Any phase has a blocker | FAIL — List blockers with fix instructions |
Blockers (any of these = FAIL)
- Structure score < 75
- Quality score < 60 (after noting roadmap)
- Any script FAIL
- Any CRITICAL or HIGH security finding
- plugin.json invalid or has disallowed fields
- Version mismatch with repo
Non-Blockers (warnings only)
- Quality score between 60-75
- Script PARTIAL results
- Missing from one platform index (auto-fixed)
- Missing mkdocs.yml nav entry (auto-fixed)
- Security INFO findings
Skill References
| Tool | Path |
|---|---|
| Skill Validator | |
| Quality Scorer | |
| Script Tester | |
| Security Auditor | |
| Quality Standards | |
| Security Standards | |
| Git Standards | |