model-bench
Benchmark and A/B-test multiple LLMs or systems-under-test on one evaluation dataset.
Skill by ianshank
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/ianshank-model-bench
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, frontend, testing, marketing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/model-bench
What's inside
- Skill name
model-bench- Description
- Benchmark and A/B-test multiple LLMs or systems-under-test on one evaluation dataset. Use this whenever the user wants to compare models side by side, rank candidates by a score, run a multi-model comparison, set up a persistent A/B eval campaign, decide whether a new model is significantly better than a baseline, or produce a comparative HTML/JSON benchmark report.
- License
- Apache-2.0
- Compatibility
- python>=3.10, langfuse-eval-harness
- Instructions
- 85 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (12)
- .gitignore
- SKILL.md
- evals.json · evals/
- campaign.yaml · evals/fixtures/
- compare.yaml · evals/fixtures/
- usage.md · references/
- ruff.toml
- quality-gate.sh · scripts/
- run.py · scripts/
- validate_skill.py · scripts/
- conftest.py · tests/
- test_run.py · tests/
SKILL.md (first lines)
# model-bench
Benchmark several models on the same dataset and report which is best — end to end —
by reusing the eval-harness multi-model comparison (F-024) and A/B eval campaign (F-025)
features. This skill **orchestrates, it does not re-implement**: its runner forwards to the
already-tested `eval-harness compare` and `eval-harness campaign` CLI subcommands, which in
turn reuse `run_comparison`, `record_run`, and `analyze`. With the real model-backed target
(F-027) wired into your config, the same commands benchmark live models; the bundled fixtures
use deterministic `echo` targets so the skill's own evals run offline.
Two modes:
* **compare** — run one dataset/scorers against ≥2 named models and rank them, with per-metric
deltas vs a baseline and a self-contained comparative report. One-shot.
* **campaign** — a persistent A/B test of two arms whose per-arm pass/total counts accumulate
across runs in an append-only store; `analyze` decides via Wilson intervals and never claims
significance below its power floor.
## 1. Preconditions (input contract)
Confirm before executing. If any fails, stop and report the exact missing requirement.
* `langfuse-eval-harness` is importable (`pip install -e .` from the repo root; add the
provider extra — `[openai]`, `[bedrock]`, `[anthropic]` — only when benchmarking real models).
* An eval config YAML exists with the relevant block:
* **compare**: a `comparison` block with ≥2 uniquely-named models (each a `{type, params}`
target) and a shared `dataset` + `scorers`.
* **campaign**: an `ab_campaign` block with two distinctly-named arms, the `score` to test,
and a `min_sample` power floor.
* For real models, the provider credentials are present in the environment (never in the
config — use `${VAR}` interpolation). The bundled fixtures need no credentials.
## 2. Procedure
### compare
```
python scripts/run.py compare --config <eval.yaml> [--offline] [--html OUT.html] [--json OUT.json]
```
Prints the ranking (`ranked by <score> (<metric>): A > B > C`). `--offline` uses an in-memory
Langfuse client; `--html`/`--json` write the comparative report.
### campaign
```
# Record one run (repeat over time to accumulate counts):
python scripts/run.py campaign --config <eval.yaml> --store <store.jsonl> --mode record [--offline]
# Analyze the accumulated store:
python scripts/run.py campaign --config <eval.yaml> --store <store.jsonl> --mode analyze [--offline] [--json OUT.json]
```
`record` appends per-arm pass/total counts to the JSONL store; `analyze` accumulates them and
prints a decision (`a_better` / `b_better` / `no_difference` / `cant_tell` below power).
## 3. Output contract
* `compare` exits 0 and prints the ranking; with `--json`/`--html` it writes a deterministic,
self-contained report (no external assets).
* `campaign --mode record` exits 0 and appends one record per arm; `--mode analyze` exits 0 and
prints the decision and delta.
* A config missing the required block exits 2 with a clear message; a missing harness install
exits 1.
## 4. No hard-coded values
Models, endpoints, datasets, the ranking score/metric, and campaign power floor all come from
the config; credentials come from the environment via `${VAR}` interpolation. Nothing about a
specific model or endpoint is baked into this skill.
## 5. Validation
```
python scripts/validate_skill.py --skill . --tier structural,behavioral
```
The behavioral evals drive `compare` and a `record` → `analyze` campaign over the bundled
`echo`-target fixtures — fully offline and deterministic.
## 6. References
* `references/usage.md` — config block shapes and worked examples.From ianshank/Agents, Apache-2.0.
More from ianshank/Agents
- 0.552score
eval-corpus-forge
ianshank
Build, validate, and package reusable evaluation datasets for agent and LLM systems from prompts, traces, tool-call logs, metadata, and expected outcomes.
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
openspec-implementation-review
ianshank
Reviews a shipped OpenSpec change's implementation against its own proposal/design/tasks/spec, producing a dated, two-pass openspec/changes/<id>/review.md…
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
architecture-drift-guard
ianshank
Detect and block architecture drift in CI by comparing a codebase's actual Python import graph against a declared C4 component model.
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
dataset-lint
ianshank
Validate an existing evaluation dataset (JSONL/JSON/CSV) for structural correctness, duplicate IDs, missing required fields, and encoding issues — without…
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
hierarchical-recursive-brainstorm
ianshank
Decomposes a topic into a controlled hierarchy, recursively expands leaves, prunes the bottom quartile, and synthesizes upward into a self-explanatory…
SkillBFreshness: B★ 1Claude Code +9 - 0.549score
openspec-quality-plan
ianshank
Generates a complete OpenSpec change package containing proposal, design, and task specs.
SkillBFreshness: B★ 1Claude Code +9 - 0.549score
openspec-peer-review
ianshank
Emits an objective Peer Review Findings section and rewrites an OpenSpec package to satisfy quality standards.
SkillBFreshness: B★ 1Claude Code +9 - 0.549score
openai-judge
ianshank
LLM-as-a-judge evaluations over OpenAI-compatible APIs (including NVIDIA Nemotron & LM Studio).
SkillBFreshness: B★ 1Claude Code +9 - 0.548score
deploy
ianshank
Generate a safety-railed deployment shell script (scripts/deploy.sh) with bash strict mode, a --dry-run mode, a confirmation gate before irreversible steps…
SkillBFreshness: B★ 1Claude Code +9 - 0.545score
corpus-guardian
ianshank
Manage, verify, and synchronize the four frozen synthetic evaluation corpora (RCA, Requirements, TestGen, Answer Quality).
SkillBFreshness: B★ 1Claude Code +9 - 0.545score
e2e-matrix-sentinel
ianshank
Validate cross-platform end-to-end matrix coverage, verify POSIX and Windows driver parity, and enforce offline fixture restamping invariants.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
merge-gate-auditor
ianshank
Sample unlabelled PR records from merge-gate-data, prepare structured Audit Verdict Cards, and stage human verdicts.
SkillBFreshness: B★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 113
- Last commit (this folder)
- Sep 7, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/ianshank/Agents
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from ianshank
- 0.552score
hierarchical-recursive-brainstorm
ianshank
Decomposes a topic into a controlled hierarchy, recursively expands leaves, prunes the bottom quartile, and synthesizes upward into a self-explanatory…
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
openspec-implementation-review
ianshank
Reviews a shipped OpenSpec change's implementation against its own proposal/design/tasks/spec, producing a dated, two-pass openspec/changes/<id>/review.md…
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
dataset-lint
ianshank
Validate an existing evaluation dataset (JSONL/JSON/CSV) for structural correctness, duplicate IDs, missing required fields, and encoding issues — without…
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
eval-corpus-forge
ianshank
Build, validate, and package reusable evaluation datasets for agent and LLM systems from prompts, traces, tool-call logs, metadata, and expected outcomes.
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
architecture-drift-guard
ianshank
Detect and block architecture drift in CI by comparing a codebase's actual Python import graph against a declared C4 component model.
SkillBFreshness: B★ 1Claude Code +9 - 0.549score
openai-judge
ianshank
LLM-as-a-judge evaluations over OpenAI-compatible APIs (including NVIDIA Nemotron & LM Studio).
SkillBFreshness: B★ 1Claude Code +9
Cite this page
model-bench skill. Agent Mart. https://agentmart.dev/skills/ianshank-model-bench (last updated 2026-10-24)