This skill should be used when the user asks to "validate a plugin", "optimize plugin", "check plugin quality", "review plugin structure", "find plugin issues", "check best practices", "analyze...
Validates Claude Code plugins against architectural standards. This file is a navigation guide; detailed content lives in references/.
Run validation on a plugin:
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/validate-plugin.py <plugin-path>
For specific checks only:
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/validate-plugin.py <plugin-path> --check=manifest,frontmatter
| Component | When to Use | Key Requirements |
|---|---|---|
| Instruction-type Skills | User-invoked workflows, linear process | Imperative voice, phase-based, declared in commands; name with use-<action> prefix (e.g., use-kicad-cli) |
| Knowledge-type Skills | Reference knowledge for agents | Declarative voice, topic-based, declared in skills; name with using-<topic> prefix (e.g., using-git-worktrees) |
| Agents | Isolated, specialized decision-making | Restricted tools, 2-4 <example> blocks, isolated context |
| MCP Servers | External tool/data integration | stdio/http/sse transport, ${CLAUDE_PLUGIN_ROOT} paths |
| LSP Servers | IDE features (go to definition) | Language server binary, extension mapping |
| Hooks | Event-driven automation | Lifecycle events, command/http/mcp_tool/prompt/agent types |
| Monitors | Long-running watchers (logs, deploys) | name+command+description per entry; v2.1.105+ |
| Themes | Bundled color presets | JSON with name, base, overrides |
| Output Styles | Adjust response formatting | Markdown with name + description frontmatter |
See ./references/component-model.md for detailed selection criteria and ./references/components/ for implementation guides.
Three-tier token structure ensures efficient context usage:
| Level | Content | Token Budget | Loading |
|---|---|---|---|
| 1 | Metadata (name + description) | ~100 tokens | Always (at startup) |
| 2 | SKILL.md body | Under 5k tokens | When skill triggered |
| 3 | References/ files | Effectively unlimited | On-demand via bash |
Implementation Pattern:
See ./references/component-model.md for complete token budget guidelines.
Five sequential checks cover all plugin quality dimensions:
Run validation with -v flag for verbose output showing all passing checks.
See ./references/validation-checklist.md for complete criteria.
Plugin documentation uses RFC 2119 requirement levels:
See ./references/rfc-2119.md for complete RFC 2119 specification.
| Tool | Style | Example |
|---|---|---|
| Read, Write, Edit, Glob, Grep | Implicit | "Find files matching..." |
| Bash | Implicit | "Run git status" |
| Task | Implicit | "Launch plugin-name:agent-name agent" |
| Skill | Explicit | "Load plugin-name:skill-name skill using the Skill tool" |
| TaskCreate | Explicit | "Use TaskCreate tool to track progress" |
| AskUserQuestion | Explicit | "Use AskUserQuestion tool to [action]" |
| MCP Tools | Implicit | "Query the database for user records" |
Qualified names: MUST use plugin-name:component-name format for plugin components.
allowed-tools: NEVER use bare Bash - always use filters like Bash(git:*).
Inline Bash: Use inline syntax (exclamation + backtick + command + backtick) for dynamic context.
MCP Tool Invocation: Use natural language to describe intent ā Claude automatically identifies the appropriate MCP tool. Never specify exact MCP tool names like mcp__server__tool in skill content.
See ./references/tool-invocations.md for complete patterns and anti-patterns.
See ./references/mcp-patterns.md for MCP-specific invocation patterns.
Required fields:
name: Max 64 chars, lowercase letters/numbers/hyphens only. Naming convention by type: instruction-type skills use a use-<action> prefix (e.g., use-kicad-cli); knowledge-type skills use a using-<topic> prefix (e.g., using-git-worktrees).description: Max 1024 chars. MUST use third-person voice with specific trigger phrases.Description Best Practices:
| Requirement | Description |
|---|---|
| Person | Third-person only ("This skill should be used when...") |
| Structure | [What it does]. Use when [scenario 1], [scenario 2], or [user phrases]. |
| Purpose | Skill discovery - Claude uses this to select from 100+ skills |
| Trigger phrases | Include specific user phrases like "validate plugin", "check frontmatter" |
Additional fields are supported but affect progressive disclosure alignment.
See ./references/components/skills.md for complete frontmatter specification.
Required fields (per upstream spec):
name: 3-50 chars, kebab-casedescription: trigger conditions plus 2-4 <example> blocksOptional fields: model, color, effort, maxTurns, tools, disallowedTools, skills, memory, background, isolation (only "worktree" is valid).
Forbidden fields in plugin agents (security): hooks, mcpServers, permissionMode.
Field order: name ā description (a | block scalar containing trigger conditions and the <example> blocks) ā other YAML fields ā closing ---. Bare <example> blocks outside the description break YAML parsing.
See ./references/components/agents.md for complete agent design guidelines including CO-STAR framework.
Tasks with 3+ distinct steps, multi-file work, or sequential dependencies warrant TaskCreate. Single-file edits and 1-2 step operations do not.
Core Requirements:
in_progress BEFORE starting, completed AFTER finishingcompleted when FULLY doneSee ./references/task-management.md for complete patterns and examples.
MCP servers are configured in .mcp.json at plugin root or inline in plugin.json under mcpServers. Three transport types are supported: stdio (local CLI tools), http (remote APIs, most widely supported), and sse (real-time streaming).
NEVER hardcode secrets ā always use ${ENV_VAR} syntax.
See ./references/mcp-patterns.md for complete MCP integration patterns.
See ./references/components/mcp-servers.md for component configuration details.
Hook events cover the full session lifecycle (28+ events including PreToolUse, PostToolUse, PostToolUseFailure, PostToolBatch, PermissionRequest, PermissionDenied, UserPromptSubmit, UserPromptExpansion, Setup, Notification, Stop/StopFailure, SubagentStart/SubagentStop, TaskCreated/TaskCompleted, TeammateIdle, InstructionsLoaded, ConfigChange, CwdChanged, FileChanged, WorktreeCreate/WorktreeRemove, PreCompact/PostCompact, Elicitation/ElicitationResult, SessionStart/SessionEnd). Five hook types: command, http, mcp_tool, prompt, agent.
See ./references/components/hooks.md for the full event table and AI-native structured output patterns.
Subagents are isolated, single-direction sub-processes returning results to the caller. Agent Teams are multiple independent sessions sharing a task list with direct peer-to-peer communication ā suited for parallel investigation, multi-module features, and competing hypotheses.
| Subagents | Agent Teams | |
|---|---|---|
| Context | Returns to caller | Fully independent |
| Communication | To main agent only | Direct peer-to-peer |
| Token cost | Lower (summarized) | Higher (full instances) |
Agent Teams are experimental. Enable with export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1.
See ./references/agent-teams.md for complete guide and ./references/parallel-execution.md for parallel coordination patterns.
Standard Layout:
plugin-name/
āāā .claude-plugin/plugin.json # Manifest (declare components here)
āāā skills/ # Agent Skills (RECOMMENDED)
ā āāā skill-name/
ā āāā SKILL.md
ā āāā references/
āāā commands/ # Skills as flat .md files (legacy)
āāā agents/ # Subagent definitions
āāā output-styles/ # Output style markdown
āāā themes/ # Color theme JSON
āāā monitors/monitors.json # Background monitor configs
āāā hooks/hooks.json # Hook configuration
āāā bin/ # Executables added to Bash PATH
āāā settings.json # Plugin default settings
āāā .mcp.json # MCP server definitions
āāā .lsp.json # LSP server configurations
āāā scripts/ # Executable scripts
Critical Rules:
.claude-plugin/${CLAUDE_PLUGIN_ROOT} for paths./See ./references/directory-structure.md for complete layout guidelines.
./references/validation-checklist.md - Complete quality checklist./references/rfc-2119.md - Requirement levels (MUST/SHOULD/MAY)./references/component-model.md - Component types, selection criteria, token budgets./references/components/skills.md - Skill structure, frontmatter, progressive disclosure./references/components/agents.md - Agent design, CO-STAR framework, forbidden fields./references/components/commands.md - Command frontmatter, dynamic context./references/components/hooks.md - Hook events, types, AI-native patterns, templates./references/components/mcp-servers.md - MCP configuration, stdio/http/sse./references/components/lsp-servers.md - LSP setup, binary requirements./references/components/monitors.md - Background monitor configuration./references/components/themes.md - Color theme JSON structure./references/components/output-styles.md - Output style frontmatter./references/directory-structure.md - Plugin layout, naming conventions./references/manifest-schema.md - plugin.json schema, required fields./references/mcp-patterns.md - MCP transport types, security best practices./references/tool-invocations.md - Tool usage patterns and anti-patterns./references/tool-design-philosophy.md - Principles for designing tools that work with Claude's strengths./references/task-management.md - TaskCreate patterns, dual-form naming./references/cli-commands.md - CLI commands for plugin management./references/agent-teams.md - Parallelizable tasks, multi-perspective analysis./references/parallel-execution.md - Parallel agent coordination patterns./references/debugging.md - Common issues, error messages, troubleshooting