Validates plugin structure, manifest (plugin.json), and components for common issues including paths, naming conventions, and configuration errors.
From plugin-developmentnpx claudepluginhub armstrongl/super-duper-disco --plugin plugin-development/validateValidates CLI harness for software at given path or GitHub repo against HARNESS.md standards: directory structure, files, Click CLI, core modules, tests, and docs.
/validateValidates project structure, git config, build setup, code quality, CI/CD workflows, and best practices; reports issues, score, and recommendations with --path and --verbose options.
/validateValidates project implementation against scope and tasks documents using parallel subagents, producing validation_gaps.md with actionable remediation tasks.
/validateValidates cli-anything-web CLI at <app-path> against HARNESS.md standards across 11 categories (75 checks), reporting N/N pass/fail counts and fix suggestions for failures.
/validateValidates plans, roadmaps, or proposals as ruthless CTO mentor, producing 8-section report with verdict, strengths, flaws, blindspots, and next steps.
/validateValidates SonIA project operational integrity: checks kanban Markdown files, traceability, progress, UAT JSON, and optional GitHub sync. Reports verdict as approved, approved with warnings, or rejected.
Comprehensive 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