--- name: plugin-validator description: | Automatically validates Claude Code plugin structure, schemas, and compliance when user mentions validate plugin, check plugin, or plugin errors. Runs comprehensive validation specific to claude-code-plugins repository standards. allowed-tools: Read, Grep, Bash version: 1.0.0 --- # Plugin Validator ## Purpose Automatically validates Claude Code plugins against repository standards, checking structure, JSON schemas, frontmatter, permissions, security, and marketplace compliance - optimized for claude-code-plugins repository. ## Trigger Keywords - "validate plugin" - "check plugin" - "plugin validation" - "plugin errors" - "lint plugin" - "verify plugin" ## Validation Checks ### 1. Required Files - ✅ `.claude-plugin/plugin.json` exists - ✅ `README.md` exists and not empty - ✅ `LICENSE` file exists - ✅ At least one component directory (commands/, agents/, skills/, hooks/, mcp/) ### 2. Plugin.json Schema ```bash # Required fields: - name (kebab-case, lowercase, hyphens only) - version (semantic versioning x.y.z) - description (clear, concise) - author.name - author.email - license (MIT, Apache-2.0, etc.) - keywords (array, at least 2) # Optional but recommended: - repository (GitHub URL) - homepage (docs URL) ``` ### 3. Frontmatter Validation **For Commands (commands/*.md):** ```yaml --- name: command-name description: Brief description model: sonnet|opus|haiku --- ``` **For Agents (agents/*.md):** ```yaml --- name: agent-name description: Agent purpose model: sonnet|opus|haiku --- ``` **For Skills (skills/*/SKILL.md):** ```yaml --- name: Skill Name description: What it does AND when to use it allowed-tools: Tool1, Tool2, Tool3 # optional --- ``` ### 4. Directory Structure Validates proper hierarchy: ``` plugin-name/ ├── .claude-plugin/ # Required │ └── plugin.json # Required ├── README.md # Required ├── LICENSE # Required ├── commands/ # Optional │ └── *.md ├── agents/ # Optional │ └── *.md ├── skills/ # Optional │ └── skill-name/ │ └── SKILL.md ├── hooks/ # Optional │ └── hooks.json └── mcp/ # Optional └── *.json ``` ### 5. Script Permissions ```bash # All .sh files must be executable find . -name "*.sh" ! -perm -u+x # Should return empty ``` ### 6. JSON Validation ```bash # All JSON must be valid jq empty plugin.json jq empty marketplace.extended.json jq empty hooks/hooks.json ``` ### 7. Security Scans - ❌ No hardcoded secrets (API keys, tokens, passwords) - ❌ No AWS keys (AKIA...) - ❌ No private keys (BEGIN PRIVATE KEY) - ❌ No dangerous commands (rm -rf /, eval()) - ❌ No suspicious URLs (non-HTTPS, IP addresses) ### 8. Marketplace Compliance - ✅ Plugin listed in marketplace.extended.json - ✅ Source path matches actual location - ✅ Version matches between plugin.json and catalog - ✅ Category is valid - ✅ No duplicate plugin names ### 9. README Requirements - ✅ Has installation instructions - ✅ Has usage examples - ✅ Has description section - ✅ Proper markdown formatting - ✅ No broken links ### 10. Path Variables For hooks: - ✅ Uses `${CLAUDE_PLUGIN_ROOT}` not absolute paths - ✅ No hardcoded /home/ or /Users/ paths ## Validation Process When activated, I will: 1. **Identify Plugin** - Detect plugin directory from context - Or ask user which plugin to validate 2. **Run Comprehensive Checks** ```bash # Structure validation ./scripts/validate-all.sh plugins/category/plugin-name/ # JSON validation jq empty .claude-plugin/plugin.json # Frontmatter check python3 scripts/check-frontmatter.py # Permission check find . -name "*.sh" ! -perm -u+x # Security scan grep -r "password\|secret\|api_key" | grep -v placeholder ``` 3. **Generate Report** - List all issues by severity (critical, high, medium, low) - Provide fix commands for each issue - Summary: PASSED or FAILED ## Validation Report Format ``` 🔍 PLUGIN VALIDATION REPORT Plugin: plugin-name Location: plugins/category/plugin-name/ ✅ PASSED CHECKS (8/10) - Required files present - Valid plugin.json schema - Proper frontmatter format - Directory structure correct - No security issues - Marketplace compliance - README complete - JSON valid ❌ FAILED CHECKS (2/10) - Script permissions: 3 .sh files not executable Fix: chmod +x scripts/*.sh - Marketplace version mismatch plugin.json: v1.2.0 marketplace.extended.json: v1.1.0 Fix: Update marketplace.extended.json to v1.2.0 ⚠️ WARNINGS (1) - README missing usage examples Recommendation: Add ## Usage section with examples OVERALL: FAILED (2 critical issues) Fix issues above before committing. ``` ## Auto-Fix Capabilities I can automatically fix: - ✅ Script permissions (`chmod +x`) - ✅ JSON formatting (`jq` reformat) - ✅ Marketplace version sync - ✅ Missing LICENSE (copy from root) ## Repository-Specific Checks **For claude-code-plugins repo:** - Validates against `.claude-plugin/marketplace.extended.json` - Checks category folder matches catalog entry - Ensures marketplace slug is `claude-code-plugins-plus` - Validates against other plugins (no duplicates) - Checks compliance with CLAUDE.md standards ## Integration with CI Validation results match GitHub Actions: - Same checks as `.github/workflows/validate-plugins.yml` - Compatible with CI error format - Can be run locally before pushing ## Examples **User says:** "Validate the skills-powerkit plugin" **I automatically:** 1. Run all validation checks 2. Identify 2 issues (permissions, version mismatch) 3. Provide fix commands 4. Report overall status: FAILED **User says:** "Check if my plugin is ready to commit" **I automatically:** 1. Detect plugin from context 2. Run comprehensive validation 3. Check marketplace compliance 4. Report: PASSED or list issues **User says:** "Why is my plugin failing CI?" **I automatically:** 1. Run same checks as CI 2. Identify exact failure 3. Provide fix command 4. Validate fix works