我审查了自己的 73 个 AI Skill,一个都没做对这件事。
今天下午做了一件小事:把一份给 AI 用的操作手册,从 587 行删到 404 行。
这份文档教 AI agent 怎么按流程处理用户反馈:录入 issue、派会话去 debug、验证、提交、回填结果。前段时间给它加了个"同时处理多个任务"的功能,文档从 380 多行涨到 587 行。
涨的这 200 多行,单独看都有用:怎么建隔离的工作目录、怎么分端口、怎么维护进度看板、两个任务冲突了怎么办——都是真踩过的坑。
但整份文档变得很难读。而且这些内容里,八成场景根本用不上——大多数时候还是一个任务、一个会话,老老实实串行处理。
这是写 skill、写 agent 规则文件最容易踩的坑:每一段都有道理,堆在一起就是一坨。
一句话,成了尺子
处理这个问题时,我正好在读一个专门讲"怎么写好 skill"的仓库,里面一句话说到了点子上:
skill 存在的意义,是把随机系统逼出可预测性。每一个设计决策,都要为这个目标服务。
这句话给了一把很具体的尺子:写任何一段内容之前,先问一句——少了它,AI 的行为会不会变得不可预测?
答案是"不会",这段内容就不该占正文的地方,要么删,要么挪走。
我拿这把尺子重新审视了三类平时容易犯迷糊的决策,每一类都能落地成一个可以照做的判断方法。
第一个用法:这段该不该常驻
Cursor 和 Claude Code 的 Agent Skill 机制,说白了就是把 SKILL.md 的说明常驻在 AI 的上下文里,让它随时知道"我有这个技能,什么时候该用"。
常驻是有代价的,每一轮对话都占一块上下文。所以两个平台都留了个开关:disable-model-invocation: true。开了之后,这份说明不再常驻,只有你点名调用才加载。
什么时候该开?还是那把尺子。如果这个 skill 是"AI 自己联想到就该主动用"的类型,比如用户提到 PDF,就该联想到 PDF 处理技能——这种不能关。关了 AI 就联想不到,行为反而变得不可预测。但如果是"必须由人点名"的固定流程,比如一份内部 SOP、一套发版脚本,开不开这个开关,AI 的行为毫无区别,只是白占上下文。
Cursor 官方写"怎么创建 skill"的文档里,原话是这么说的:
Default
disable-model-invocation: trueso the skill only loads when named explicitly. Omit it only when the agent should auto-invoke from ambient context.
翻译过来:默认就该开这个开关,只有确定需要 AI 自己触发时才不开。
我去查了自己维护的 skill 仓库,里面 73 个 SKILL.md。用了这个开关的有几个?
0 个。
这 73 个里,至少十几个是"必须点名才用"的固定 SOP,全部在无意义地常驻占上下文,一次都没用上这个开关。

第二个用法:这段该不该拆出去
回到那份 587 行的文档。并发处理相关的内容虽然写得都对,但只有少数场景用得上——正好符合"少了它,正常场景下 AI 的行为完全不受影响"这条判断。所以我把这部分整体拆成独立文件,主文档里只留几行指路的话,需要时再点进去看。
这里有个可以直接复用的判断阶梯,按上下文成本分三层:

按这个阶梯看,并发处理的具体命令——怎么建隔离目录、怎么分端口、怎么处理冲突——明显该在第三层,之前却被写在第一层的位置上,难怪文档越来越臃肿。
拆完之后,主文档从 587 行降到 404 行。原来直接嵌在 Markdown 里的一段刷新任务看板的脚本,也顺手抽成了真正可执行的文件,不用再从文档里现抄命令。
这个数字不重要,重要的是这套判断过程可以直接照搬到任何一份正在变长的 SKILL.md 上。
第三个用法:这句话该不该说
还有一类更细的问题:一句话本身值不值得写。
两种常见的浪费。一种是 AI 默认就会这么做,你又说了一遍——比如"请仔细检查代码",对一个正常工作的 AI 基本没信息量,删掉它,行为不会有任何变化。另一种是同一个意思换个说法又说一遍——前面说了"提交前核对暂存区",后面又用不同措辞重复一次同样的要求,读着啰嗦,AI 也不会因为多说一遍就更认真。
判断方法还是那句话:这句话删掉,行为会不会变。不会变,就删。
可预测性是根,其它都是手段
写到这,其实就想说一件事:可预测性是唯一的根,简洁、结构清晰、常驻还是不常驻,都只是为它服务的手段,不是目的本身。
如果你手头也有一份正在变长的 SKILL.md 或者 AGENTS.md,不用急着照抄什么最佳实践清单,先拿这句话从头到尾问一遍就够了:这一段,少了它,AI 会不会变得不可预测。
问完你会发现,至少有一部分内容,答案是"不会"。
延伸阅读
• mattpocock/skills——这句话出自这个仓库里的writing-great-skills
• Cursor 官方创建 skill 的指引也明确写了disable-model-invocation的默认建议,值得翻一眼自己维护的 skill 有没有用上
如果你也维护了一堆 SKILL.md,欢迎去数数自己有几个用上了这个开关。
