Evaluate Plugin
Use this skill when the target is a plugin root with .claude-plugin/plugin.json. If the target is a single SKILL.md directory, hand off to ../evaluate-skill/SKILL.md instead.
The runnable commands below invoke the shipped script through the plugin root, which works in any checkout: node "${CLAUDE_PLUGIN_ROOT}/scripts/cc-plugin-eval.js" <command> <args>. Inline mentions of cc-plugin-eval <command> are shorthand for that same invocation; the bare cc-plugin-eval alias only exists if you ran npm link in the plugin directory.
When To Use
- The path passed by the user contains
.claude-plugin/plugin.json. - The user's question is about the bundle as a whole, not a single skill.
- The user says "audit", "validate", "lint", "inspect", or "benchmark this plugin".
If the path is a SKILL.md or a directory holding one, route to ../evaluate-skill/SKILL.md. If the path contains neither, treat it as a generic directory and run cc-plugin-eval analyze <path> to surface the file-level signals.
Workflow
- Treat "Evaluate this plugin." as the default entrypoint.
- If the request comes in as natural chat language, run
cc-plugin-eval start <plugin-root> --request "<user request>" --format markdownfirst so the user sees the routed local path. - Run
cc-plugin-eval analyze <plugin-root> --format markdown. - Read
Fix Firstbefore drilling into manifest findings, hook findings, MCP/LSP findings, monitor/agent findings, marketplace findings, then nested skill findings. - If the plugin contains multiple skills, summarize the strongest and weakest ones explicitly.
- If the user wants a CI-friendly pass/fail check, run
cc-plugin-eval validate <plugin-root> --strict. Exit code 2 means at least one warn or fail finding fired. - If the user wants component-only output (only hooks, only mcp, etc.), run
cc-plugin-eval inspect <plugin-root> --component <name>. - If the user wants measured usage, switch to "Help me benchmark this plugin." and use the starter benchmark flow.
- If the user wants trend data, compare two JSON outputs with
cc-plugin-eval compare before.json after.json.
Plugin-Specific Priorities
.claude-plugin/plugin.jsonvalidity: missingname(CC101), invalidname(CC102), invalid SemVer (CC103), env-var leak in metadata (CC110), files in.claude-plugin/other thanplugin.json(CC120), path-shape violations (CC130), missing path on disk (CC131).- Hooks: invalid event name (CC302), case-wrong event (CC303), invalid hook type (CC304), missing referenced script (CC305),
${CLAUDE_PLUGIN_ROOT}not used and not a system bin (CC306),mcp_toolreferencing an undeclared server (CC310). - MCP servers: missing
command(CC402), missing referenced script (CC403), relativecommandwithout${CLAUDE_PLUGIN_ROOT}(CC404), suspicious secret inenv(CC409). - LSP servers: missing
command(CC502), missingextensionToLanguage(CC503), extension without leading dot (CC504),restartOnCrashwithoutmaxRestarts(CC508). - Monitors: duplicate
name(CC603), invalidwhensyntax (CC604),on-skill-invoke:<name>referencing missing skill (CC605),${user_config.X}for missing X (CC608). - Agents: forbidden
hooks/mcpServers/permissionModein plugin-shipped agents (CC703), invalideffort(CC705), invalidisolation(CC707), tool/disallowedTools overlap (CC709). - Marketplace alignment: plugin missing from
plugins[](CC803), version drift (CC804), source mismatch (CC805). - userConfig: invalid identifier (CC910), missing required fields (CC911), suspicious secret name without
sensitive: true(CC915), channelservernot inmcpServers(CC916). - Path traversal across all components (CC900).
- Skill aggregate quality: delegated to
../evaluate-skill/SKILL.md.
Chat Requests To Recognize
Evaluate this plugin.Audit this plugin.Why did this score that way?What should I fix first?Validate the manifest.Lint this plugin.Inspect the hooks.Inspect the mcp servers.Audit the components.Help me benchmark this plugin.What should I run next?
Commands
node "${CLAUDE_PLUGIN_ROOT}/scripts/cc-plugin-eval.js" start <plugin-root> --request "Evaluate this plugin." --format markdown
node "${CLAUDE_PLUGIN_ROOT}/scripts/cc-plugin-eval.js" analyze <plugin-root> --format markdown
node "${CLAUDE_PLUGIN_ROOT}/scripts/cc-plugin-eval.js" validate <plugin-root> --strict
node "${CLAUDE_PLUGIN_ROOT}/scripts/cc-plugin-eval.js" inspect <plugin-root> --component all --format markdown
node "${CLAUDE_PLUGIN_ROOT}/scripts/cc-plugin-eval.js" inspect <plugin-root> --component hooks --format markdown
node "${CLAUDE_PLUGIN_ROOT}/scripts/cc-plugin-eval.js" inspect <plugin-root> --component mcp --format markdown
node "${CLAUDE_PLUGIN_ROOT}/scripts/cc-plugin-eval.js" inspect <plugin-root> --component agents --format markdown
node "${CLAUDE_PLUGIN_ROOT}/scripts/cc-plugin-eval.js" start <plugin-root> --request "What should I run next?" --format markdown
node "${CLAUDE_PLUGIN_ROOT}/scripts/cc-plugin-eval.js" compare before.json after.json
node "${CLAUDE_PLUGIN_ROOT}/scripts/cc-plugin-eval.js" report result.json --format html --output ./cc-plugin-eval-report.html
node "${CLAUDE_PLUGIN_ROOT}/scripts/cc-plugin-eval.js" init-benchmark <plugin-root>
node "${CLAUDE_PLUGIN_ROOT}/scripts/cc-plugin-eval.js" benchmark <plugin-root>
Reference
../../references/chat-first-workflows.md../../references/component-validators.md