最近我常被问一个问题:“Skill 到底怎么写?”特别是 Claude Code、Codex、Cursor 这一波 Agent 工具流行之后,GitHub 上冒出来大量带 SKILL.md 的仓库,有人做 PPT、有人做数学建模、有人把自己团队的前端规范封装成 skill。但点开这些仓库你会发现:真正告诉你“怎么写”的文档很少,大多数都在直接丢成品。
这篇文章不打算塞给你一个万能模板,而是想把思考过程摊开——从判断一个任务适不适合做 skill,到拆解自己的执行流程,再到写 SKILL.md、放脚本、做测试,以及最后怎么在不同工具里装载和维护它。如果你也想把重复性工作变成 Agent 能复用的能力,这篇应该能给你一套完整的下手路径。
1. Skill最近这么火,到底解决的是哪一类麻烦
先说结论:Skill 的本质,是把“你知道怎么做一件事的方法”打包成 Agent 在特定时刻能读取的文件。它不解决模型会不会写代码的问题,它解决的是“模型每次都要重新被教一遍”的问题。
1.1 上下文按需加载,是 Skill 和传统提示词文件最核心的差别
在没有 Skill 之前,想让 Claude、GPT 这类模型稳定输出,通常会做两件事:要么把规则写进系统提示词,要么把规范放在项目根目录的说明文件里,比如 CLAUDE.md、AGENTS.md。
这个做法有效,但有个代价:这些规则在每次对话时都会占据上下文窗口。如果你只放了十条全局规则还好,一旦放了 50 条,模型真正处理任务时可能已经被“规范文本”分散了注意力,还会互相干扰。
Skill 的做法不一样。它把规则拆成一个个独立文件夹,每个文件夹配一个 description。Agent 先判断用户当前需求匹配哪个描述的技能,匹配上了才加载对应的说明。也就是说,默认情况下 Skill 不占上下文,用到哪份才把哪份的内容拉进来。
这种“按需加载”对实际使用影响很大。我早期把前端规范写进全局规则,结果模型每次写代码都先想一遍那套规范,回答风格都被带偏了。后来改成前端审查 Skill,只有丢给它一段代码要做审查时才触发,效果立刻稳定许多。
1.2 Skill、Agent、MCP/插件,三者的分工并不是一回事
很多朋友在搜索时会混着问“Skill 和 Agent 的区别”“Skill 是不是插件”。我在实际项目里的体会可以简单概括成一句话:Agent 是干活的工人,Skill 是这个工人脑子里的一套操作手册,而 MCP、插件、工具是工人手上的扳手和电钻。
| 概念 | 解决什么问题 | 常见形态 |
|---|---|---|
| Agent | 负责理解目标、规划步骤、调用工具、根据反馈纠偏 | 一个支持多轮推理的运行程序 |
| Skill | 把某类稳定任务的执行知识固化下来,让 Agent 在需要时读取 | 目录 + Markdown 说明 + 可选脚本/模板 |
| MCP / Plugin | 打通外部数据或执行外部动作 | 通过标准协议暴露的一系列工具函数 |
所以你会发现它们不是替代关系,而是配合关系。Skill 本身可能只是文字,它不负责执行操作;真正执行时,还是 Agent 决定调用哪个 MCP 工具来读数据库、发请求、操作文件。Skill 管的是“怎么组织和执行这些工具”的流程经验,而不是工具本身。
1.3 不是所有任务都适合做成 Skill,先做一次判断
我踩过最典型的坑,是把所有任务都往里塞。后来发现,适合做成 Skill 的任务通常有三个特点:
- 流程相对固定,每次都按差不多相同的步骤走。
- 输出格式明确,有一套可重复的交付标准。
- 涉及一些模型仅凭常识很难完整掌握的领域知识或组织规范。
举几个我正在用的例子:生成周报、审查前端组件是否符合团队规范、把代码仓库变化整理成发布说明、把会议纪要拆成行动项、按照特定模板生成 PPT 大纲。
不适合的也有:需要实时联网查最新数据的(应该交给搜索工具,而不是写死在 Skill 里);需要 Agent 自由探索、目标本身都不明确的研究型任务;以及每次输出都追求随机感、不需要模板的创意发散任务。
如果一件事你连“第一句话先做什么、第二句做什么”都说不清,那 Skill 也帮不了你。可以先不急着建文件,先把这件事跳过。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 动手前先把你的“手艺”拆成能教给模型的三张草稿
写 Skill 最容易踩的坑,是一打开编辑器就开始敲 SKILL.md。这个顺序通常是错的。Skill 本质上是把你脑子里的隐性经验变成显性步骤,如果你自己都想不清楚步骤,写出来的文件只会是一堆正确的废话。
我自己的习惯是,先打三张草稿,不碰正式格式。
2.1 草稿一:写清楚“什么场景下会用到这个 Skill”
这是最容易被忽略但最关键的一步。因为它直接决定了你后续 description 怎么写,而 description 又决定 Agent 会不会在正确的时候触发这个 Skill。
你可以用一句话回答:用户发出什么问题、处于什么场
