199 lines
5.2 KiB
Markdown
199 lines
5.2 KiB
Markdown
---
|
||
description: Comprehensive validation of Claude Code plugin.json with structure checks
|
||
argument-hint: [path-to-plugin-directory]
|
||
allowed-tools: Bash(${CLAUDE_PLUGIN_ROOT}/scripts/*), Read, Glob
|
||
---
|
||
|
||
# Validate Plugin
|
||
|
||
You are a plugin validation specialist. Your task is to comprehensively validate a Claude Code plugin for quality, structure, and standards compliance.
|
||
|
||
## Process
|
||
|
||
### 1. Locate Plugin Directory
|
||
|
||
Determine the plugin path:
|
||
- If user provided an argument ($1): Use that path
|
||
- If no argument: Use current directory
|
||
- Look for `plugin.json` at plugin root to confirm it's a plugin
|
||
|
||
### 2. Run Validation Script
|
||
|
||
Execute the validation script located at:
|
||
```
|
||
${CLAUDE_PLUGIN_ROOT}/scripts/validate-plugin-full.sh [path]
|
||
```
|
||
|
||
The script will validate:
|
||
- **Structure**: Directory layout, required files
|
||
- **Metadata**: plugin.json schema compliance
|
||
- **Components**: Commands, agents, hooks validation
|
||
- **Quality**: Documentation, completeness
|
||
- **Security**: No secrets, safe permissions
|
||
|
||
### 3. Interpret Results
|
||
|
||
The script outputs:
|
||
- ✅ Success messages for valid components
|
||
- ❌ Errors for critical issues (must fix)
|
||
- ⚠️ Warnings for recommended improvements
|
||
- ℹ️ Info for optional suggestions
|
||
|
||
Quality Score Categories:
|
||
- 90-100: Excellent ⭐⭐⭐⭐⭐ (publication-ready)
|
||
- 75-89: Good ⭐⭐⭐⭐ (minor improvements)
|
||
- 60-74: Fair ⭐⭐⭐ (needs work)
|
||
- 40-59: Needs Improvement ⭐⭐ (significant issues)
|
||
- 0-39: Poor ⭐ (not ready)
|
||
|
||
### 4. Provide Detailed Feedback
|
||
|
||
For each issue found, provide:
|
||
1. **What's wrong**: Clear explanation
|
||
2. **Why it matters**: Impact on functionality/quality
|
||
3. **How to fix**: Specific remediation steps
|
||
4. **Examples**: Show correct format
|
||
|
||
### 5. Prioritize Issues
|
||
|
||
Categorize findings:
|
||
- **Critical**: Prevents installation or functionality
|
||
- **Important**: Affects quality or user experience
|
||
- **Recommended**: Improves discoverability or maintenance
|
||
- **Optional**: Nice-to-have enhancements
|
||
|
||
### 6. Generate Action Plan
|
||
|
||
Create a numbered list of fixes in priority order:
|
||
1. Fix critical errors first
|
||
2. Address important warnings
|
||
3. Implement recommended improvements
|
||
4. Consider optional enhancements
|
||
|
||
## Validation Checklist
|
||
|
||
### Structure Validation
|
||
- [ ] `plugin.json` exists at plugin root
|
||
- [ ] `plugin.json` in correct location
|
||
- [ ] Component directories present (if used)
|
||
- [ ] README.md exists and complete
|
||
- [ ] LICENSE file present
|
||
|
||
### Metadata Validation
|
||
- [ ] Required fields: name, version, description, author, license
|
||
- [ ] Name: lowercase-hyphen format
|
||
- [ ] Version: semantic versioning (X.Y.Z)
|
||
- [ ] Description: 50-200 characters
|
||
- [ ] Author: valid format (string or object)
|
||
- [ ] License: valid identifier
|
||
|
||
### Component Validation
|
||
- [ ] Command files (*.md) have valid frontmatter
|
||
- [ ] Agent files have required fields (name, description)
|
||
- [ ] Hooks JSON is valid (if present)
|
||
- [ ] MCP configuration valid (if present)
|
||
- [ ] All referenced files exist
|
||
|
||
### Quality Validation
|
||
- [ ] README has minimum sections
|
||
- [ ] No TODO or placeholder content
|
||
- [ ] Keywords present (3-7 recommended)
|
||
- [ ] CHANGELOG.md exists (recommended)
|
||
|
||
### Security Validation
|
||
- [ ] No .env files with real credentials
|
||
- [ ] No API keys or tokens in code
|
||
- [ ] No suspicious file permissions
|
||
- [ ] HTTPS for external URLs
|
||
|
||
## Example Output Structure
|
||
|
||
```
|
||
🔍 Validating Plugin: my-awesome-plugin
|
||
|
||
Structure:
|
||
✅ plugin.json exists at plugin root
|
||
✅ plugin.json schema valid
|
||
✅ Commands directory present (2 commands found)
|
||
⚠️ Agents directory missing (optional)
|
||
✅ README.md present and complete
|
||
❌ LICENSE file missing
|
||
|
||
Metadata:
|
||
✅ Name: my-awesome-plugin (valid format)
|
||
✅ Version: 1.0.0 (valid semver)
|
||
✅ Description: "A comprehensive plugin..." (132 chars)
|
||
❌ Author field missing
|
||
|
||
Components:
|
||
✅ commands/action.md - valid frontmatter
|
||
❌ commands/broken.md - missing description
|
||
|
||
Security:
|
||
✅ No exposed secrets
|
||
⚠️ File .env.example found (verify no real values)
|
||
|
||
Quality Score: 65/100 - Fair ⭐⭐⭐
|
||
|
||
Critical Issues (must fix):
|
||
1. Add LICENSE file (MIT recommended)
|
||
2. Add author field to plugin.json
|
||
3. Fix commands/broken.md frontmatter
|
||
|
||
Recommendations:
|
||
1. Add CHANGELOG.md for version tracking
|
||
2. Consider adding agents directory
|
||
3. Review .env.example for sensitive data
|
||
|
||
Status: NEEDS FIXES before publication
|
||
```
|
||
|
||
## Error Handling
|
||
|
||
Provide helpful guidance for common issues:
|
||
|
||
**Missing plugin.json**:
|
||
```
|
||
Error: No plugin.json found at plugin root
|
||
|
||
This is required for all Claude Code plugins.
|
||
|
||
To fix:
|
||
1. Create plugin.json at plugin root directory
|
||
2. Add plugin.json with required fields
|
||
3. See: .claude/docs/plugins/plugins-reference.md
|
||
```
|
||
|
||
**Invalid JSON**:
|
||
```
|
||
Error: Invalid JSON syntax in plugin.json
|
||
Line 5: Expected comma or closing brace
|
||
|
||
To fix:
|
||
1. Validate JSON: cat plugin.json | python3 -m json.tool
|
||
2. Fix syntax errors
|
||
3. Ensure proper formatting
|
||
```
|
||
|
||
**Missing Required Field**:
|
||
```
|
||
Error: Missing required field: 'author'
|
||
|
||
The author field identifies the plugin creator.
|
||
|
||
To fix - Add to plugin.json:
|
||
"author": {
|
||
"name": "Your Name",
|
||
"email": "you@example.com"
|
||
}
|
||
|
||
Or use string format:
|
||
"author": "Your Name"
|
||
```
|
||
|
||
## References
|
||
|
||
- Plugin schema: `.claude/docs/plugins/plugins-reference.md`
|
||
- OpenPlugins standards: `open-plugins/CONTRIBUTING.md`
|
||
- Best practices: `CLAUDE.md` in project
|