先说结论

Skill 不出活,九成不是模型笨,是“它根本没被加载”或“被加载了但描述把它引偏了”。记住一条铁律:默认情况下 skill 的 description 一直挂在上下文里,但完整内容只在被调用时才读进来;触发与否,几乎全看 description 写得对不对、以及它落在哪个目录。下面按“没触发 / 乱触发 / 更新后失效”三类给排查表。数据时间为 2026-09-26,来自 GitHub API 与 Claude Code 官方文档(anthropics/skills 约 17.8 万 star,是官方示例库)。本篇只讲机制,社区具体案例没查到可信来源,不编造引述。

第一类:装了没触发

先区分“没加载”还是“没自动匹配”。直接在会话里手敲 /skill-name 强制造一次:能跑通说明技能已加载,问题在 description 的自动匹配;报错“找不到”说明压根没被加载,得往目录和名字上查。

/code-review
# 能跑 = 已加载,问题在 description 自动匹配
# not found = 没加载,回去查目录和名字
现象可能原因怎么查修复
手动能跑,自动不跑description 太窄,没覆盖用户原话看 description 是否带“什么时候用”和关键词按规范补关键词
完全 not found放错目录确认在 .claude/skills/ 还是 ~/.claude/skills/放到目标位置并提交仓库
完全 not found目录名与 frontmatter 的 name 不一致比对名称和目录名让 name 与目录同名、小写加连字符
自动从不触发设了 disable-model-invocation: true检查 frontmatter删掉该字段,让 description 回上下文
个人机器不跑团队版个人级覆盖了项目级优先级:个人 > 项目改名加前缀,避开撞车

“怎么看它有没有被加载”最实用的两个动作:其一,手动调用 /skill-name,这是最硬的判定;其二,来自插件市场的 skill 走 /plugin 菜单确认已安装、已启用,插件技能还带命名空间,命令是 /plugin-name:skill-name 而非裸名。文档还提到一个开关 disable-model-invocation: true:设了之后 description 不再进上下文,模型根本不会自动想起它,只能你手动调——很多“装了不触发”其实是被人顺手加了这个字段。举个真实点的例子:有人把团队 review 技能放在自己机器 ~/.claude/skills 上,同事 clone 仓库后跑 /code-review 用的是本机那份旧规则,评审口径对不上,吵了半天才发现是位置优先级在作怪。

官方文档原话:“The description helps Claude decide when to load the skill automatically.” 规范同时要求 description “should include specific keywords that help agents identify relevant tasks.”

第二类:触发了乱跑

乱触发的根因几乎都是 description 写成了“关键词垃圾堆”:想让它多被命中,就塞一堆八竿子打不着的词,结果任何含这些词的提问都把它叫起来。另一个常见原因是和别的 skill 职责重叠,两 skill 抢同一句话,模型随机挑一个。比如有个 pdf 技能 description 写了“文档、表格、报告、分析”,用户说“帮我分析一下这周的销售”,模型把 pdf 技能叫起来,其实人家要的是查数据库——这种误命中最容易被当成“模型抽风”,根子却在 description。

现象原因缩小触发范围的做法
无关问题也调它description 关键词太泛删掉泛词,只留“做什么 + 何时用”
两个 skill 抢同一句职责重叠按场景切分,description 写明边界
被短词命中description 含“pdf”“test”这种高频词改成完整短语与动作描述

一个好 description 与坏 description 的对照,坏的那版把所有相关词堆上去,反而让“帮我写个测试”这种无关请求也命中:

# 坏:关键词堆砌,到处乱触发
description: 处理 PDF、文档、表格、报告、导出、转换、整理、分析。

# 好:说清做什么、何时用
description: 从 PDF 抽取文本与表格、合并或拆分 PDF、填表。当用户提到 .pdf 文件或要生成 PDF 时使用。

第三类:更新后失效

昨天还好好的,今天改了上游就废,通常出在这几处:上游改了 frontmatter 字段或目录结构;你本机跑的还是旧缓存;插件没重新安装;skill 里的脚本因为权限或依赖变了跑不起来。

现象原因排查 / 修复
改完 SKILL.md 不生效当前会话已读入旧内容开新会话再试
插件里的 skill 旧插件没更新重装:/plugin install <plugin>@<marketplace>
脚本报错依赖或执行权限变了本地跑一遍脚本,补齐 allowed-tools
字段被忽略用了旧规范字段名按 Agent Skills 规范比对 name/description

为什么改完不生效:模型只在调用时才读完整 SKILL.md,但当前会话一旦读入就缓存住,你改了文件它还在用旧的——开个新会话是最常被忽略的一步。插件类 skill 则靠市场分发,上游发了新版,你本机不会自动变,得重新 /plugin install。格式校验能提前拦掉“字段写错”这类失效:

skills-ref validate ./my-skill

通用排查清单

  • 第一步永远手动调用 /skill-name:区分“没加载”还是“没自动匹配”。
  • 看它挂哪:项目级 .claude/skills/ 提交了吗?个人级 ~/.claude/skills/ 是不是抢了同名?
  • 看名字:目录名是否等于 frontmatter 的 name,是否碰了保留名 synced、anthropic-skills(这两个不会被加载)。
  • 看 description:是否同时写了“做什么”和“何时用”,关键词是否精准。
  • 看插件:来自市场的 skill 用 /plugin 菜单确认已安装、已启用。
  • 看会话:是不是改完没开新会话,还在跑旧缓存。

反模式清单:

  • 用关键词堆砌换“高触发率”,最后变成哪里都乱跳。
  • 靠个人目录测完就当团队可用,忘了个人级会盖过项目级。
  • 改了 SKILL.md 不新建会话,以为模型“没更新”其实是缓存。
  • 给 skill 起名 synced 或 anthropic-skills,加载器直接跳过。

什么人该装,什么人别装

正在写或维护团队 skill、被“为什么它不触发”折磨过的人,照上面四类逐条过一遍基本能定位。别装的是:指望靠一个 skill 解决所有触发问题——触发质量在 description,不在数量。下一篇(第 68 篇)讲清 skill 和 MCP 的边界,很多“总是不够用”的坑其实是该接服务而不是堆技能。

声明:1.本站所有文章,如无特殊说明或标注,均为本站原创发布。本网站中【文本生成/文生图】使用了DeeSseek人工智能生成内容技术, 算法来源说明:本网站未自行开发、训练或部署深度合成算法,所使用的人工智能算法来自:DeepSeek、Chatgpt、Google Gemini。 2.为了网站加载速度优化,本站预览图片进行压缩处理,所以有些不是太清晰,并不影响AI提示词生图、AI设计等内容。3.任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。--GUUNN.COM