Claude Code Adds Plugin Evals for Regression Testing and No-Plugin Baselines
Claude Code now includes `claude plugin eval`, a testing workflow for plugin and skill authors. The command can create cases and graders, run a plugin in isolated non-interactive sessions, compare results with a no-plugin baseline, generate an HTML report, and support CI gates for plugin changes. Evals require Claude Code v2.1.269 or later and consume model usage.
Claude Code now has a first-party testing workflow for plugins and skills: claude plugin eval. The new command lets authors create test cases, run a plugin against realistic prompts, score the results, and compare the outcome with a no-plugin baseline. (ClaudeDevs on X; Claude Code plugin evals documentation)
The feature targets a practical problem with extensible agents: a plugin can appear useful while Claude would have produced the same result without it, or a model update can quietly change whether a skill fires. Evals make that contribution measurable and give teams a repeatable way to catch regressions before they ship. (Claude Code plugin evals documentation)
Key Takeaways
claude plugin eval initcan draft a suite of prompts and graders from a plugin.claude plugin eval .runs the suite in fresh, isolated non-interactive sessions.- A no-plugin arm is included by default, so teams can measure what the plugin actually contributes.
- Reports show scores, grader verdicts, runs, and estimated cost, with an HTML report written locally and optionally published.
- Plugin authors can gate changes in CI, according to Anthropic's documentation.
- The feature requires Claude Code v2.1.269 or later, and model calls count against plan usage or an API bill.
What an Eval Suite Measures
An eval case is a realistic prompt that a user might send to Claude when the plugin should help. Each case can have one or more graders: a pass/fail check over the reply, a tool call, a created file, a regular expression, or a rubric judged by another model. (Claude Code plugin evals documentation)
The workflow is designed to test behavior rather than only package validity. claude plugin validate checks plugin files for syntax and schema errors; claude plugin eval asks whether the installed plugin reliably steers Claude toward the desired outcome. (Claude Code plugin evals documentation)
Start with plugin eval init
From a plugin directory, an author can run:
claude plugin eval init
Claude Code reads the plugin and asks what a good result looks like. It proposes prompts that should and should not trigger the plugin, designs graders, pilots the suite, and writes cases under the plugin's evals/ directory. Authors can also create a bare case and write its prompt and graders manually. (Claude Code plugin evals documentation)
The documented requirements are:
- Claude Code v2.1.269 or later.
- A plugin directory with
plugin.jsonor.claude-plugin/plugin.json, or a skills-directory plugin. - The same authentication and model provider used by normal Claude Code sessions.
Because initialization asks Claude to inspect the plugin and propose tests, init is itself a model call. Anthropic says eval runs, judge-scored graders, and initialization count against the plan's usage limits or the user's API bill. (Claude Code plugin evals documentation)
Run with and without the Plugin
Running the suite from the plugin root is straightforward:
claude plugin eval .
For each case, Claude Code starts a fresh isolated non-interactive session with the plugin loaded, sends the prompt, and lets the agent work until it finishes or reaches the case's turn or time limit. Graders then inspect the final reply, transcript, or files the agent created. (Claude Code plugin evals documentation)
The default comparison is the important part. Each case is also run with no plugin loaded, producing a WITH score and a W/OUT score. Their difference, Delta, is the plugin's measured contribution. A high score with the plugin is less informative when Claude achieves the same result without it. (Claude Code plugin evals documentation)
One case runs three times by default because a single agent run is noisy. The no-plugin arm means the full default suite can use six agent runs for one case, before any judge calls. Authors can use --runs 1 --ablation none for a cheaper, single-arm iteration, then return to the default three-run comparison before trusting a change. (Claude Code plugin evals documentation)
Read the Report
After a run, Claude Code prints a summary with the case score, plugin and baseline scores, difference, number of runs, estimated cost, and notes about failing graders. It writes a detailed HTML report under evals/results/; accounts that support report publishing can also receive a hosted report, while --no-publish keeps the report local. (Claude Code plugin evals documentation)
The report is useful for more than a pass percentage. It can show which grader failed, the model judge's explanation, the transcript excerpt it evaluated, and whether the plugin's skill was invoked. That makes the next edit more concrete: adjust a skill description, prompt, case, or grader, then rerun the comparison.
CI and Trust Boundaries
Anthropic documents plugin evals as a way for teams to gate plugin changes in CI. The case files are plain files under evals/, and teams can keep result artifacts out of version control while running the suite as part of a change check. (Claude Code plugin evals documentation)
The command is not risk-free. Eval sessions run with the plugin loaded, and the documentation warns that plugin hooks and MCP servers run as the user. Authors should evaluate only plugins they trust. Model-based graders also consume usage and can vary between runs, so a small pilot should not be treated as a definitive quality measurement. (ClaudeDevs on X; Claude Code plugin evals documentation)
What This Changes for Plugin Authors
Before plugin evals, teams could validate the package and manually inspect a few sessions, but that did not answer two operational questions: does the plugin improve the result, and does it keep improving after a model or plugin change? The WITH/W/OUT comparison gives authors a direct baseline, while case-level graders preserve the details hidden by one aggregate score. (Claude Code plugin evals documentation)
The most useful first suite is likely small: a handful of prompts that should trigger the plugin, a few prompts that should not, and graders for both the result and the expected tool or skill behavior. Expand it when a real regression appears rather than treating a large synthetic benchmark as proof of production reliability.
Bottom Line
claude plugin eval turns Claude Code plugin quality from an informal demo into a repeatable test loop. Authors can generate cases, run isolated sessions, compare the plugin against a no-plugin baseline, inspect an HTML report, and place the suite in CI. The trade-off is explicit: each run uses model calls, and teams must treat hooks and MCP servers as trusted code. (Claude Code plugin evals documentation)
Sources
- ClaudeDevs on X, “New in Claude Code: claude plugin eval,” September 11, 2026: https://x.com/ClaudeDevs/status/2098500999656923145
- ClaudeDevs on X, “Evals call the model...,” September 11, 2026: https://x.com/ClaudeDevs/status/2098501003666702344
- Anthropic, Claude Code Docs, “Test plugins with evals”: https://code.claude.com/docs/en/plugin-evals
Read next
Keep building the workspace playbookClaude Code 2.1.142: `claude agents` Gains Session Flags, Fast Mode Defaults to Opus 4.7, MCP Tool Timeout Honored
Claude Code 2.1.142 (May 14, 2026) added eight dispatch flags to `claude agents`, moved fast mode's default from Opus 4.6 to Opus 4.7, and made `MCP_TOOL_TIMEOUT` raise the 60-second per-request cap on remote MCP servers. As of September 2026 the flags and the timeout fix stand, but fast mode has left Opus 4.7: the default moved to Opus 4.8 in 2.1.154 and to Opus 5 in 2.1.219, and the 4.6 override variable is a no-op.
Claude Code artifacts can now call MCP connectors for live, viewer-specific data
Claude Code artifacts can call MCP connectors each time someone views them, so a published page shows current data rather than a session snapshot. Available on Pro, Max, Team, and Enterprise plans, requiring Claude Code v2.1.209 or later. Connector-backed artifacts cannot be shared to a public link on any plan.
Claude Code Ships Screen Reader Mode: Plain-Text TUI for VoiceOver and NVDA
Claude Code now has an opt-in screen reader mode that replaces boxes, spinners, and in-place redraws with labeled linear text that VoiceOver and NVDA read in order. Turn it on with the --ax-screen-reader flag, the CLAUDE_AX_SCREEN_READER env var, or the axScreenReader setting (v2.1.181+). Menus become numbered lists, a terminal bell signals when Claude needs you, and separate settings cover magnifiers, reduced motion, and colorblind themes.
Frequently Asked Questions
What is `claude plugin eval`?
It is a Claude Code command that runs a plugin against test cases and graders, scores the results, and can compare the plugin with a no-plugin baseline.
Who is plugin eval for?
Anthropic documents it for plugin and skill authors who want to measure whether a plugin steers Claude to the right outcome and catch regressions when the plugin or a model changes.
What version of Claude Code is required?
The plugin-evals documentation requires Claude Code v2.1.269 or later.
Do evals use model credits or API budget?
Yes. Eval runs, judge-scored graders, and `claude plugin eval init` make model calls that count against the plan's usage limits or the user's API bill.