首页 › LLM大语言模型 › Claude专栏 › Claude Skills › 14种 Claude skills 设计模式

14种 Claude skills 设计模式

在 Agent Skills 的生态中,技能大致可以分为两类:​

​

​

​

飞书文档 - 图片

​

50%

​

​

​

一类是任务型技能(通常设置 disable-model-invocation: true),对应一整套步骤化流程,比如部署、提交或安全审查,用户一般通过 /skill-name 直接触发。​

​

50%

​

​

另一类是参考型技能(用户不可直接调用),更像是背景知识,比如风格指南或领域术语,Claude 会在相关场景下自动应用。​

激活元数据模式(Activation Metadata pattern)​

​

飞书文档 - 图片

​

但很多人把description当成「摘要」,写成类似“用于处理文档”这种模糊描述。结果就是:要么选错,要么干脆不用。​

​

💡

description 不是摘要,而是 Claude 做选择时最关键的信号。​

在会话开始时,Claude 只能看到每个技能的 name 和 description。​

​

Anthropic 的 skill-creator 甚至建议把 description 写得「更主动」一点,因为 Claude 本身有点「触发不够」的倾向。比如:“即使用户没有明确提到仪表盘,只要提到数据可视化或内部指标,就应该触发这个技能”。​

​

🐵

适用场景:所有技能都应该用这个模式。入口没做好,后面都没意义。​

权衡点:在开放的 Agent Skills 规范中,description 上限是 1024 字符;在 Claude Code 里,description 和可选的 when_to_use 一起最多 1536 字符。空间有限,每句话都要在「触发词、排除条件和领域关键词」之间做取舍。​

​

排除条款模式(Exclusion Clause pattern)​

你同时有一个「文档处理」和一个「代码生成」技能,如果它们都写成「处理所有文本相关任务」,Claude 很难判断该选哪个。正向触发是把它拉进来,排除条款是把它推出去。Ruben Hassid 把排除条款称为「description 里最关键的一行」,甚至比正向触发更重要。​

​

一个好的排除条款,通常会说清楚:​

​

• 哪些场景不适用​

• 哪些内容更应该交给其他技能​

• 哪些情况直接用 Claude 就够了​

​

比如:“不要用于博客文章、通讯邮件、推文或长篇内容。”​

​

还有一个容易被忽略的点:排除条款不是单独存在的,它需要和整个技能库一起考虑。否则就可能出现两个技能都说「我能做」,或者都说「我不做」。​

​

​

飞书文档 - 图片

​

​

​

📍

适用场景:几乎所有技能,尤其是和其他技能有重叠的那些。​

权衡点:维护成本。技能一多,排除条款也需要跟着调整,否则很容易出现冲突或空白区。​

​

​

上下文预算模式(Context Budget pattern)​

很多技能喜欢从头解释一遍:什么是 PDF、什么是库、JSON 是怎么工作的——但这些 Claude 本来就知道。这种冗余一旦在几十个技能里重复出现,上下文窗口在用户开口之前就已经被占掉一大半。​

默认前提:Claude 是聪明的。​

这个模式的核心是:每一段话都要配得上它占用的 token。如果删掉一句话不会让一个「足够聪明的读者」困惑,那它大概率就是多余的。​

​

另外还有两个容易忽略的点:​

​

• 术语要统一:选一个说法就一直用,比如只用 field,不要来回切换 field / box / element​

• 避免时间敏感表达:像“2025 年 8 月之前”这种描述,很快就会过时。更好的做法是把这类信息放到「旧模式」的附录里​

​

​

​

​

​

​

⚽

适用场景:所有技能的基础要求,可以当作默认纪律。​

权衡点:如果你的技能要兼容多个模型,就要按最弱模型来决定细节程度——对 Sonnet 来说刚好的简洁,对 Haiku 可能就偏简略了。​

​

​

渐进式披露模式(Progressive Disclosure pattern)​

很多人会把所有内容一股脑塞进 SKILL.md:不管用户问什么,几百行甚至上千行内容一次性全加载。表格、API 文档、示例代码——不管用不用,都占着上下文。​

​

​

🏕️

核心思路是:把 SKILL.md 当成目录,而不是仓库。​

​

​

具体做法一般是:​

​

•

• 主文件尽量控制在 500 行以内​

•

• 把细节拆到不同文件(比如 FORMS.md、REFERENCE.md、reference/finance.md)​

•

• 只在需要的时候再加载这些文件​

​

​

​

​

​

​

🍰

适用场景:当 SKILL.md 超过 ~300 行时,基本就该考虑拆分了。​

权衡点:拆分带来的复杂度。文件多了之后,不仅作者更难把控全局,Claude 也需要做「下一步该加载哪个文件」的判断,一旦选错,就会多走几轮。​

​

​

控制调优模式(Control Tuning pattern)​

​

有些技能会把每一步都写死,结果一遇到需要灵活处理的情况,Claude 反而被卡住。反过来,如果指令太模糊,在那些「错一步就全错」的场景里,又很容易出问题。​

​

​

🎁

这个模式的核心是:根据任务的脆弱程度来决定指令该有多严格。​

​

​

可以一直问自己一个问题:这里能接受多大的偏差?​

​

• 高自由度(文本指令,比如“用你的判断”):适合开放型任务,比如代码审查​

• 中自由度(伪代码、参数化步骤):适合有流程但需要灵活调整的任务,比如部署​

• 低自由度(精确脚本、强约束,比如“不要修改”):适合高风险操作,比如数据库迁移​

​

​

语气本身也是一个调节手段。比如在开头设定角色:“你是一个更关注正确性而不是风格的资深代码审查员”。这种设定会直接影响后面的判断标准,在参考型技能里很常见。​

​

​

​

​

​

🐵

适用场景:对每个步骤都问一句——这里允许多少偏差?​

权衡点:很多人会倾向于「写死一点更安全」,但其实只是把失败方式换了一种:从「做错」,变成「做不了」。​

​

​

解释原因模式(Explain-the-Why pattern)​

​

把规则写成一串 ALWAYS / NEVER / MUST,看起来很清晰,但其实缺少上下文。Claude 可能会按字面执行,却在边界情况里用错,或者在不该严格执行的时候也机械套用。​

​

​

Anthropic 的 skill-creator 甚至把这种全大写指令当作需要重构的信号。​

这个模式的核心是:先说规则,再说明原因。​

这样 Claude 不只是「照做」,而是能理解背后的逻辑,在规则没覆盖到的情况里也能自己做判断。​

比如:“使用构造器注入。字段注入会破坏可测试性,因为需要依赖 Spring 上下文来模拟字段。” 就比: “必须使用构造器注入,绝不使用字段注入。” 更稳一些。前者提供了推理依据,后者只是限制行为。​

​

​

​

​

​

​

📌

适用场景:当你开始写 MUST / ALWAYS / NEVER 这类强制性规则时,就应该考虑换成这种结构。​

权衡点:解释会消耗 token——对于那些真正「不能出错」的步骤(比如前面说的低自由度场景),直接命令式反而更合适;带原因的写法,更适合需要 Claude 自己做判断的地方。​

​

​

模板脚手架模式(Template Scaffold pattern)​

​

像报告、提交信息、API 请求、发布说明这类输出,只要结构很重要,Claude 每次生成的「形状」往往都不太一样。​

问题在于:结构其实藏在示例里,但技能本身没说清楚,所以每次都在重新「猜」。​

​

​

🎼

这个模式的做法很直接:给一个带占位符的模板,让它按结构填空。​

​

​

模板一般分两种:​

•

• 严格模板(“必须按这个结构来”):适合数据契约、需要机器解析的场景​

•

• 灵活模板(“这是推荐结构,可以调整”):适合需要一定发挥空间的文档类输出​

​

​

​

​

​

📍

适用场景:只要输出有固定结构,或者后面还要被解析(不管是人还是程序),就应该用模板。​

权衡点:模板越严格,越容易限制表达。在一些边缘情况里,反而可能不够用。所以如果不是给机器用,优先用灵活模板。​

​

​

技能内示例模式(In-Skill Examples pattern)​

​

光靠描述,很难把语气、格式和细节说清楚。常见情况是:结构对了,但风格不对——比如提交信息用了正确的 conventional commit 前缀,但语气跟团队不一致。​

​

这个模式的做法是:在技能里放几个输入 / 输出示例,让它照着对齐。​

​

代码块​

Plain Text

Input: [用户输入示例] Output: [期望输出示例]​

​

和 few-shot 类似,给两到三个例子,通常比一大段说明更管用。Claude 会优先对齐示例,而不是从文字里自己猜。​

可以这么理解:模板(上一个模式)解决的是结构问题;示例解决的是风格问题。两者配合使用时效果最好:模板定结构,示例定风格。​

​

​

​

​

​

🎼

适用场景:既有结构要求、又有表达风格要求的输出,比如提交信息、发布说明、changelog、审查摘要等。​

权衡点:Claude 很容易「学例子」。如果示例里带了某种习惯,它会在所有输出里复现。所以示例要尽量覆盖不同情况,而不是只给一种写法。​

​

​

已知陷阱模式(Known Gotchas pattern)​

​

很多技能只覆盖「正常流程」,告诉 Claude 该怎么做,却没说哪些地方容易出错。​

一旦遇到真实环境里的边缘情况——字段不存在、命令在 macOS 能跑但在 Linux 失败、库悄悄返回空结果——Claude 没有参考,就容易自己「编一个修复」。这个模式的做法是:专门列出已知的陷阱。​

​

在 SKILL.md 里单独加一节,把常见失败情况写清楚,比如:​

​

• “扫描 PDF 可能返回空数组,需要先检查页码类型”​

• “页面旋转必须在列提取前设置 page.rotation = 0”​

在实战里,这一部分往往是一个技能最有价值的内容,因为它直接来自踩过的坑。​

​

​

​

​

​

​

🏖️

适用场景:已经在真实环境跑过一段时间的技能,可以根据实际问题不断补充。​

权衡点:这些「陷阱」是会变化的。库升级、API 改动之后,旧问题可能已经不存在,如果不更新,反而会误导 Claude 去排查一个已经不存在的错误。​

​

​

执行清单模式(Execution Checklist pattern)​

​

在多步骤流程里,常见问题不是做错,而是没做完:跳过验证、忘了当前进度,甚至提前宣布完成——「应该已经好了」,但其实只做到一半。​

​

​

🏕️

这个模式的做法是:把流程变成一份可勾选的清单。​

​

​

让 Claude 在对话中直接使用,比如:​

​

代码块​

Plain Text

步骤1:...- [ ] 步骤2:...- [ ] 步骤3:...​

​

每完成一步就勾掉,没完成的会一直留在那。​

关键点在于:未完成的项是「可见的」。​

清单会一直出现在对话里,不只是 Claude 自己知道,也让用户一眼就能看出进度。每一轮都要面对「还有哪些没做」,自然就更难提前收工。​

​

​

​

​

​

🌅

适用场景:超过三步的流程,尤其是那些「少一步就可能出问题」的场景。​

权衡点:清单每轮都会完整出现,长对话里 token 会明显增加。对于很短的流程,用这个模式反而有点重了。​

​

​

自纠正循环模式(Self-Correcting Loop pattern)​

​

在生成代码、编辑 XML、或者按规范写文档时,单次输出很容易留下问题——而这些问题,本来是技能可以发现的。问题不在于「怎么写对」,而在于:没有人检查它写得对不对。​

​

🐵

这个模式的做法是:引入一个显式的循环。​

​

​

流程很简单:生成 → 验证 → 失败则修复 → 再验证​

验证可以是:​

​

• 脚本(比如 python validate.py fields.json)​

• 或规则检查(比如重新对照 STYLE_GUIDE.md 一条条过)​

​

​

​

​

​

​

🍰

适用场景:对质量要求高、且可以验证的任务,比如代码生成、配置文件、结构化输出等。​

权衡点:可能不收敛。如果验证不够严格,或者 Claude 一直在同一个地方出错,就会反复循环。实际使用中需要设置重试上限,并在失败时回退给用户处理。​

​

​

计划-验证-执行模式(Plan-Validate-Execute pattern)​

​

对于批量或高风险操作——比如批量改表结构、数据迁移、整篇文档重写——如果直接「上来就做」,一旦出错,很容易一路错到底。等你发现问题时,修改可能已经应用完了,回滚成本很高。​

​

​

✏️

这个模式的做法是:在「理解任务」和「执行操作」之间,加一层可验证的中间产物。​

​

​

通常是一个结构化的计划(比如 JSON),流程变成:计划 → 验证 → 通过后再执行​

​

📍

关键点是:所有验证都发生在副作用之前。​

​

这和前面的自纠正循环不一样——那是在结果出来之后反复修,这里是在真正动手之前,把问题提前挡住。Claude 可以在「计划」阶段反复调整;只有当计划通过验证后,才允许执行真实操作。​

​

​

​

​

​

🦄

适用场景:批量操作、不可逆操作,或者一旦出错代价很高的任务。​

权衡点:流程更重。对于简单任务(比如改两个字段),这套流程本身的成本可能比任务还高。所以更适合那些「做错了很难补救」的场景。​

​

​

实用工具包模式(Utility Bundle pattern)​

​

如果每次都让 Claude 临时写验证脚本、PDF 解析器或者数据处理逻辑,不仅慢,还不太稳定,而且这些「临时代码」也在白白消耗 token。很多时候,其实是在反复写同一套逻辑,只是细节有点不一样。​

​

🎉

这个模式的做法是:把这些确定性的能力提前做成脚本,放到 scripts/ 里。​

​

之后让 Claude 通过 bash 调用,而不是每次都现写一遍。好处是:进入上下文的只有脚本输出,而不是实现过程。​

​

这些脚本本身也有几个基本要求:​

​

​

• 能自己处理常见错误,而不是把问题再丢回给 Claude​

• 要么给出合理默认(比如自动创建缺失文件),要么快速失败并说明原因​

• 常量要写清楚用途(比如「30s 超时是为了覆盖慢连接」),避免魔法数字​

如果不确定哪些逻辑值得抽出来,可以简单看一下:跑几次技能,翻翻日志——哪些辅助逻辑反复被「重新写」,就应该提到 scripts/。​

​

​

​

​

​

​

📌

适用场景:确定性强、经常重复、值得单独测试的操作。​

​

​

自主校准模式(Autonomy Calibration pattern)​

​

如果一个技能默认拿到一整套工具,它理论上什么都能做:写文件、跑 shell、调外部服务——哪怕它的任务其实只是读点数据。​

​

比如一个带 Write 和 Bash 权限的安全审计技能,就算 SKILL.md 写得再严格,本身也是个隐患。​

​

​

🏕️

这个模式的做法是:在 YAML 里把 allowed-tools 写清楚,只给它真正需要的能力。​

​

比如:​

​

• 安全审计:Read, Grep, Glob​

​

​

​

​

​

​

🎼

适用场景:只需要少量能力的技能,尤其是安全、审计、分析这类任务。​

权衡点:很容易误用。如果 allowed-tools 写得太宽,其实是在放大权限;而且很多人会把「预批准」当成「已经限制」。需要严格控制时,一定要配合权限策略一起用。​

​

​

总结​

这 14 个模式,基本覆盖了技能设计里最容易出问题的几个关键点。​

description 决定技能会不会被用到;渐进式披露决定它会占多少上下文;解释原因和已知陷阱,决定 Claude 在边界情况下能不能做出正确判断;计划-验证-执行和自主校准,则是在出问题时,把风险控制在可接受范围内。​