skill-creator run_eval.py: recall drops to 0% with parallel workers (identical clone commands)
In the anthropics/skills skill-creator, scripts/run_eval.py run through the Claude Code CLI reports 0% trigger recall across 27+ positive samples and three different candidate descriptions, while precision stays at 100% and accuracy at 50%. With the default
--num-workers 10, parallel workers write identical-description clones with different hashed names into a shared.claude/commands/directory, and each worker only counts a trigger when the model invokes its own hash. Is this a known bug, and can trigger evaluation be run correctly today?Originally asked on GitHub: https://github.com/anthropics/skills/issues/1427
4 answers
Still open as of the last thread update (2026-07-28), but the root cause is confirmed by two independent environments and a serial workaround exists. This is a design flaw in
run_single_query(), not stream-format drift: it writes a clone named<skill>-skill-<uuid8>.mdinto the shared.claude/commands/directory and counts a trigger only when the accumulatedtool_useJSON contains that exact hashed name. With the default--num-workers 10, N clones with identical descriptions but different hashes coexist in the same directory, the model picks one arbitrarily, and each worker's match probability is ~1/N — recall collapses toward 0. Orphaned clones left by killed runs and the skill's canonical name inCLAUDE.md(the model callsSkill("<real-name>")instead of a clone) make it worse.What works today: run serialized. A commenter re-ran a 10-query slice (6 positive / 4 negative) with
--num-workers 1, swept stale<skill>-skill-*.mdclones beforehand, and temporarily removed the skill's canonical-name reference from user-levelCLAUDE.md: recall recovered from 0% to 3/6 positives with negatives 4/4. (The reporter's 0/27 figure came from default-parallel runs across three descriptions.) A second environment (WSL2 Ubuntu, Claude Code 2.1.220) reproduced the A/B directly: 10 workers gave ~0/3 triggers per query vs--num-workers 1= 3/3.The thread suggests fixes the maintainers could adopt: match the clone-name prefix
f"{skill_name}-skill-"in the accumulated JSON instead of the exact hash, sweep stale clones at eval start plus a cleanup handler for killed runs, or give each worker an isolatedproject_root(note user-level~/.claude/commands/is still shared whenproject_rootresolves to$HOME). A secondary bug:run_single_query()returnsFalseat the first tool_use block that isn'tSkill/Read(run_eval.py L133-141) instead of checking the rest of the turn; patching that changed a few individual results (some 0/3 → 1/3) but did not fix the core collapse.Did this work for you?What a GitHub user tried on GitHub (Worked)
Reporter ran a control experiment with exactly one clone present:
claude -pwith--output-format stream-json --verbose --include-partial-messagesshowed the model invoking that clone's full hashed name and trigger detection working correctly, confirming the stream-event parsing is fine and the failure is the N-clone ambiguity.Source: https://github.com/anthropics/skills/issues/1427 (opens external site)
Did this work for you?What @Buer2333 tried on GitHub (Worked)
Commenter re-ran a 10-query slice (6 positive / 4 negative) with
--num-workers 1, swept stale clones beforehand, and removed the skill's canonical-name reference from user-level CLAUDE.md; recall recovered from 0% to 50% (3/6 positives) with negatives 4/4.Source: https://github.com/anthropics/skills/issues/1427#issuecomment-4947820453 (opens external site)
Did this work for you?What @surfvand-gif tried on GitHub (Worked)
Independent A/B on the same 3 should-trigger queries with the same description: parallel
--num-workers 10gave ~0/3 triggers each, serial--num-workers 1gave 3/3 (100%), on WSL2 Ubuntu with Claude Code 2.1.220.Source: https://github.com/anthropics/skills/issues/1427#issuecomment-5110481446 (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?