Skill-creator run_eval: crashed runs count as "did not trigger" and pass negative queries
In anthropics/skills skill-creator's
scripts/run_eval.py, a query whose eval run crashes (subprocess error, timeout, API failure) is recorded asFalse— the same value as a legitimate "skill did not trigger". Forshould_trigger: falsequeries the pass test istrigger_rate < threshold, so an infrastructure failure is scored as a pass and can even produce 20/20 passed while 28 of 60 runs failed withYou've hit your session limitonmainat commitdbd4588. Is this still open, and is there a workaround?Originally asked on GitHub: https://github.com/anthropics/skills/issues/1478
4 answers
Status: still open as of this thread — no fix or PR is mentioned. The cause is in
skills/skill-creator/scripts/run_eval.py: the exception handler appendsFalsetoquery_triggerswhen a run crashes, so a subprocess crash, timeout, or API error becomes indistinguishable from a legitimate "skill did not trigger". Forshould_trigger: falsequeries the pass test istrigger_rate < threshold, so a crashed run scores as a correct result.run_loop.pyimportsrun_evaldirectly, so the optimizer sees the same corrupted counts.Workaround reported from a real-world hit on
mainat commitdbd4588: treat aresultevent withis_error(or noresultevent at all) as a failure rather than appendingFalse. That surfaces the problem asWarning: query failedand keeps the failed run out of the trigger value space. The failure occurred withrun_eval.py --runs-per-query 3 --num-workers 10on 20 queries: 28 of 60claude -pruns failed with"is_error": trueandYou've hit your session limit, yet the script reported 20/20 passed with no warning printed.One commenter argues the fix belongs at the append site — add an
erroredfield to the emitted payload — and recommends excluding the failed iteration plus a minimum valid-run count rather than retrying, since retrying biases the eval toward flaky-passing descriptions. Note the asymmetry: the same crash scores as a pass forshould_trigger: falsebut as a miss forshould_trigger: true, so a flaky environment makes negative-query results look better and positive-query results look worse.Did this work for you?What a GitHub user tried on GitHub (Worked)
Reproduced the bug with a self-contained script that transcribes run_eval's aggregation and injects a crash as False. The healthy non-trigger payload and the crashed payload are byte-identical, and the crashed case scores 2/2 passed.
Source: https://github.com/anthropics/skills/issues/1478 (opens external site)
Did this work for you?What @ScriptAutomate tried on GitHub (Partly worked)
Ran run_eval.py --runs-per-query 3 --num-workers 10 on 20 queries on main at commit dbd4588. 28 of 60 claude -p runs failed with "is_error": true and "You've hit your session limit", yet the script reported 20/20 passed with no warning. As a workaround, treated a result event with is_error (or no result event) as a failure instead of False, which surfaces Warning: query failed; the thread does not confirm the final aggregate score after the change.
Source: https://github.com/anthropics/skills/issues/1478#issuecomment-6327140747 (opens external site)
Did this work for you?What @zzzzz9999 tried on GitHub (Outcome unclear)
Suggested excluding the failed iteration and enforcing a minimum valid-run count instead of retrying, plus adding an errored field at the append site. Design proposal only; not implemented in the thread.
Source: https://github.com/anthropics/skills/issues/1478#issuecomment-6334930295 (opens external site)
Did this work for you?
Related questions
- Claude Code 'plugin marketplace add' fails: Failed to clone marketplace repository
- All Claude skills disappeared and uploads fail with "not found" / network error?
- Is anthropics/skills a public skills directory or just reference examples?
- Claude docx/ooxml skill makes Word files unreadable — how to fix?
- Can I fork, copy, or modify skills from Anthropic's anthropics/skills repo?