Files
gh-jeremylongshore-claude-c…/skills/plugin-validator/SKILL.md
2025-11-30 08:20:15 +08:00

250 lines
6.1 KiB
Markdown

---
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