Validates plugin directory layout against the official Claude Code plugin spec. Triggers: validate structure, check layout, directory audit, plugin skeleton check.
"A plugin that does not follow the spec is not a plugin -- it is a folder with aspirations."
Validates that a Claude Code plugin's directory tree conforms to the official specification. Detects missing directories, misplaced files, naming violations, path traversal risks, and script permission issues.
plugin.json at the provided path (official spec location)..claude-plugin/plugin.json (legacy location). Report INFO: plugin.json found at legacy .claude-plugin/ path if found there.CRITICAL: No plugin.json found -- not a valid plugin root..claude-plugin/ directory exists, list all files inside it.plugin.json is inside .claude-plugin/, only plugin.json should be there. Any other file is a WARNING: Unexpected file in .claude-plugin/.plugin.json is at root (preferred), this check is N/A.skills/, commands/, agents/, hooks/.plugin.json.skills/ = WARNING if the plugin description implies skill-based functionality.commands/ = INFO (commands are optional).agents/ = INFO (plugin can use the host agent).hooks/ = INFO (hooks are optional).SKILL.md file: skills/<name>/SKILL.md..md files directly under commands/: commands/<name>.md..md files directly under agents/: agents/<name>.md.CRITICAL for any skill directory missing SKILL.md.WARNING for unexpected file types (.txt, .json) in commands/ or agents/.^[a-z][a-z0-9]*(-[a-z0-9]+)*$.WARNING for each violation with the offending name and suggested kebab-case alternative..md, .json, .sh files for ../ sequences.^/ in script files and hook configurations.CRITICAL for any ../ usage in hooks.json or script references.WARNING for ../ in documentation files (may be intentional examples)..sh, .py, .js files in the plugin tree.#!/bin/bash, #!/usr/bin/env node, etc.).chmod +x). Use ls -la to check.WARNING for missing shebang. Report WARNING for missing execute permission.| Severity | File/Path | Finding | Spec Reference |.../ that resolves safely is still flagged because it indicates a portability risk.Bad finding:
Missing skills directory.Missing: no severity, no path, no spec reference.
Good finding:
WARNING | skills/ | Directory absent. Plugin description implies skill-based functionality but no skills/ directory exists. | Official spec: optionalIncludes: severity, path, context explaining why it matters, spec reference.
.gitkeep, .DS_Store) -- these should be INFO, not errors..claude-plugin directory name -- CRITICAL on case-sensitive filesystems.debb558
Also appears in
since Aug 28, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.