一、为什么需要了解自动匹配
在快速上手中,你已经用 /skill-name 手动触发过 Skill。手动触发每次都能精确命中,但实际使用中,多数 Skill 应该是 Claude 自动发现并加载的——用户提出需求,Claude 判断哪个 Skill 适合,自动加载它的完整指令。
当你安装了多个 Skill 后,会遇到这些现象:
- 某个 Skill 明明适合当前任务,Claude 却没有使用它
- 两个功能相近的 Skill,Claude 总是选错那个
- Skill 数量增多后,某些 Skill 突然不再被自动触发
这些现象的根源都在同一个机制:Claude 如何根据 description 做匹配决策。
二、自动匹配的工作方式
匹配触发流程
用户每次发送消息后,Claude 将输入内容与所有可用 Skill 的 name 和 description 进行语义比对。匹配成功时,Claude 通过内置的 Skill 工具加载该 Skill 的 SKILL.md 完整内容,将其纳入当前上下文。
默认状态下,每个 Skill 的 name 和 description 始终存在于 Claude 的上下文中。这是渐进式加载的第一层(Metadata 层,约 100 words 每个 Skill)。只有当 Claude 判断某个 Skill 与当前对话相关时,才会加载第二层——SKILL.md 的 Markdown 正文(上限约 5000 words)。
两个例外会改变这个默认行为:
- 设置
disable-model-invocation: true后,该 Skill 的description不进入上下文,Claude 无法自动发现它,只能通过/skill-name手动触发 - 设置
user-invocable: false后,该 Skill 从用户的/菜单中隐藏,但description始终在上下文中,仅 Claude 可自动触发