Claude-code-plugins-plus-skills Plugin Validator
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.
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/backups/plugin-enhancements/plugin-backups/skills-powerkit_20251020_012455/skills/plugin-validator" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-plugin-validator-04e2b7 && rm -rf "$T"
backups/plugin-enhancements/plugin-backups/skills-powerkit_20251020_012455/skills/plugin-validator/SKILL.mdPlugin 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
- ✅
exists.claude-plugin/plugin.json - ✅
exists and not emptyREADME.md - ✅
file existsLICENSE - ✅ At least one component directory (commands/, agents/, skills/, hooks/, mcp/)
2. Plugin.json Schema
# 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):
--- name: command-name description: Brief description model: sonnet|opus|haiku ---
For Agents (agents/*.md):
--- name: agent-name description: Agent purpose model: sonnet|opus|haiku ---
For Skills (skills/*/SKILL.md):
--- 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
# All .sh files must be executable find . -name "*.sh" ! -perm -u+x # Should return empty
6. JSON Validation
# 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
not absolute paths${CLAUDE_PLUGIN_ROOT} - ✅ No hardcoded /home/ or /Users/ paths
Validation Process
When activated, I will:
-
Identify Plugin
- Detect plugin directory from context
- Or ask user which plugin to validate
-
Run Comprehensive Checks
# 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 -
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 (
reformat)jq - ✅ 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:
- Run all validation checks
- Identify 2 issues (permissions, version mismatch)
- Provide fix commands
- Report overall status: FAILED
User says: "Check if my plugin is ready to commit"
I automatically:
- Detect plugin from context
- Run comprehensive validation
- Check marketplace compliance
- Report: PASSED or list issues
User says: "Why is my plugin failing CI?"
I automatically:
- Run same checks as CI
- Identify exact failure
- Provide fix command
- Validate fix works