AgentStack
SKILL verified MIT Self-run

Eval Regression

skill-reidemeister94-development-skills-eval-regression · by reidemeister94

Use when user says regression test, eval check, eval regression, test before commit, compare versions, check regressions, run evals, benchmark skill, or /eval-regression. Compares current (modified) version against last committed version to detect regressions, improvements, and behavioral changes.

No reviews yet
0 installs
13 views
0.0% view→install

Install

$ agentstack add skill-reidemeister94-development-skills-eval-regression

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Eval Regression? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Eval Regression Testing

Compare the current (working-tree) version of a plugin/skill against its last committed version to catch regressions before committing. Thin wrapper around the skill-creator plugin (its grader, aggregator, viewer) — locate it once:

SKILL_CREATOR_PATH=$(ls -d ~/.claude/plugins/cache/claude-plugins-official/skill-creator/*/skills/skill-creator 2>/dev/null | head -1)

1. Resolve target

Find the target from the argument: plugins// (plugin) or plugins/*// (skill), else cwd. Set PLUGIN_DIR, PLUGIN_NAME (from plugin.json), EVALS_PATH=/evals/evals.json.

2. Verify evals exist

If evals.json is missing/empty, offer to either show the schema (references/regression-schemas.md) for the user to write them, or generate 5-10 starter evals from the target's behavioral contracts (routing decisions, guard conditions, required tool sequences, anti-patterns) for review.

3. Detect changes

git diff --name-only HEAD -- /. No changes -> STOP. Otherwise flag which changed files are behavioral (SKILL.md, routing rules, workflow, patterns, agents) vs not (README, docs, formatting); if only non-behavioral, ask whether to proceed.

4. Setup workspace

Workspace: plugins/-workspace/iteration-/, sibling to the plugin dir, gitignored via *-workspace/. Iteration numbers are sequential and never reused — next N is (ls -d plugins/-workspace/iteration-* | sort -t- -k2 -n | tail -1) + 1, starting at 1.

Snapshot the committed version without touching the working tree:

SNAPSHOT_DIR="plugins/-workspace/iteration-/skill-snapshot"
mkdir -p "$SNAPSHOT_DIR"
git archive HEAD -- / | tar -x -C "$SNAPSHOT_DIR"

Write iteration-/iteration_metadata.json (schema in references/regression-schemas.md).

5. Run evals (parallel)

For each eval, spawn two executor subagents (Agent tool, run_in_background: true, all launched in one turn = 2 x N): one reading the skill from /, one from //. Each subagent must respond to eval.prompt as Claude Code with the skill loaded, then STOP after its first routing decision or action choice — do NOT implement (evals measure routing, not full execution). Save transcripts to iteration-/eval-/{new,old}_version/outputs/transcript.md and eval_metadata.json per eval dir.

6. Grade results

Grade every run in parallel using $SKILL_CREATOR_PATH/agents/grader.md. Per run, write grading.json (sibling to outputs/) using viewer-strict field names — text/passed/evidence, NOT name/met/details. Schema in references/regression-schemas.md.

7. Aggregate & analyze

Aggregate via skill-creator, naming the two configurations new_version/old_version (not with_skill/without_skill):

cd "$SKILL_CREATOR_PATH" && python -m scripts.aggregate_benchmark /iteration- --skill-name "$PLUGIN_NAME"

If it fails, write benchmark.json/benchmark.md manually per $SKILL_CREATOR_PATH/references/schemas.md.

Classify each eval by the old/new PASS-FAIL quadrant — only REGRESSION (old PASS, new FAIL) is CRITICAL (others: IMPROVEMENT, STABLEPASS, STABLEFAIL). Compare at the assertion level and write iteration-/regression-report.md (template in references/regression-schemas.md), mapping any regression to the changed file likely responsible.

8. Present

Report pass-rate delta and counts per status; name each regression with its suspect file (the user decides fix or accept). If iteration > 1, offer the comparison viewer:

python "$SKILL_CREATOR_PATH/eval-viewer/generate_review.py" /iteration- \
  --skill-name "$PLUGIN_NAME" --benchmark /iteration-/benchmark.json \
  --previous-workspace /iteration-

Rules

  • Read-only on the target; never commit (the user decides).
  • Same evals/assertions across both versions — only the skill version differs.

Edge cases

  • Compare against an arbitrary commit: --base in place of HEAD.
  • Eval references a missing file: skip it, note in report.
  • Subagent timeout: mark INCONCLUSIVE, not a regression.
  • Committed version unchanged from a prior iteration: reuse that iteration's old_version results.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.