Skip to main content
plugin

agent-regression-evals — Claude Code plugin: catch agent regressions

Compares agent runs before and after a change and decides whether the merge is safe. Useful when one trial can't separate a regression from noise.

Install into Claude Code · Plugin marketplace All methods and platforms ↓
/plugin marketplace add alirezarezvani/claude-skills
/plugin install agent-regression-evals@claude-code-skills
Open on GitHub

What agent-regression-evals does

Agents are non-deterministic. A single trial per case won't tell you whether a drop is real, and a correct final answer can hide a tool call that should never have fired. This plugin takes repeated-trial results and turns them into a merge decision with the statistics attached.

Three scripts, all on the Python standard library. trajectory_checker.py grades tool-call paths in strict, unordered, subset and superset modes, matches arguments, and blocks forbidden tools in every mode. flake_detector.py sorts cases into stable and flaky from repeated trials and reports pass@k and pass^k with Wilson intervals. regression_gate.py averages trials within a case, compares cases with a t-based CI and an exact one-sided McNemar test, and returns BLOCK on a significant drop, a critical-case regression, a dropped case, or a quarantine entry missing an owner and expiry. Also included: the cs-eval-gatekeeper agent, /cs-agent-evals and /cs-eval-gate commands, three references, and a CI job example.

You can run the scripts directly; each supports --help, --sample and --output json. One thing to plan for: too few trials per case exits with code 4, so the gate won't guess from a handful of runs. Quarantine expires here — an entry without an owner and a date walks back into the gate on its own. Path checks default to superset, because strict path matching kills valid alternatives.

What it helps with

  • tell a real agent regression from random spread
  • catch an extra or forbidden tool call hidden behind a correct answer
  • find cases that flip between identical trials
  • block a merge on a significant pass-rate drop
  • stop someone deleting a failing case to get a green CI

Example prompts for the agent

  • /cs-agent-evals baseline.jsonl candidate.jsonl cases.json
  • /cs-eval-gate baseline.jsonl candidate.jsonl
  • run python scripts/flake_detector.py --sample and list the flaky cases

How to install agent-regression-evals

Plugin marketplace

/plugin marketplace add alirezarezvani/claude-skills
/plugin install agent-regression-evals@claude-code-skills

Step by step, with commands for each platform: Claude Code plugins: marketplaces, installing, and building your own

Questions about agent-regression-evals

How do I install agent-regression-evals in Claude?

Add the marketplace first: /plugin marketplace add alirezarezvani/claude-skills. Then install the plugin: /plugin install agent-regression-evals@claude-code-skills.

What does agent-regression-evals do?

It compares a baseline run against a candidate run and decides whether the candidate is measurably worse. Three scripts cover tool-call paths, case stability, and the significance of a drop.

How is it different from prompt-governance and self-eval?

prompt-governance versions and registers prompts, and self-eval grades one session's work. This plugin gates a specific change to an agent, prompt, model or tool.

Source text

agent-regression-evals · MIT
# agent-regression-evals

> "The pass rate went from 82% to 79%" is not a finding until you know whether
> three points is outside the noise.

Agents are non-deterministic. One trial per case cannot tell a regression from
a coin flip, and a correct final answer can hide a tool call that should never
have happened. This plugin turns repeated-trial eval results into a merge
decision with the statistics behind it.

## Install

```bash
/plugin marketplace add alirezarezvani/claude-skills
/plugin install agent-regression-evals
```

## Use

```bash
/cs-agent-evals baseline.jsonl candidate.jsonl cases.json   # full pass
/cs-eval-gate baseline.jsonl candidate.jsonl                # just the gate
```

Or run the scripts directly. Each has `--help`, `--sample` and `--output json`:

```bash
cd skills/agent-regression-evals
python scripts/trajectory_checker.py --sample
python scripts/flake_detector.py --sample
python scripts/regression_gate.py --sample
```

## The three scripts

| Script | Question | Exit codes |
|---|---|---|
| `trajectory_checker.py` | Did the agent take an acceptable path? strict / unordered / subset / superset, argument matching, **forbidden tools block in every mode** | 0 · 2 deviations · 3 bad input · **4 forbidden tool** |
| `flake_detector.py` | Which cases are stable and which flip between identical trials? pass@k, **pass^k**, Wilson intervals, quarantine stubs | 0 · 2 flaky · 3 · **4 too few trials** |
| `regression_gate.py` | Is the candidate measurably worse? Per-case averaging, paired t-based CI, exact one-sided McNemar, critical cases, dropped cases, quarantine validity, cost | 0 PASS · 2 WARN · 3 · **4 BLOCK** |

## Design decisions

- **pass^k, not just pass@k.** A user meets every trial, not the best one. tau-bench showed a model at 61%
  pass^1 falling below 25% at pass^8.
- **Average within a case, compare across cases.** Treating 5 trials x 40 cases as 200 independent samples
  overstates confidence (Miller 2024).
- **Missing cases block.** Deleting a failing case is the cheapest way to "fix" a regression.
- **Quarantine expires.** Every entry needs an owner and a date; expired entries re-enter the gate by themselves.
- **Outcome first, path where it matters.** Trajectory checks default to `superset`, following Anthropic's
  warning that strict path checks fail valid alternatives.

See `skills/agent-regression-evals/references/` for every formula and its source.

## Distinct from

- `prompt-governance` — versions and registers prompts; this gates a change.
- `self-eval` — grades one session's work.
- `agenthub` eval — ranks parallel agents inside one session.

## License

MIT

© Alireza Rezvani · MIT · alirezarezvani/claude-skills

Similar plugins

All plugins for Testing and QA →

From the same set394

The whole set →

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor