Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Validate the output of any installed skill against an assertion manifest — word counts, required patterns, forbidden phrases, required sections, source citation. Detects regressions by diffing vs prior runs (NEW_FAIL / NEW_PASS / CHRONIC / STABLE_FAIL). Bootstrap mode generates a starter manifest from a skill's recent successful runs so manifests aren't written speculatively. Triggers: "evaluate this skill's output", "check skill X for regressions", "bootstrap evals for Y", "did this skill outpu
.claude/skills/bankrbot-aeon-skill-evals/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 172% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -32% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 216% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -54% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -33% | 0% |
Quality net for installed skills. Each skill can declare an assertion manifest; outputs are checked against it; failing assertions surface regressions and route concrete fixes.
yamltoken-movers: min_words: 200 required_patterns: ["Top movers", "24h"] forbidden_patterns: ["I cannot", "as an AI"] must_cite_source: true min_distinct_items: 5 narrative-tracker: min_words: 400 required_sections: ["TRANSITIONS", "POSITIONS", "MAP"] forbidden_patterns: ["exciting", "consider"] must_have_position_call: true
Supported assertions: min_words / max_words, required_patterns / forbidden_patterns, required_sections, must_cite_source, min_distinct_items, output_pattern (regex), and per-skill-family custom binary checks.
eval — run every manifest-defined skill against its latest output.eval --skill=NAME — one skill.bootstrap --skill=NAME — generate a starter manifest from recent successful runs.| State | Action | |---|---| | NEW_FAIL | Passing last run, failing now. Severity scales with pass streak. | | NEW_PASS | Failing last run, passing now. Log the win. | | CHRONIC | Failing > 3 consecutive runs. Recommend operator review. | | STABLE_FAIL | Always failing. Manifest assertion mismatch — flag for review. |
State in local evals-state.json.
Samples last 5 successful runs of a skill. Computes:
min_words at p25 of historical runs.Emits the proposed manifest for review. Never auto-commits — assertions need a human signoff.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 6,198 | 8,366 | +35% | 1 | 1 | 0% | 762 | 2,072 | +172% | 0 | 0 | — |
case-02 | fail→pass | 11,299 | 6,390 | -43% | 1 | 1 | 0% | 2,236 | 1,530 | -32% | 0 | 0 | — |
case-03 | fail→pass | 2,900 | 3,954 | +36% | 1 | 1 | 0% | 398 | 1,259 | +216% | 0 | 0 | — |
case-04 | fail→fail | 8,205 | 1,860 | -77% | 1 | 1 | 0% | 1,411 | 791 | -44% | 0 | 0 | — |
case-09 | fail→pass | 11,465 | 1,869 | -84% | 1 | 1 | 0% | 1,735 | 795 | -54% | 0 | 0 | — |
case-05 | fail→pass | 12,666 | 4,615 | -64% | 1 | 1 | 0% | 1,912 | 1,284 | -33% | 0 | 0 | — |
case-06 | fail→pass | 12,859 | 1,871 | -85% | 1 | 1 | 0% | 2,098 | 757 | -64% | 0 | 0 | — |
case-07 | fail→pass | 10,362 | 3,389 | -67% | 1 | 1 | 0% | 1,557 | 1,086 | -30% | 0 | 0 | — |
case-08 | pass→pass | 11,942 | 2,570 | -78% | 1 | 1 | 0% | 1,702 | 873 | -49% | 0 | 0 | — |
case-10 | fail→pass | 7,204 | 2,042 | -72% | 1 | 1 | 0% | 1,201 | 778 | -35% | 0 | 0 | — |
case-11 | fail→pass | 14,301 | 1,791 | -87% | 1 | 1 | 0% | 2,327 | 796 | -66% | 0 | 0 | — |
case-12 | fail→pass | 6,335 | 1,728 | -73% | 1 | 1 | 0% | 1,026 | 841 | -18% | 0 | 0 | — |
case-13 | fail→pass | 11,581 | 2,885 | -75% | 1 | 1 | 0% | 1,798 | 987 | -45% | 0 | 0 | — |
case-14 | fail→pass | 13,338 | 2,891 | -78% | 1 | 1 | 0% | 2,205 | 1,026 | -53% | 0 | 0 | — |
case-15 | fail→pass | 8,512 | 1,825 | -79% | 1 | 1 | 0% | 1,360 | 824 | -39% | 0 | 0 | — |
case-16 | fail→pass | 9,690 | 1,892 | -80% | 1 | 1 | 0% | 1,772 | 813 | -54% | 0 | 0 | — |
case-17 | fail→pass | 10,167 | 2,899 | -71% | 1 | 1 | 0% | 1,483 | 989 | -33% | 0 | 0 | — |
case-18 | fail→pass | 9,628 | 2,021 | -79% | 1 | 1 | 0% | 1,786 | 855 | -52% | 0 | 0 | — |
case-19 | pass→pass | 12,952 | 1,301 | -90% | 1 | 1 | 0% | 1,889 | 763 | -60% | 0 | 0 | — |
case-20 | pass→pass | 9,293 | 8,148 | -12% | 1 | 1 | 0% | 1,827 | 1,904 | +4% | 0 | 0 | — |
case-21 | fail→pass | 13,598 | 8,685 | -36% | 1 | 1 | 0% | 3,081 | 2,078 | -33% | 0 | 0 | — |
case-22 | pass→pass | 16,570 | 10,120 | -39% | 1 | 1 | 0% | 2,826 | 2,350 | -17% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +77 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.