
以下是Skill没出现之前的场景:花了好大功夫,把一套发版流程一句一句教给 Claude:先跑测试,再更新 changelog,再按语义化版本打 tag,再写一段发布说明。它当时做得相当漂亮,一步没错。
结果第二天你重新开个会话,它压根就不记得这回事了,跟没见过你似的。于是同样那段话,你只能再敲一遍。
这就是 2025 年之前的 Claude,它很聪明,然而它像一个每天重新来报到的临时工,昨天教会的东西,今天一律作废。当时你能想到的补救,往往就是把所有规矩一股脑写进 CLAUDE.md。可那玩意儿每轮对话都整段加载,正经活儿还没开始呢,上下文窗口已经被这些规矩占掉一小半了。
转折来了,Anthropic 在2025 年10月16日推出了 Agent Skills,还把它做成了一个开放标准。
说实话,第一次把它的设计文档读完,我对着屏幕愣了好一会儿。这东西我其实等了很久——久到都快忘了自己一直在等它。上面那五步发版流程,从今往后可以只是一个文件:有人说一句"帮我发个版",Claude 自己就把它翻出来,只在这一下读进上下文,需要的时候还能跑里面打包好的脚本;这文件往 git 里一提交,全队 clone 下来,人人都有了。
差别压根不在"省不省事"。而是在于经验这东西,头一回能留下来了。
我愿意把它放进过去这一年 Agent 圈最要紧的那几件事里头。说句可能有人不太爱听的话——MCP 发布那会儿全网都在欢呼,可真正让我觉得"这东西不一样了"的,其实是 Skill。MCP 给了 Agent 一双手,能去够外面的数据库、API、文件系统;可一个有手却老记不住事的天才,每天还不是从零开始?Skill 补的,恰恰就是这块最尴尬的短板:记性。
你把时间轴往开了拉,更让人心里一动。一年多以前,Agent 还只是个聊天框;MCP 让它能动手了;Skill 又让它把做事的方法攒下来、随时取用。从"会聊"到"会干"再到"会攒经验",前后还不到一年。这种速度,身在其中的人未必有啥体感,可你回头一看,是真会起鸡皮疙瘩的。
所以我觉得,Skill 配得上"里程碑"这三个字。下面咱们把它讲透,顺手就把第一个写出来。
一、Skill 之前,就两条路,哪条都别扭
在 Skill 出现之前,你想让 Claude 稳稳当当地照一套流程办事,手里其实就两张牌。
第一张牌,每次重新讲。哪类活都现教现做。灵活是真灵活,可"经验"始终锁在你脑子里、锁在聊天记录里,模型那头永远是一张白纸。一段发版提示词,一个月你敲它二十遍,真不夸张。
第二张牌,全塞进 CLAUDE.md。把规矩固化成常驻配置,确实能记住。麻烦在于,CLAUDE.md 是不分场合、整段加载的——这次对话哪怕只是帮你改个错别字,它也照样把发版流程、代码规范、提交格式、目录约定,整整一本"员工手册"摊你桌上。手册越厚,留给眼下这件事的地方就越小。一个塞得满满当当的 CLAUDE.md,它本身就是个拖累。
你看,矛盾就卡在这儿:你既想让 Agent 懂得足够多,又不想这些知识在没用上的时候也白白占着上下文。Skill 之前,这两样你只能二选一。
二、Skill 之后,本事能存起来、用到再取
Skill 给的解法,说穿了挺土的:把每一项专长,写入一个单独的文件夹,平时就露一句话的简介,真用到了才把全文展开。
形式上像收纳,骨子里其实是架构层面动了刀。Anthropic 给它的定位是一种"可组合、可移植、可累积"的法子,让 Agent 去拿到领域专长。这路数你大概率眼熟——它跟 MCP 是一脉相承的:MCP 把外头的工具和数据接进来,管的是 Agent “够不够得着”;Skill 把做事的方法装进去,管的是它"会不会做"。这两样凑齐了,Agent 才总算有了个能干活的同事该有的样子。
落到日常,Skill 带来的好处其实有三样,但我更想只挑最要紧的那一样说:它让经验不再蒸发。 写一次 release skill,往后每个会话它都在;进了 git,新人 clone 完仓库就把团队全套招式接过去了,再也不用听老员工一遍遍口述"咱们这儿发版得这么搞";攒得多了,发版的、排查的、写周报的 skill 一个个摞起来,你的工作流就成了一座越垒越高的库,而不是每回都推倒重来。
我觉得它够得上"里程碑",就在这儿——不是因为语法有多新鲜,而是因为 Agent 头一回,能把昨天学会的本事带到今天来用。

三、Skill 到底长啥样:一个带说明书的文件夹
定义一句话就够了:它就是一份告诉 Claude "碰上某类活该怎么办"的说明书。
形态是个文件夹,核心是里头那个 SKILL.md:
.claude/skills/release/└── SKILL.mdSKILL.md 就两块,你会写 Markdown 就会写它。开头两个 --- 中间是 frontmatter,放元信息,说明这 skill 干啥、啥时候用——字段大多可选,可有一个是命门,叫 description,第六节我专门收拾它。--- 底下是正文,把步骤和规矩写清楚就行。
没有什么专用语法,不用编译,也没有注册这一道。你把"该怎么做"落成文字,它就是个 Skill 了,就这么简单。
四、上手:一个发版 Skill 大概长这样
光说不练没意思,咱拿个实物对一对。还是发版这事。
新建 .claude/skills/release/SKILL.md:
---description: 发布新版本。当用户说"发版""release""发布新版本"时使用。---# 发版流程按顺序执行,每步失败就停下来报告:1. 跑 `npm test`,全过才继续2. 根据 git log 更新 CHANGELOG.md3. 按语义化版本号打 tag4. 写一段面向用户的发布说明5. 把要做的 git 命令列给我确认,**先别推送**存盘。打这往后,在这个项目里你只要说一句 /release,或者干脆大白话"帮我发个版",Claude 就照这套往下走:跑测试、理 changelog、打 tag、拟发布说明,最后把命令摆出来等你核对。
你瞧,一段说完就蒸发的口头交代,就这么被钉成了一项不会蒸发的本事。花的也就几分钟,几行 Markdown。
顺带说一句,这文件其实不一定非得你自己一行行去敲。Claude Code 自带一个 skill-creator 套件,你打一句 /skill-creator,它会反过来问你这 skill 要解决啥、啥时候触发,然后把文件夹、frontmatter、SKILL.md 骨架都给你搭好,你只管把流程讲清楚就行。手写一遍,是为了让你看懂它的构造;真到了一周要造好几个 skill 的时候,扔给套件去搭脚手架,省心多了。
不过到这一步,它还只是"你打 /release 它才动"。Skill 真正聪明的地方,在于它能自己拿主意该不该出手——而这背后,藏着整套设计里我最想说的那一招。
五、渐进式披露:Skill 最聪明的那一招
Skill 这套东西,要是只让你记住一个机制,那就记这个:渐进式披露(progressive disclosure)。第一节里那个"既要又要"的死结,就是它给解开的。
Claude 加载一个 skill,不是一口闷进去,而是分三层、用多少取多少。
开机那一下,它只读每个 skill 的名字加 description,俩加一块儿通常也就几十个 token。你哪怕装了几十个 skill,开局也几乎不占地方。等哪次请求跟某个 skill 的 description 对上了,它才把那一个 SKILL.md 的全文读进上下文;没被点到的,正文一个字都不占。再往里,skill 里要是还打包了脚本、参考文档、数据表,这些文件直到真被执行、真被读取的那一下,才进上下文。
结果就有点像作弊:一个 skill 能往里塞的东西,几乎没上限。整套 API 文档、大段示例、完整的数据字典,你全打包进去都行,反正没用上的部分压根不花上下文。
社区里有人拿真实场景算过一笔账:一个不用 skill 的 Agent,开局把领域文档全灌进去,动工之前先吃掉差不多七万 token;换成 skill 呢,开机就加载五百 token 的索引,正文用到才读。两头一比,开局开销差出整整百倍。这数字会随场景上下浮动,可方向是定死的——深的知识、轻的上下文,第一次能同时要了。
也正因为这样,写好一个 skill,难的从来不是步骤,而是那句决定它会不会被翻开的 description。

六、description:它会不会被"想起来",全看这一句
这是新手最爱糊弄、可偏偏最该抠的一行。
触发有两种。一种手动,你打 /release 点名叫它。另一种自动,Claude 把所有 skill 的 description 扫一遍,自个儿拿主意这回用不用某一个。
自动那种,才是 Skill 的灵魂所在。你说一句"帮我发个版",Claude 拿这话跟一排 description 挨个儿比,发现 release 这条对上了,就启用——整个判断,全靠 description 这一句话撑着。你步骤写得再漂亮,description 没写到位,这 skill 就一直在角落里躺着,没人搭理。
写 description,记住三点。头一点,把"做什么、什么时候用、触发词"说全,比如"发布新版本;当用户提到发版、release、上线新版本时使用"。第二点,宁可写得主动些,触发场景尽量铺宽点——模型有个真毛病,该用 skill 的时候常常想不起来用,你把话头给足,等于替它提个醒。第三点,别写"一个有用的工具"这种空话,等于没写,它根本判断不出来啥时候该用。
经验是这样:你要是发现"明明该自动触发它却没反应",先别急着怀疑步骤,九成是 description 没写够,回去把触发场景补足了,往往立马就好。
七、再往上走:参数、脚本,还能拼着用
带参数。 你想让 skill 去处理"某个具体对象",用 $ARGUMENTS 接输入:
---description: 给指定的 issue 生成修复分支并开始处理argument-hint: [issue编号]---处理 issue #$ARGUMENTS:先读 issue 描述,建分支,再动手。你调用 /fix-issue 123,$ARGUMENTS 就是 123。一个 skill,能接住无数个 issue。
带脚本。 流程里那些固定的、重复的、犯不着每次都让模型现编的逻辑,写成脚本扔进 scripts/:
.claude/skills/release/├── SKILL.md└── scripts/ └── bump_version.py在 SKILL.md 里让它去调这个脚本就行。这一步的好处比你想的大:模型每回现写代码,结果时好时坏;脚本一旦写定,往后每次跑的都是同一段验证过的逻辑,又快又稳。说白了就是,不确定的判断交给模型,确定的执行交给脚本。而且脚本算"附件",平时它不占上下文——你回想一下第五节那第三层就明白了。
能拼着用。 Skill 不是一座座孤岛。碰上复杂任务,Claude 可以把好几个 skill 串起来用:一个拉数据,一个画图,一个出报告。你今天攒的每个小 skill,将来都可能是某个大流程里的一环。库越厚,能拼的花样就越多,这才是"可累积"真正生利息的地方。
八、Skill、CLAUDE.md、命令、MCP,各管各的一摊
工具一多,人就容易绕晕。把边界划清楚,你就不晕了。
| CLAUDE.md | ||
| Skill | ||
| 自定义命令 | ||
| MCP |
里头有两条边界,最值得你记牢。
Skill 跟 CLAUDE.md 的界,划在"常驻"还是"按需"。每轮对话都该生效的那些(代码风格、语气、红线),写进 CLAUDE.md;只有特定任务才用得上的流程,封成 Skill。你要是把专项流程错塞进 CLAUDE.md,那就是给每次对话白白加重。
Skill 跟 MCP 的界,划在"会做"还是"够得着"。MCP 把外头的世界接进来,Skill 教 Agent 怎么把活儿干对。这俩不是谁替代谁,是搭着伙干。
还有个演进你得知道:早先那个"自定义命令"(.claude/commands/*.md)已经并进 Skills 了——.claude/commands/deploy.md 和 .claude/skills/deploy/SKILL.md 都生成 /deploy。旧的还能接着用,可你新写的,直接写 Skill 就好:能带脚本、能自动触发、能渐进加载,明摆着更强。
一句话兜底:常驻规矩归 CLAUDE.md,专项做法归 Skill,外部连接归 MCP。

九、一进 git,一个人的经验就变成一队人的
Skill 真正那股劲,得在团队里才使得出来。
放哪儿,决定了它共享给谁。放 ~/.claude/skills/,是你个人的,所有项目随处可用;放 .claude/skills/ 再提交进 git,是团队的,全队共享。
后面这条的分量,在于一支团队的集体经验,头一回有了一个能版本管理、能 code review、能跟着仓库走的载体。新人入职,clone 完仓库,团队所有招式一下就到手了——发版怎么发、线上炸了怎么查、周报怎么生成,再也不靠老人一句一句口传,而是写在代码库里,Claude 随叫随到。
往大里说,关键就在"开放标准"这四个字。Skill 一次写成,能跑在任何兼容这个标准的 Agent 上,不被哪一个产品给拴死。这跟当年 MCP 怎么成的行业通用语,用的是同一招:拿开放标准去撬生态。一项能力一旦能跨工具、跨团队、跨产品流动,它就不只是某个软件的功能了,而是这个时代 Agent 脚底下的一块地基。
十、给你提个醒,少踩几个坑
从你跟 Claude 解释过三遍以上的那个流程下手——你被它折磨得越久,封成 skill 之后回本就越快。
SKILL.md 正文别写太长,它一触发就整段进上下文,越长越占地方;那些一次性的参考资料,挪去附属文件,让渐进式披露替你省着点,正文就留核心步骤。
先写个最简单的版本跑通、确认它能被正确触发,再慢慢加参数、加脚本、加附件,别一上来就憋大招。
description 你得当主战场反复磨——步骤常常一遍就对,description 往往要调好几轮才顺。
凡是结果该稳定、不该靠模型即兴发挥的地方,写成脚本去调,可靠性立马上一个台阶。
写在最后
.claude/skills/ 这个目录,你刚建好那会儿,是空的。
可你每往里头加一个 SKILL.md,往后就少一段还得重新交代的话。一个月后你回头看,那文件夹里躺着的,是你这一个月里所有"实在懒得再说第二遍"的流程——也是 Claude 凭空多出来的、不会再随会话清零的本事。
Skill 之前,AI Agent 是个每天从零开始的天才。Skill 之后,它开始记事了。一个会思考的工具,跟一个会积累的同事,差的就是这么一步。
而你要迈出这步,做的事普通得不像在参与什么大事:挑一个你重复了无数遍的流程,写进一个 SKILL.md。
就这么件小事。你要不要现在就去试一下?
下一篇 《A09 Hooks 钩子》 换个角度,讲怎么让 Claude 在特定时机自动做事——比如你代码一改完,它就自动跑测试。Skill 管的是"怎么做",Hook 管的是"什么时候做"。
想把 Skill 推到工程级(版本管理、自动测试、效果评估、持续迭代)?《B05 Skill 工程化》 有整套玩法。
参考链接
Anthropic 工程博客:Equipping agents for the real world with Agent Skills — https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills Claude 官方文档:Agent Skills Overview — https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview Claude 官方文档:Skill authoring best practices — https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices
相关阅读
《A07 Subagent 与并行》 — 上一篇:Subagent 并行 《A09 Hooks 钩子》 — 下一篇:用 Hook 卡时机 《A04 CLAUDE.md 配置文件》 — 常驻规矩写哪 《B05 Skill 工程化》 — 极客版:Skill 的 CI/CD
夜雨聆风