Draft, test, grade, iterate, ship. The full lifecycle for Claude skills.
Two primitives: claude -p subprocesses and structured JSON between every stage.
Each test spawns a real claude -p process — identical to how users invoke skills. Stream events detect triggering in real-time.
Every stage emits JSON: eval_metadata, grading, timing, benchmark. Scripts aggregate, viewer renders. No ambiguity.
Every test case spawns two parallel runs — with skill and without. Isolates the skill's contribution.
Loads SKILL.md, follows instructions and scripts to complete the task.
Same prompt, no skill. When improving, the old version is the baseline.
Skill in one directory, results in a sibling -workspace. Click to expand.
Grade against assertions, aggregate into benchmarks with variance.
Each assertion checked against outputs with cited evidence. PASS or FAIL.
Extracts implicit claims from outputs and verifies them independently.
Pass rates, timing, tokens per config with mean ± stddev.
Non-discriminating assertions, flaky evals, cost tradeoffs.
Browser-based viewer to inspect outputs, see grades, and leave feedback. Live demo — click around.
Three subagent roles handle distinct parts of evaluation.
Checks assertions with cited evidence. Verifies implicit claims. Flags weak assertions.
Blind A/B comparison. Sees outputs as A/B with no origin info. Scores on rubric, declares winner.
Post-hoc analysis of why one version won. Reads transcripts, surfaces gaps and priorities.
The description field controls triggering. This pipeline generates eval queries, curates them, then rewrites until it triggers correctly.
No expanding keyword lists. Generalize failures to broader intent categories. Stay under ~200 words.
Each iteration sees all prior attempts + scores. Avoids repeats, encourages structural variation.
Got a skill that's almost right? Same eval loop, but the old version becomes the baseline.
Creating: baseline is no skill. Improving: baseline is the old version. Isolates what you fixed (or broke).
Old skill is snapshotted before edits. Baseline runs point at the frozen copy, keeping the comparison clean.
The skill runs a million times. Don't overfit to test cases — fix the pattern, not the specific failure.
Read transcripts, not just outputs. If the model wastes time, cut the instructions causing it.
Skip the ALL CAPS ALWAYS/NEVER. Explain why it matters. Reasoning beats rigid rules.
Every test run wrote the same helper? Write it once, put it in scripts/.
from previous iteration
edit SKILL.md / scripts
iteration-N+1/
--previous-workspace
compare & leave feedback
Viewer shows previous output and previous feedback per test case. Iterate until feedback is empty or the user says stop.
Real viewer with improvement data. Baseline labeled "old skill," previous output/feedback visible, benchmark compares with_skill vs old_skill.
Open-source skill you can install today. Study it, fork it, build your own.
SKILL.md, eval scripts, agents, viewer, description optimizer. Install and start building.
Built with skill-creator. Roasts your AGENTS.md/CLAUDE.md with A/B test evidence — proof, not opinions.