✅ Open source (MIT) · ✅ Model-agnostic — runs in any agent
Score an agent’s work session by session, and watch the trend — so a change to the model, the frame, or the skills shows up as better or worse, not just “feels different.”
A small, agent-agnostic Whetstone skill: turn a finished agent session into a row of objective counts, keep them in a running trend table, and read the trend over a long run to catch regression or improvement.
You change something about an AI agent — swap the model, rework its operating frame/scaffolding, add a skill — and you want to know: did that actually help, or just feel different? Vibes don’t compound into evidence. A single session tells you almost nothing; the signal lives in the trend across many sessions, read against what changed.
A stable, small metric frame + the counting disciplines that keep the numbers honest + a plain-markdown trend table that is the canonical record. Run it every session and the table becomes a long-run benchmark you read across versions.
Six counts per session (green = strength, higher is better; red = weakness, higher is worse):
| Metric | Color | Counts |
|---|---|---|
| Redefinitions absorbed | green | the task was redefined and the agent folded it in without dropping earlier constraints |
| Clarifying gates raised | green | the agent asked instead of guessing on a genuine ambiguity |
| Errors the agent self-caught | green | flaws caught in its own output before the human |
| Misses the human caught | red | misses the human had to send back |
| Critical bugs — agent caught | green | severe defects the agent caught itself |
| Critical bugs — human caught | red | severe defects that slipped to the human |
Plus two attributes per session — version (which model/frame/build it ran on — so trouble reads
against version) and MAIN landed (L/P/N — did the session’s main goal land) — and one
optional third, strain tier at wrap (Healthy…Danger, from the strain skill, so the
trend can answer “do bad sessions correlate with running long?”).
L/P/N is the same verdict vocabulary Throughline uses to close
goals (LANDED / PARTIAL / NOT-LANDED, frozen title, evidence attached) — if the project writes
Throughline handoffs, the Done section’s verdicts are a ready-made grounding source for this column.
“Critical” = severe, not a craft nit. Defaults: a committed task silently forgotten; a previously-fixed bug recurring 2+ times; a bug that breaks a working feature (dead-loop). Each project extends this in config. Hold the bar high or the critical rows stop meaning anything.
tools/render_benchmark.py, Python + cairosvg) renders bar charts and a styled trend image, but it’s
presentation, never the data. No Python? Skip it — keep the table, or have the agent emit inline SVG.config.json (see below).Create a config.json (see references/config-template.md). Two ways to fill it:
{
"project": "what you're benchmarking (agent + project)",
"version_axis_label": "what 'version' tracks: model | frame | build | skill-set",
"transcript_source": "how to get a session transcript here (a reader tool, or 'user pastes it')",
"critical_definition": "the 3 defaults PLUS your domain's severe defects",
"grounding_source": "an authoritative record to reconcile against (a work log or status log), or 'none'",
"exclusions": "session types to skip and why, or 'none'"
}
references/methodology.md — you should be able to point at the exact
moment behind each number.python3 tools/render_benchmark.py sessions.json <out_dir> if you
have Python + cairosvg, else skip.The skill body is skills/session-measurement/SKILL.md — drop it where your tool reads skills, or paste
it into any agent as a prompt.
| Path | What it is |
|---|---|
skills/session-measurement/SKILL.md |
The skill body (trigger, run loop, metric spine, first-run config). |
references/methodology.md |
How to count each metric honestly; the critical definition; the disciplines. |
references/config-template.md |
The per-project config.json + field notes. |
references/log-template.md |
The persistent log structure (trend table + per-session entries). |
tools/render_benchmark.py |
Optional chart renderer (Python + cairosvg). Reads sessions.json. |
examples/ |
A neutral worked example (a “model swap” story) + a sessions.json. |
assets/logic-flow.svg |
The diagram above — the flow, color-coded by cross-agent workability. |
MIT. Free to use, modify, embed, redistribute.
A Whetstone skill by arcgram.io.