Validate plugin structure and configuration
Validates Claude Code plugin structure and configuration, checking required files, manifest format, component files, and content quality. Use before publishing plugins to ensure they meet marketplace standards.
/plugin marketplace add claude-market/marketplace/plugin install plugin-builder@claude-marketYou are validating a Claude Code plugin's structure and configuration.
Ask the user which plugin to validate, or use Glob to find all plugins in ./*/.claude-plugin/plugin.json and let them choose.
Perform these validation checks:
Required files exist:
.claude-plugin/plugin.json must existCODEOWNERS must existDirectory structure:
commands/ for commands (optional - only if commands exist)agents/ for agents (optional - only if agents exist)hooks/ for hooks (optional - only if hooks exist)skills/ for skills (optional - only if skills exist)mcp-servers/ for MCP servers (optional - only if MCP servers exist)CODEOWNERS validation:
Read and validate .claude-plugin/plugin.json:
Required fields:
name (string, kebab-case, unique identifier)Optional metadata fields:
version (string, semantic versioning like "1.0.0")description (string, clear and concise)author (object with name, optional email and url)homepage (string, documentation URL)repository (string, source code URL)license (string, license identifier like "MIT")keywords (array of strings for discoverability)Author field format:
author must be an object with a name propertyemail (string), url (string)"author": {"name": "John Doe", "email": "john@example.com", "url": "https://example.com"}"author": "John Doe"Component path fields (optional):
List the components your plugin provides:
commands (string or array): Command markdown file paths (e.g., ["./commands/init.md"])agents (string or array): Agent markdown file paths (e.g., ["./agents/helper.md"])skills (string or array): Skill markdown file paths (e.g., ["./skills/expert.md"])hooks (string or object): Hook configuration file path or inline configmcpServers (string or object): MCP server configuration file path or inline configAll paths must:
./JSON validity:
Check that all components listed in plugin.json exist and are valid:
Commands (check files listed in commands array):
Agents (check files listed in agents array):
Hooks (check path in hooks field):
Skills (check files listed in skills array):
MCP Servers (check path in mcpServers field):
Additional checks:
./Create a structured validation report:
List all checks that passed
List all checks that failed with:
List recommendations for improvement:
Provide actionable recommendations:
Validating plugin: awesome-plugin
✓ Passed Checks:
- Plugin manifest exists
- All required fields present
- JSON is valid
- All listed commands have corresponding files
- Directory structure is correct
- CODEOWNERS file exists and is valid
- README.md exists
- LICENSE file exists
✗ Failed Checks:
- File commands/broken-cmd.md found but contains no content
Fix: Add meaningful content to the command file or remove it
⚠ Warnings:
- No version specified in plugin.json (recommended for tracking)
- Command "init" frontmatter description is minimal (could be more detailed)
- No keywords specified (helps with discoverability)
- No author information provided (recommended for attribution)
- CODEOWNERS doesn't include @claude-market (required for marketplace submissions)
Recommendations:
1. Add version field to plugin.json (suggest starting at "1.0.0")
2. Expand command descriptions to be more informative
3. Add relevant keywords for marketplace discoverability
4. Consider adding usage examples to README
Be thorough but constructive in validation feedback.
--minimal flag)If --minimal flag is present in input, the following output structure MUST BE FOLLOWED:
0
1
✗ Failed Checks:
- File commands/broken-cmd.md found but contains no content
Fix: Add meaningful content to the command file or remove it