使用强制评估钩子,提高 Skills 命中率
在 Claude Code 的实际使用过程中,Skill 是否触发,Skill 触发哪个,是一件带有概率性质色彩,很玄学的事情。
我们都知道 description 部分的内容,决定了这个 Skill 是否会触发,什么时候会触发这个 Skill。
descriptionhelps Claude decide when to load it automatically.
官方文档对 Skill 的是否触发也写的云里雾里,只写了两个建议。
https://code.claude.com/docs/en/skills#skill-not-triggering
Skill not triggering
If Claude doesn’t use your skill when expected:
Check the description includes keywords users would naturally say
Try rephrasing your request to match the description more closely
…
但是这本身是一件很主观的事情,根据你输入的 prompts,使得 Skills 的是否会触发,触发时机,蒙上了一层”不可知,不可名状”的表现。
程序员喜欢确定的事情,因为程序是一件确定的事情,确定的输入给到了确定的结果。但是,在面向黑洞洞的终端 Terminal 的时候,更像更像是面向计算机跳舞的神婆。
这篇帖子给到了几个有用的例子,利用 hooks 来评估 Skills,以提升 Skills 的触发概率和准确度。如果你是一个非常狂热的 skills 爱好者,那么这个方法是你值得深究的。
作者通过系统化的测评方法,给到了数据,在启用强制评估钩子的情况下,启用 Skills 的概率能够达到惊人的 84%:
No hooks: 0% activation
Simple instruction hook: 20% (the coin flip)
LLM eval hook: 80% (fastest, cheapest)
Forced eval hook: 84% (most consistent)
Hooks 是 Claude Code 的一个强大的用法,在特定的时间点,如”UserPromptSubmit = 提交 prompts 前触发”,在”SubagentStart = 派发出一个 sub-agent 时触发”,允许我们注入一些特定的代码,做一些特别的事。
3 种钩子来优化 skills 的触发:
简单评估钩子: 每次在 prompts 提交前,加一句简单的表述,建议 agent 来判断并启用某个 Skill。

LLM 评估钩子: 每次在 prompts 提交前,把现在所有的 skills 列出来,给到一个更小的模型,如 haiku(更快更便宜),来决定哪个 skill 更适合处理现在的 prompts,并启用它。

强制评估钩子: 每次在 prompts 提交前,通过 [强制且系统化] 的 step 1-2-3 描述,告诉现在的主模型,判断哪个 skills 是适合现在的 prompts 的,并启用它。

我实际做了本地的测试,打出了这三种钩子的技能触发和日志,结果如下。
| | 简单评估钩子 | LLM 评估钩子 | 强制评估钩子 |
| skill-simple-instruction-hook | skill-llm-eval-hook | skill-forced-eval-hook | |
|---|---|---|---|
| 触发的 Skill | ![]() |
![]() |
![]() |
| 输出的日志 | ![]() |
![]() |
![]() |
我的结论是:
对于 Skill 狂热爱好者(特指本地 + Project 有 > 50 个 skills 的操作人员),选用 LLM 评估钩子或者强制评估钩子,能显著的发挥 Skills 的能力,不用再担心 Skills 没有被触发了。
强制评估钩子效果最好,但是整体太重,需要花费上下文,每次都会显示,或许对于想尝试的人员来说,LLM 评估钩子是一个好的选择。
简单评估钩子是个添头,和每次你手打:”请检查本地的 skills,如果有合适的,帮我触发它”的效果是类似的。
最后给到 hooks 的地址和评测框架:





