Editorial illustration for Session-Start Hook Raised Claude Code Skill Firing From 15% to 62%
Claude Skills Fire Rate Jumps to 62% With Session Hook
Session-Start Hook Raised Claude Code Skill Firing From 15% to 62%
A tester named in the piece ran 18 prompts across Claude's Haiku, Sonnet, and Opus models to answer a question Anthropic's own documentation hedges on: how often do installed Skills actually fire. The setup was simple. A workspace held a public skill called python-testing-patterns, built to trigger on requests to write pytest tests with fixtures.
The test prompt asked for exactly that, sharing five words with the skill's own description. By any reasonable matching logic, it should have loaded every time.
It didn't. Across all three models and both the original and a "pushy" rewritten description, the skill failed to fire on a near-miss prompt in run after run. Instead, each model improvised its own workaround: writing test files from scratch, saving functions to new locations, checking for pytest manually.
Claude Code's interface gave no error, no warning, nothing to flag the miss. The only way to catch it was combing through the transcript line by line for a Skill call that never came.
That gap between what a skill description promises and what actually gets invoked is the subject of this testing exercise, and the numbers that came out of it are worth sitting with before explaining how they were measured.
On indirect requests, the firing rate went from 15% to 62%, a paired difference of 47 points (95% interval 39 to 55 over prompts, 34 to 60 over skills).
Why this matters
For teams building on Claude Code, this is a reminder that skill descriptions aren't documentation, they're prompts competing for the model's attention at the exact moment it decides how to respond. A jump from 15% to 62% firing rate from one hook placement is a bigger lever than most of the prompt tweaking we see teams obsess over. The finding that pushy descriptions only added 5 points should temper the instinct to just write more forceful instructions; the real gains came from when the hook ran, not what it said.
The near-miss failures matter just as much as the headline number: if a model writes a file or answers in text instead of calling a skill, that's a silent failure mode that won't show up until something breaks in production. If you're shipping agents with custom skills or plugins, run this kind of test yourself across model tiers, Haiku, Sonnet, Opus clearly behave differently, and check the misses, not just the hits. Tools like `claude plugin eval` exist for exactly this reason.
Treat skill-firing rate as a metric you track, not something you assume works because it worked once.
Common Questions Answered
What was the improvement in Claude Code Skill firing rate when using a session-start hook?
The firing rate for indirect requests increased from 15% to 62%, representing a 47-point improvement with a 95% confidence interval of 39 to 55 points across prompts. This dramatic increase demonstrates that hook placement has a significantly larger impact on skill activation than most conventional prompt optimization techniques.
How did the tester evaluate Claude's Skills across different model versions?
The tester ran 18 prompts across Claude's three model variants: Haiku, Sonnet, and Opus, using a public skill called python-testing-patterns designed to trigger on requests for pytest tests with fixtures. The test prompt intentionally shared five words with the skill's description to assess whether the models would properly recognize and fire the skill.
What was the effect of using pushy or more forceful skill descriptions on firing rates?
Pushy descriptions only added 5 percentage points to the skill firing rate, suggesting that simply writing more forceful instructions is not an effective optimization strategy. The real gains in skill activation came from hook placement rather than aggressive wording in skill descriptions.
Why is skill description wording important for Claude Code implementation?
Skill descriptions function as prompts competing for the model's attention at the moment it decides how to respond, rather than serving as traditional documentation. Understanding how descriptions influence the model's decision-making process is crucial for teams building on Claude Code to effectively trigger the skills they've installed.
Further Reading
- Pushy Skill Descriptions Moved Claude Code From 15% to 20%. A Hook Hit 62% - Towards Data Science
- Steering Claude Code: when to use CLAUDE.md, skills, hooks, rules, subagents, and more - Anthropic
- Extend Claude with skills - Claude Code Documentation
- Extend agents with skills - Claude Code Documentation
- I Audited 214 Claude Code Skills — 73% Were Silently Broken - DEV Community