Skip to content

Add an eval that measures the impact of loadout - #6

Merged
gabe4coding merged 2 commits into
mainfrom
claude/loadout-impact-eval-dfe58b
Oct 12, 2026
Merged

gabe4coding merged 2 commits into
mainfrom
claude/loadout-impact-eval-dfe58b

Conversation

@gabe4coding

Copy link
Copy Markdown
Owner

Summary

This PR adds an eval that measures the cost, speed and quality of Claude Code sessions with and without loadout. It also measures the effort and model switches.

  • evals/impact.mjs runs real headless sessions in five arms: baseline, loadout, effort, model and all. It writes results.jsonl and report.md. The report compares each arm with the baseline per task (geometric mean over the tasks).
  • evals/fixture.mjs gives a fixed setup: 12 fake MCP servers with 80 tools and 40 project skills. --env real uses your own setup.
  • evals/tasks.mjs has 8 tasks with deterministic checks (server calls, files, answers).
  • The plugin now writes the token use of each classifier call to its trace file. The session cost does not include these calls. The version is now 0.6.1.
  • tests/session.mjs gets new options for the eval. It answers permission asks and plugin questions through the SDK control channel.
  • The docs are in docs/development.mdx ("Impact eval").

First result

Sonnet, effort high, fixed setup, 2 runs, 80 sessions, $2.58, 4.5 minutes. All checks pass.

Arm Cost vs baseline Time vs baseline
loadout −43% +44%
effort −47% +54%
model −94% +47%
all −94% +46%

The first prompt goes from 40452 to approximately 33k tokens.

Verification

  • /simplify and /code-review: the review found 4 problems. 2 are fixed. The commit message gives the reasons for the 2 that are not fixed.
  • claude plugin validate ., claude plugin test . (49 pass), node tests/docs.check.mjs: all pass.
  • /verify: the smoke test passes. A driven session shows one classifier trace line for each Haiku call, with the model and the token use.

🤖 Generated with Claude Code

gabrypavanello and others added 2 commits October 12, 2026 17:22
The eval runs real headless sessions with and without the plugin. It
compares cost, time and quality for five arms: baseline, loadout,
effort, model and all.

- evals/impact.mjs runs the sessions and writes results.jsonl and
  report.md. The report compares each arm with the baseline per task.
- evals/fixture.mjs has a fixed setup: 12 fake MCP servers with 80
  tools and 40 project skills. Use --env real for your own setup.
- evals/tasks.mjs has 8 tasks with deterministic checks.
- The plugin writes the token use of each classifier call to its trace
  file, because the session cost does not include these calls.
- tests/session.mjs gets options for the eval. It can answer the
  permission asks and the questions of the plugin through the control
  channel of the SDK.

Code review: two findings are not fixed.
- installedLoadout reads only the user settings. A copy from managed
  settings cannot be turned off by the eval.
- Some answer checks are loose. The prompts ask for the number only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-eval-dfe58b

# Conflicts:
#	.claude-plugin/plugin.json
@gabe4coding
gabe4coding merged commit 7fb6607 into main Oct 12, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants