Validate plugin structure, manifest, and component files for common issues
Validates plugin structure, manifest, and component files for common issues.
/plugin marketplace add ArcBlock/agent-skills/plugin install plugin-development@arcblock-agent-skillsComprehensive validation of plugin structure, configuration, and components.
.claude-plugin/plugin.json)Performs a thorough validation of the plugin:
Verify these exist:
ā” .claude-plugin/plugin.json
ā” At least one component directory (commands/, agents/, skills/, or hooks/)
Read and check:
name, version, description./ not /Example valid structure:
{
"name": "plugin-name",
"version": "1.0.0",
"description": "What the plugin does",
"author": {
"name": "Your Name"
},
"license": "MIT",
"keywords": ["keyword1"],
"commands": "./commands/",
"agents": "./agents/",
"hooks": "./hooks/hooks.json"
}
For each path in plugin.json:
For each file in commands/:
--- delimitersdescriptionFor each directory in skills/:
--- delimitersname and description presentFor each file in agents/:
--- delimitersIf hooks.json exists:
hooks object${CLAUDE_PLUGIN_ROOT}Report findings in this structure:
š Validating plugin: <plugin-name>
ā
Structure
ā .claude-plugin/plugin.json exists
ā Component directories present
ā
Manifest (plugin.json)
ā Valid JSON
ā Required fields: name, version, description
ā Name format: kebab-case
ā Version format: SemVer
ā Paths are relative
ā
Commands (3 files)
ā commands/init.md
ā commands/validate.md
ā commands/test-local.md
ā
Skills (1 skill)
ā skills/plugin-authoring/SKILL.md
- name matches directory: ā
- description present: ā
ā
Agents (1 agent)
ā agents/plugin-reviewer.md
ā
Hooks
ā hooks/hooks.json is valid
ā Scripts exist and are executable
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā
Validation passed: 0 errors, 0 warnings
If issues are found, report clearly:
ā Errors Found
1. Manifest: plugin.json missing required field "version"
Fix: Add "version": "1.0.0" to .claude-plugin/plugin.json
2. Command: commands/myCommand.md uses camelCase
Fix: Rename to commands/my-command.md (kebab-case)
3. Skill: skills/MySkill/SKILL.md name doesn't match directory
Fix: Change frontmatter 'name' to "my-skill" (matches directory)
ā ļø Warnings
1. No README.md found
Suggestion: Create README.md with usage documentation
2. No keywords in plugin.json
Suggestion: Add keywords array for discoverability
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Validation failed: 3 errors, 2 warnings
ā "commands": "/Users/you/plugin/commands/"
ā
"commands": "./commands/"
Directory: skills/code-review/
Frontmatter: name: codeReview
ā Names don't match
Fix: Change frontmatter to name: code-review
# My Command
Instructions...
ā No frontmatter with description
---
description: What this command does
---
# My Command
Instructions...
ā Has required frontmatter
$ ls -l scripts/validate.sh
-rw-r--r-- validate.sh
ā Not executable
$ chmod +x scripts/validate.sh
ā
Now executable
Complete checklist used for validation:
Structure:
ā” .claude-plugin/plugin.json exists
ā” At least one component directory present
ā” README.md exists
Manifest:
ā” Valid JSON syntax
ā” name field: present, kebab-case
ā” version field: present, valid SemVer
ā” description field: present, non-empty
ā” Paths are relative (start with ./)
ā” Referenced paths exist
Commands:
ā” .md extension
ā” Frontmatter with description
ā” kebab-case naming
ā” Non-empty content
Skills:
ā” Directory structure (skill-name/SKILL.md)
ā” SKILL.md in uppercase
ā” Frontmatter with name and description
ā” Name matches directory (exact, kebab-case)
Agents:
ā” .md extension
ā” Frontmatter with description
ā” kebab-case naming
ā” Non-empty content
Hooks:
ā” hooks.json valid JSON
ā” Proper structure (hooks object)
ā” Valid event names
ā” Scripts use ${CLAUDE_PLUGIN_ROOT}
ā” Scripts exist
ā” Scripts are executable (chmod +x)
ā
Plugin is valid and ready for testing!
Next steps:
1. Test locally: /plugin-development:test-local
2. Create dev marketplace and install
3. Test all commands and features
4. Register in team marketplace when ready
ā Please fix the errors above before testing.
Need help?
- Review error messages for specific fixes
- Check best practices: /plugin-development:help
- Common issues documented in examples
Input: /plugin-development:validate
Output:
š Validating plugin: my-awesome-plugin
ā
All checks passed
ā Structure correct
ā Manifest valid
ā 5 commands validated
ā 2 skills validated
ā 1 agent validated
ā Hooks configured correctly
ā
Plugin ready for testing!
claude --debug for deep inspection