--- name: skill-validator version: 1.0.0 description: | Validate Claude Code skills, commands, agents, hooks, and plugins against specifications. Checks structure, format, best practices, and common issues before committing or distributing. Use when: validating skills, checking plugins, linting components, ensuring quality. Activates for: "validate skill", "check skill", "validate plugin", "lint skill", "verify skill" --- # Skill Validator Validate Claude Code components against specifications and best practices. ## When to Use - Before committing skills/plugins - Before distributing to marketplace - During skill development (catch issues early) - Reviewing community contributions - Ensuring quality standards ## Validation Checks ### Skills (SKILL.md) #### Structure Checks - ✅ YAML frontmatter present and valid - ✅ Required fields: name, version, description - ✅ Name is kebab-case - ✅ Version follows semantic versioning - ✅ Description is clear and includes triggers #### Content Checks - ✅ Has "When to Use" section - ✅ Has workflow or instructions - ✅ Includes examples - ✅ Under 500 lines (or has progressive disclosure) - ✅ No TODOs or placeholders - ✅ No generic labels (helper, util, tool) #### Best Practices - ✅ Specific triggers (not too generic) - ✅ Real examples (not placeholders) - ✅ Clear, actionable instructions - ✅ Integration points documented - ✅ Troubleshooting section present ### Commands #### Structure Checks - ✅ YAML frontmatter with description - ✅ Clear command name - ✅ Usage examples provided - ✅ Parameters documented #### Content Checks - ✅ Purpose is clear - ✅ Instructions are actionable - ✅ Examples show real usage - ✅ Parameter descriptions complete ### Agents #### Structure Checks - ✅ YAML frontmatter present - ✅ Model specified (haiku/sonnet/opus) - ✅ Purpose is clear - ✅ Workflow defined #### Content Checks - ✅ Single responsibility - ✅ Operational principles defined - ✅ Quality standards specified - ✅ Success criteria clear - ✅ Appropriate model for task complexity ### Hooks #### Structure Checks - ✅ Valid JSON format - ✅ Event type is valid - ✅ Command is specified - ✅ Description provided #### Safety Checks - ✅ No arbitrary code execution - ✅ File paths are validated - ✅ Commands are safe - ✅ Filters are specific (not too broad) ### Plugins #### Structure Checks - ✅ `.claude-plugin/plugin.json` exists - ✅ Valid JSON format - ✅ Required fields present - ✅ Referenced components exist - ✅ Directory structure correct #### Manifest Checks - ✅ Name is kebab-case - ✅ Version follows semver - ✅ Description is clear - ✅ Keywords are relevant - ✅ Author info present (if distributing) ## Core Workflow ### 1. Identify Component Type Determine what to validate: - Skill (SKILL.md) - Command (.md in commands/) - Agent (.md in agents/) - Hook (hooks.json) - Plugin (entire plugin directory) ### 2. Run Validation Checks Execute appropriate checks based on component type. ### 3. Report Issues Categorize by severity: - **Error**: Must fix (prevents functionality) - **Warning**: Should fix (best practice violation) - **Info**: Consider fixing (minor improvement) ### 4. Provide Fixes For each issue, provide: - Description of problem - Why it's an issue - How to fix it - Code example if applicable ## Validation Examples ### Skill Validation **Input:** `skills/my-skill.md` **Checks:** ```txt ✅ YAML frontmatter valid ✅ Name: my-skill (kebab-case) ✅ Version: 1.0.0 (semver) ✅ Description present ⚠️ No triggers defined ⚠️ Missing "When to Use" section ✅ Has examples ✅ 342 lines (under 500) ❌ Contains TODO on line 45 ❌ Uses generic label "helper" in title ``` **Report:** ```txt Errors (2): 1. Line 45: TODO found - remove before publishing 2. Line 12: Generic label "helper" - be more specific Warnings (2): 1. No triggers defined - skill won't auto-activate 2. Missing "When to Use" section - users won't know when to apply Info (0): None Score: 6/10 - Fix errors before publishing ``` ### Plugin Validation **Input:** `my-plugin/` **Checks:** ```txt ✅ plugin.json exists ✅ Valid JSON ✅ Name: my-plugin ✅ Version: 1.0.0 ⚠️ No description ❌ Referenced skill "skill-1" not found in skills/ ✅ Directory structure correct ⚠️ No README.md ⚠️ No LICENSE file ``` **Report:** ```txt Errors (1): 1. plugin.json references "skill-1" but skills/skill-1.md doesn't exist Warnings (3): 1. plugin.json missing description field 2. README.md not found - add documentation 3. LICENSE file missing - add if distributing publicly Info (0): None Score: 5/10 - Fix errors, address warnings ``` ## Validation Rules ### Severity Levels **Error (Must Fix):** - Invalid YAML/JSON syntax - Missing required fields - Referenced files don't exist - TODOs in production code - Security issues in hooks - Invalid semantic version **Warning (Should Fix):** - Missing recommended fields - No triggers (skill won't auto-activate) - Missing documentation sections - Generic/vague naming - No examples - No license (public distribution) **Info (Consider):** - Could improve clarity - Additional documentation helpful - Consider progressive disclosure (long skills) ### Common Issues #### Generic Naming ```txt ❌ my-helper ❌ utils-tool ❌ component-stuff ✅ shadcn-component-generator ✅ drizzle-schema-generator ✅ tanstack-query-hook ``` #### Missing Triggers ```yaml ❌ Missing entirely ✅ triggers: keywords: [specific, technical, terms] patterns: ["regex.*patterns"] ``` #### TODOs in Production ```markdown ❌ ## Feature X TODO: Implement this later ✅ ## Feature X Complete implementation ``` #### Vague Descriptions ```txt ❌ "Helps with things" ❌ "Utility for stuff" ✅ "Generate type-safe API clients from OpenAPI schemas" ✅ "Validate React components for WCAG AAA accessibility" ``` ## Validation Output Format ```txt Component: [name] Type: [skill|command|agent|hook|plugin] Location: [file path] Structure: [✅|⚠️|❌] Content: [✅|⚠️|❌] Best Practices: [✅|⚠️|❌] Errors (must fix): [count] 1. [description] 2. [description] Warnings (should fix): [count] 1. [description] 2. [description] Info (consider): [count] 1. [description] Overall Score: [0-10] Status: [Ready|Needs work|Not ready] Recommendations: - [specific action 1] - [specific action 2] ``` ## Validation Best Practices 1. **Validate Early**: Check during development, not just before publishing 2. **Fix Errors First**: Don't publish with errors 3. **Address Warnings**: They indicate best practice violations 4. **Review Info**: Consider suggestions for improvements 5. **Re-validate**: After fixes, validate again ## Integration ### With Hooks Auto-validate before commits: ```json { "name": "validate-before-commit", "event": "user-prompt-submit", "when": "before", "command": "claude-validate --skills", "filter": { "promptPattern": "commit" } } ``` ### With Commands Create validation command: ```markdown --- description: Validate all skills in current plugin --- # Validate Skills Run skill-validator on all SKILL.md files in current plugin. ## Usage \`\`\` /validate-skills \`\`\` ``` ### With CI/CD Add to GitHub Actions: ```yaml - name: Validate Skills run: claude-validate --all --strict ``` ## References - [Claude Code Documentation](https://docs.claude.com/en/docs/claude-code) - [Anthropic Best Practices](https://docs.claude.com/en/docs/claude-code/best-practices) - [super-claude CREATING_SKILLS.md](../../docs/CREATING_SKILLS.md)