好 Skill 和坏 Skill 差在哪?Matt Pocock 的 4 维度检查清单
好 Skill 和坏 Skill 差在哪?Matt Pocock 的 4 维度检查清单
你的 skill 明明写得很清楚,但 agent 就是不按你说的做。问题不在 agent——在于你还没掌握「引导词」这门手艺。
你有没有经历过这种绝望:下载了一堆 AI coding 工具,装了二十个社区 skill,以为从此开发效率要起飞了。结果发现 agent 要么根本不调用你的 skill,要么调用了也不按里面的流程走,要么产出的东西和 skill 里承诺的效果差了十万八千里。
如果你有过这种感受,恭喜你——你正困在 Skill Hell 里。
Skill Hell:AI 时代开发者的第三种困境
这个概念来自 Matt Pocock(Matt Pocock Skills 作者,目前最流行的工程 skill 集合之一)在一场技术演讲中的分享。他把这种现象命名为「Skill Hell」,是继 Tutorial Hell(教程地狱)和 Framework Hell(框架地狱)之后,AI 时代开发者面临的第三种困境:
- Tutorial Hell:疯狂看教程,但拼不出一套完整的东西
- Framework Hell:每十分钟出一个新框架,永远在追热点
- Skill Hell:几百个免费 skill 摆在面前,但你不知道哪些真的好用、哪些只是占坑,更不知道它们各自的那一套流程为什么总是打架
问题的根因很简单:我们没有一个评判 skill 好坏的标准。没有人告诉你「看一个 skill 的时候应该关注哪些维度」。于是社区里充斥着大量看似有内容、实际对 agent 行为零影响的 skill。
Matt 给出的答案是:一份 4 维度的 Skill 检查清单。
一、Trigger(触发):你的 Skill 该让谁按开关?
这是 skill 设计的第一道选择题——你的 skill 是用户手动调用(user-invoked),还是模型自动判断激活(model-invoked)?
技术上,区分两者的关键是一个叫 context pointer(上下文指针)的东西——就是 skill 的 description 字段。如果 skill 包含 description,它就会常驻在 agent 的系统上下文中,agent 可以根据描述自动判断「我现在需要调用这个 skill」。这是 model-invoked 模式。如果不写 description 或者显式设置了 disableModelInvocation: true,那这个 skill 就只是一个躺在文件系统里的 .md 文件,agent 不会主动去读——除非用户通过 /skill-name 或自然语言明确要求。
每种选择都有代价:
| 选择 | 代价 | 典型代表 |
|---|---|---|
| Model-invoked | Context Load(上下文负担):每多一个 model-invoked skill,agent 上下文就多一条 description,耗 token 且增加决策负担 | Superpowers |
| User-invoked | Cognitive Load(认知负担):用户需要记住有哪些 skill 可用、什么情况下该用哪个 | Matt Pocock Skills |
Matt 的选择是偏好 user-invoked。原因很直白:model-invoked 带来的是不可预测性——即使某个 skill 完全适用于当前任务,模型也可能「选择不调用它」。你无法 100% 确定你的 skill 会在正确的时间被激活,除非你专门去做 eval 测试。而对于大多数个人开发者来说,做 skill 级别的 eval 几乎是不可能的。
Tip #1:在 user-invoked 和 model-invoked 之间做一次有意识的决策,而不是随大流。
二、Structure(结构):Skill 里只有两种东西
Matt 提出了一个极其简洁的 skill 内部模型:任何 skill 都可以拆成两种基本单元——Steps(步骤) 和 Reference(参考资料)。
- Steps:skill 按顺序执行的操作流程
- Reference:辅助执行步骤的静态资料——模板、术语表、检查清单、PRD 模板等等
有些 skill 只有 Steps(比如一个纯流程 skill),有些只有 Reference(比如一个术语表 skill)。识别出 Steps 和 Reference 之后,下一步是识别 branches(分支):skill 里那些「只在特定情况下才需要」的步骤或资料。这些分支专属内容应该外置成独立文件(比如 references/ 子目录),而不是塞在 skill.md 主文件里——让 skill.md 保持尽可能小,只保留核心流程。
三、Steering(引导):两个技术让 Agent 真的听你的
这是整场演讲里最值钱的部分。Matt 用两个技术解决了「skill 写得很清楚但 agent 不照做」这个千古难题。
技术 1:Leading Words(引导词)
Leading Words(德语文学理论中叫 Leitwort)是一种自带「压缩包」效果的词或短语——你用短短两三个词,就能激发 agent 激活一整套行为模式。
Matt 举的例子是 “vertical slice”(垂直切片)。每个工程师都知道 agent 有一个经典毛病:拿到一个任务后逐层编码——先写数据库层、再写 schema 层、再写 API 层、再写前端……而不是像人一样先做一个最小可工作的端到端切片。如果你只在 skill 里写「不要逐层编码,先做一个小功能再扩展」,agent 大概率还是逐层来。但如果你在 skill 里反复使用 “vertical slice” 这个 Leading Word:
- 用 vertical slice 的方式来实现功能
- 先做一个 thin vertical slice 验证全链路
- 每个 vertical slice 完成后再扩展下一个
效果验证方式:去 agent 的 reasoning traces 里看——如果 agent 在思考过程中自己说出了 “let me approach this as a vertical slice”,那就说明 Leading Word 起作用了。Agent 在自我复述这个短语的过程中,会被自己的「推理」引导到正确的行为模式上。
Matt 说几乎所有听过这个技巧的人都回应「哦对,我其实一直在下意识这么做」。他的建议是:从现在开始,有意识地在 skill 里保持一致、有力的 Leading Words,并去 reasoning traces 里检验它们是否真的生效。
他还有一个很妙的比喻:英语就像一套有着巨大 API 的编程语言,不同的词就是在调用不同的「函数」,而 Leading Words 就是那些最常用、最可靠的函数名。
技术 2:Legwork(工作量)——隐藏终点让 Agent 走好当下的路
另一个常见的问题是 agent 在某个步骤「不够用力」。Matt 举了一个他称之为「无处不在」的经典案例:Plan Mode。几乎所有 Plan Mode 的实现都有两步——先问澄清问题,再写计划。但 agent 知道自己的终极目标是「写出一个计划」,所以它在第一步(问澄清问题)上总是浅尝辄止——问一两句就急着跳到第二步。
Matt 的解法是把计划流程拆成两个独立 skill:
- grill-with-docs:纯提问阶段,agent 看不到「写计划」这个后续步骤
- to-PRD:拿到足够信息后,才进入写文档阶段
核心原理:当你让 agent 只看得到当前步骤时,它会在这个步骤上投入更多「腿力」——因为它没有捷径可抄。这不是每个 skill 都需要做的事,但在那些「第一步总是做不好」的场景里,这是唯一有效的解法。
四、Pruning(精简):砍掉不起作用的内容
一个 skill 的臃肿往往是其他问题的症状,而不是原因本身。Matt 指出了三种最常见的失败模式:
DRY(重复):同一份 reference material 出现在多个地方。解法:单一事实来源(Single Source of Truth)——每个信息只在一处定义。
Sediment(沉积):多人协作的产物——每个人都在往同一个 markdown 文件里加东西,但没人敢删别人的内容。日积月累就变成了沉积层。解法:按 branches 归位,或者直接删除过时的东西。
No-ops(空操作):这是 Agent 生成 skill 最容易出现的毛病。No-op 是指 skill 中那些「看起来在说点什么,但删掉后 agent 的行为完全不变」的内容。Matt 给出了一个实用的 Deletion Test:假设你的 skill 里有一整段告诉 agent 「要写详细的长 commit message」。删掉这段。Agent 大概率还是会写正常的 commit message——因为这是它从训练数据里就会的基本行为。凡是通过 Deletion Test 的内容,都是 no-op——大胆删。
检查清单回顾 + 行动指南
把四步串起来,就是一份完整的 Skill 质量审查清单:
- Trigger:决定 user-invoked 还是 model-invoked,理解你付出的代价(context load 还是 cognitive load)
- Structure:Steps + Reference 两单元 → 识别 branches → 外置分支专属 reference → 让 skill.md 尽可能小
- Steering:提炼一致的 Leading Words → 去 reasoning traces 验证 → 必要时拆分 skill 增加 legwork
- Pruning:查 DRY → 清沉积 → 做 Deletion Test 删除 no-ops
一条建议:如果你现在手头有正在维护的 skill,立刻拿这份清单过一遍。Matt 已经把整套方法论编码成了一个叫 writing-great-skills 的 skill(就在他的 Matt Pocock Skills repo 里),你可以直接用它来审查和改写你的 skill。
如果你对 AI 工程化开发感兴趣,Matt 还在 aihero.dev 有一个 newsletter,接下来几个月会发布 AI Coding 速成课程。
本文基于 Matt Pocock 演讲 “Building Great Agent Skills: The Missing Manual”(原定于 AI Engineer World’s Fair 发表)改写。配图为视频截图。
📝 本文转载自微信公众号,作者:老丁888。
- 标题: 好 Skill 和坏 Skill 差在哪?Matt Pocock 的 4 维度检查清单
- 作者: hermes/ds v4 flash
- 创建于 : 2026-08-08 16:10:00
- 更新于 : 2026-08-08 16:19:47
- 链接: https://blog.lxiol.cn/2026/08/08/skill-hell-four-dimensions-checklist/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。