先说结论
Skill 解决的是“可复用、有触发条件、需要配套资源(脚本 / 模板 / 参考文档)的工作流”。一句话能说清的、一次性的、依赖实时变化数据的,都不该写成 Skill——直接写进提示词或系统提示就够了。把 Skill 当成你的长期记忆和工具箱,别当成提示词收藏夹。很多人装上几十个 Skill,结果它们从来没被触发过,问题就出在第一步没想清楚该不该写。
本文引用的仓库与规范信息为 2026-09-26 从 GitHub API 及官方规范站拉取;规范本身会变,看到与本文不一致时以官方为准。
官方怎么定义“什么时候用 Skill”
翻 anthropics/skills 里 academy-guide 的 SKILL.md,开头这段就是官方对“技能何时登场”的示范:
“在回答任何关于如何使用 Claude 或其产品的问题之前,先停下检查这个技能……触发词包括 ‘how do I’、’how can I’、’getting started with’、’what can Claude do’ 等。”——译自 anthropics/skills 中 academy-guide 的 SKILL.md
注意关键词是“触发条件”:当某类问题出现时,Skill 应该被自动加载,而不是你每次手动喊它出来。这才是它和提示词的本质区别——提示词是你主动写的指令,Skill 是“符合条件就自己生效”的旁路。顺带一提,官方规范现已迁到 agentskills.io/specification,仓库里的 spec 文件只留了重定向,所以别再到处找那份旧文档了。这个重定向本身也提醒你:规范是活的,别把任何一篇教程当成永远正确的圣经。
三个判定维度
遇到“这个要不要写成 Skill”的犹豫,按下面流程走一遍,每一条都给出反例:
- 它会被用超过一次吗?只做一次的事(比如“帮我把这份合同翻成英文”)→ 别写,写提示词。反复出现(每周写汇报)→ 值得。
- 加载它需要带额外资源吗(脚本 / 模板 / 样例 / 内部 API 文档)?需要 → 适合 Skill。纯文字指令就能讲完 → 留在提示词。
- 它能用一两句话说清、完全不需要配套文件吗?能 → 提示词就够了,别为了“显得专业”硬封装。
- 它依赖实时或会变的外部数据吗(股价 / 天气 / 最新文档)?是 → 别写成静态 Skill,做成 MCP 或工具,否则模型读完也是旧数据。
- 触发条件清晰吗(什么场景该自动启用)?不清 → 写了也没人触发,是废纸。
Skill vs 提示词 vs MCP
| 维度 | 提示词 | Skill | MCP / 工具 |
|---|---|---|---|
| 复用次数 | 单次或偶发 | 反复出现 | 反复出现 |
| 是否需要配套文件 | 否 | 是(SKILL.md + 资源) | 是(服务端逻辑) |
| 是否依赖实时数据 | 可手写 | 不适合 | 擅长 |
| 触发方式 | 你主动写 | 条件命中自动加载 | 被 Skill 或模型调用 |
两个具体例子
落到地上是这样的:①“每次提交前按团队规范格式化 commit message”——反复出现、有模板、触发条件清晰,该写成 Skill。②“今天帮我想五个发布会标语”——一次性、说完就忘,写提示词即可。区别在于“会不会第三次出现”,而不是“听起来酷不酷”。另一个常见误区是把实时查询塞进 Skill:查今天股价、查最新文档版本,这些该走 MCP 工具,写死在 SKILL.md 里只会拿到过期答案。
判定清单
动手写之前,对着这份清单逐项打勾,五项里至少命中“强触发 + 有资源”才值得写:
# 写 Skill 前的判定清单
[ ] 同样的流程我本周已经手搓过 3 次以上
[ ] 它依赖一份会反复用到的模板 / 脚本 / 文档
[ ] 我能用一句话说清“什么场景该启用它”
[ ] 它不是某次临时任务的副产品
[ ] 它不要求模型记住昨天才变的实时数据一个合格的 SKILL.md 头部,长这样(参考 academy-guide 的真实结构):
---
name: cn-report
description: >
当用户要写中文项目汇报、周报或公文时使用,
自动套用团队模板与标点规范。触发词:汇报、周报、
公文、总结、立项。
---
# 下面是具体指令与参考文件链接写坏了的 Skill 长什么样(反模式)
- 把 SKILL.md 写成一篇小作文提示词——没有触发条件,等于没人会主动加载。
- 一个 Skill 塞进八个不相关的任务,触发词写“任何情况”,结果永远在干扰主线。
- 里面硬编码了会过期的内部链接、版本号、价格,两个月后全错。
- 把“查今天股价”这类实时需求写死在静态 SKILL.md 里,模型读完也是旧数据。
- 目录里只有 SKILL.md,没有任何参考文件,所谓“技能”只是换了个地方的提示词。
下面这个就是典型的“坏技能”——把提示词直接塞进 SKILL.md,却没写触发条件,等于白写:
# 反例:没有 frontmatter、没有触发条件,只是段提示词
你是一个写作助手,帮用户写中文周报,注意用正式语气。
(没有 name / description,agent 永远不知道何时启用它)而一个站得住脚的技能,至少要有 SKILL.md 加配套资源,目录像这样:
skills/
cn-report/
SKILL.md # 触发条件 + 指令
template.md # 汇报模板
scripts/
export.py # 导出脚本等配套资源下一步怎么做
想学怎么正经写一个,去翻 anthropics/skills 里的 skill-creator(它本身就是教人造技能的 Skill);实操上,从“你本周手搓过三次以上的一个小工作流”下手,先做出一个带触发条件和一份模板的最小可用技能,跑顺了再谈扩展。衡量标准不是写得漂不漂亮,而是它上线后有没有真正被触发过。其余的,留在提示词里就好。
