brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
agent-evaluationBuilds an eval set for an agent or LLM feature, writes graders, establishes a baseline, and reads the results honestly. Use this whenever the user wants to measure whether an agent works, asks if a prompt or model change was an improvement, mentions evals, LLM-as-judge, regression testing for AI, or is about to ship an agent on the strength of a few manual …
Independent GitHub snapshot · Automated classification · Original documentation governs
Input: the spec's success criteria and the design's open questions. Output: evals/ with cases,
graders, and a baseline number.
The question is never "does it work?" — it is "how often, on what, compared to what?" Trying five prompts by hand and being pleased is the default, and it is how agents ship broken. Five successes tell you almost nothing about the hundredth request.
Build evals before tuning anything. Without a baseline, every change is a guess and every improvement is a story.
Cases must come from things that actually happen, in roughly the proportion they happen.
Sources, best first:
Deliberately include:
Start at 20–30 real cases. A small honest set beats a large invented one, and you will add to it every time something breaks.
Done when: the set reflects the real distribution and includes correct-refusal cases.
Match the grader to the output; do not reach for a judge model by reflex.
Validate your judge. Grade 20 cases by hand, compare with the judge, and measure agreement. An unvalidated judge is an unmeasured instrument, and a whole eval program can rest on it while being quietly wrong.
Done when: every case has a grader, and the judge (if used) has measured agreement.
Run the current system. Record the score, per case and in aggregate.
Run each case several times. Agents are stochastic; a single run measures luck as much as quality. Report the variance — a change of two points with a five-point spread is noise, and teams routinely ship noise as an improvement.
Record alongside: model version, prompt version, tool versions, date. A score without its configuration cannot be compared to anything.
Done when: you have a baseline with variance, and it is committed.
The aggregate number tells you whether to ship. The failure clusters tell you what to fix.
Group failures by cause:
A cluster of five failures with one cause is one fix. Five separate fixes for five failures is how prompts become unmaintainable.
Done when: every failure is assigned a cause, and causes are ranked by frequency.
Change the prompt or the model or the tools. Re-run the full set. Compare against the baseline, including the cases that previously passed.
Watch for regressions specifically. A change that lifts the aggregate while breaking cases that used to work is often a bad trade, and the aggregate hides it.
Do not tune on the whole set. Hold out cases you never look at during iteration, or you will fit the prompt to the eval and learn nothing about production.
Done when: the change is measured against baseline, with regressions listed separately.
## Eval — <agent>, <date>
**Score** 78% (n=30, 3 runs each, ±4)
**Baseline** 71% — change: <what changed>
**Regressions:** cases that passed before and fail now
**Failure clusters:** cause, count, proposed fix
**Not covered:** what the set does not test
**Ship / don't ship:** against the spec's criteria, with the reason
The "not covered" section is mandatory. An eval score reads as a statement about the whole system, and its silence gets read as coverage. Say what you did not test.
Never report a number without n, without variance, and without what it was measured against.