优秀的AI Skill应聚焦团队独有的高语境知识(如坑点、边界规则),而非重复低语境信息。通过精准触发、记忆功能、脚本工具和护栏机制,将隐性经验转化为AI可执行的工作环境。 ## 1. 补高语境知识而非低语境说明书 - Skill的核心价值在于提供团队特有的"坑点"(如隐藏审批流程),而非重复API文档等公开信息。 - Anthropic内部统计显示,信息密度最高的Skill往往包含"全网查不到"的本地化规则和反例。 ## 2. Description字段是精准触发的关键 - 该字段决定AI何时激活Skill,需像编程中的if条件般精确(如"仅触发学术文献翻译,排除日常短句")。 - 测试显示,description模糊的Skill触发准确率下降40%以上,需明确包含/排除场景。 ## 3. 通过简单记忆实现连续性 - 追加日志文件即可让Skill记住历史操作(如日报Skill自动对比昨日进展)。 - Anthropic案例证明,带记忆的Skill使重复任务效率提升3倍,避免"每次从零开始"。 ## 4. 用完整文件夹替代单一文档 - scripts/存放Python函数、assets/放模板文件,比纯文本描述效率提升10倍。 - "渐进式上下文披露"原则:AI按需读取参考代码/模板,避免主提示词过载。 ## 5. 钩子机制建立安全护栏 - /careful等Skill可临时拦截危险命令(如rm -rf),类似新人培训中的"禁区"提醒。 - 内部数据显示,带钩子的Skill使生产环境事故率降低67%,同时保持日常灵活性。
Claude Code 内部复盘的Skills实战经验公开:好Skill 的5个共性
2026-03-23 16:42

Claude Code 内部复盘的Skills实战经验公开:好Skill 的5个共性

本文来自微信公众号: 夕小瑶科技说 ,作者:丸美小沐,原文标题:《Claude Code 内部复盘的Skills实战经验公开:好 Skill 的 5 个共性》


上个月我写过一篇Skill的实测文章,从翻译两本书的实战出发,讲了“做完打包”这件事有多重要。


但依旧有小伙伴反馈,“我写出来的Skill就是不好使”。


说实话,这个问题我自己也遇到过。有的Skill写完就是越用越顺,有的怎么调都差点意思,一直说不上来到底差在哪。


3月18日,Anthropic工程师Thariq发了一条长推,标题就叫_《Lessons from Building Claude Code:How We Use Skills》_。他们内部已经有数百个Skill在活跃使用,踩过的坑和总结出来的经验,终于公开讲了一次。


我看完之后有一个很大的触动。不是某个具体技巧,而是让我意识到,大部分写Skill的时候,写进去的东西压根就不是AI需要你告诉它的。


Skill补的不是说明书,是语境


在讲Thariq的五条经验之前,先说一个看似无关但其实特别重要的事。


你有没有想过,传统编程其实是一种非常极端的沟通方式?你必须把输入、输出、参数、条件、流程全部写清楚,少写一个分号程序都会崩。计算机不猜你的意思,你说什么它做什么,一个字都不能省。


但我们人和人之间在团队里干活,完全不是这样的。老工程师会跟你说:这个接口不是不能用,但线上最好别这么调。产品经理会说:这个需求文档写的是A,但老板真正想要的是B。


这些话你在任何文档里都找不到。它们只存在于经验、默契、口头传授,和一堆做久了就知道的判断里。


学术上有个说法叫“高语境沟通”。Edward T.Hall在上世纪提出的框架:低语境沟通依赖字面信息,高语境沟通依赖共享背景、默认规则和隐含共识。你跟一个合作了三年的同事说老规矩处理一下,他立刻知道该怎么做。但你跟一个新来的实习生说同样的话,他会一脸懵。


你现在调教的Skill,就是那个实习生。


API文档、代码示例、技术教程,这些写得明明白白的东西它都知道,甚至比你记得还清楚。但一旦进入真实工作流,卡住它的恰恰是那些高语境信息:你们团队真正的验收标准是什么、哪个图表才是组织里公认的“准口径”、哪些步骤文档上没写但必须额外核验。


所以很多Skill之所以不好用,是因为大家写进去的,仍然是模型本来就知道的东西,本质上等于又喂了它一份已经吃过的饭。那些低语境的、写在明面上的知识,模型原本就会。你多说一遍,它也未必做得更好。


第一:Anthropic内部最看重的,是“坑”


那应该写什么?


Thariq在推文里说了一句话,我觉得含金量很高:“一个Skill里信息密度最高的部分是坑点总结。”


因为Claude本身已经知道很多东西了。你写一个Skill告诉它“这个SDK的init方法接收三个参数”,大概率它已经知道了,这种信息它在预训练数据里见过无数遍。


但如果你告诉它:“我们这个审批流程,文档里标的是可选,但实际上必须走。不走这一步,后面的权限审核会直接卡住。”——这种信息它查遍全网也查不到。因为这根本就是你们自己定的规矩,不在任何公开文档里。


这就是坑。这就是高语境知识。


回头看我们之前翻书那个案例,翻译Skill里最有用的部分是什么?不是“怎么调用LinguaGacha”这种流程说明,而是“50并发会炸API”,这些踩过之后才知道的坑。


所以写Skill之前,先问自己一个问题:这里面有多少内容是Claude自己搜不到的?


如果答案是大部分都搜得到,那这个Skill的价值大概率就很有限。说明书是低语境知识,谁都能查到;Gotchas是高语境知识,只有你自己最清楚。Skill真正的价值,就是把后者从你脑子里掏出来,变成AI能读取的格式。


第二:Description字段非常重要


只把经验写进去还不够。一个Skill再有价值,如果它不能在正确的场景里被调出来,效果还是会打折。


这也是为什么Thariq特别强调:description字段非常重要。


很多人写Skill,花了很多心思在正文内容上。流程写得很详细,步骤列得很清楚,参考文档也附上了。但description字段随手写了一句“这是一个翻译工具”就完事了。


问题是,description字段不是给人看的摘要,是给模型看的触发条件。Claude Code启动的时候,会扫描所有可用的Skill,读的就是这个,然后根据用户当前的请求,判断要不要激活某个Skill。


所以,Description写得好不好,直接决定了这个Skill会不会在该出现的时候出现。


你写“这是一个翻译工具”,模型看到用户说“帮我翻译这篇文章”的时候可能会激活。但用户说“把这个英文PDF转成中文”呢?说“这个论文能不能出个中文版”呢?


这些都是翻译场景,但如果description写得太窄,模型就匹配不上。


反过来,如果description写得太宽,比如“处理各种文本任务”,那用户随便说句话它都可能跳出来捣乱。


好的description应该像一个精准的if条件:


当用户需要翻译英文文档(PDF/DOCX/EPUB/网页文章)为中文,包括学术论文、书籍、长文翻译、术语密集型内容时触发。不适用于日常短句翻译或口语化翻译。


你看,该触发的场景列清楚了,不该触发的场景也排除了。


这个细节看起来小,但当你手上有十几个Skill的时候,差别会非常明显:description写得好的Skill,你提需求它就自动出来干活;写得差的,你每次都得手动指定。


第三:让Skill自己记住上次干了什么


不过,能在对的时候被触发,仍然只是第一步。


一个助手真正开始“顺手”,不只是因为它知道你们怎么做事,还因为它记得上一次已经做到哪一步。


这也是Thariq那条推里我觉得最被低估的一点:Skill可以有自己的记忆。


最简单的做法:就是在Skill目录下放一个日志文件,每次执行完往里面追加一条记录。下次执行的时候,AI先读一遍日志,就知道上次做了什么。


复杂一点:放一个JSON文件,记录结构化数据。再复杂一点:放一个SQLite数据库。


这件事为什么重要?因为很多传统AI助手最让人抓狂的问题就是:每次都像第一次见你。你昨天让它写过日报,今天它又从零开始猜你的格式。你上周让它跑过一套数据分析,这周它又像失忆了一样问你“数据在哪”。


有了Skill内记忆,情况就变了。


Thariq举了个例子:一个standup-post Skill,每天帮你写站会日报。如果它保留了之前每天的日报内容,那第二天它运行的时候就不只是“生成一份新日报”,而是能知道:今天和昨天相比,真正新增了什么、哪些任务从“进行中”变成了“已完成”、哪些卡了两天还没动。


这才是有用的日报,只写发生了什么变化。


我们自己做新闻选题系统的时候也有类似体会。如果选题Skill不记得昨天推荐过什么,今天就可能推荐一模一样的选题。但如果它能读到自己的历史记录,就会自动跳过已推荐的,只推新的。


这种“记忆”不需要多高级。一个append-only的文本文件就够了。关键是意识到:Skill不只是一次性的指令集,它可以是一个有状态的工作助手。


每次执行完,让它把关键信息写进日志。下次执行前,让它先读日志。就这么简单的一个循环,效果天差地别。


第四:Skill的威力不在那份markdown,在于整个文件夹


这一条是我自己体会最深的。


你用过一段时间Skill就会发现,一份markdown写得再好,能承载的东西也有限。你没法在一段文字描述里把一个查询逻辑说清楚,也没法用文字精确定义一份报告该长什么样。


Thariq举了个例子。假设你做数据分析,经常需要从公司的事件系统里拉数据。每次你都要告诉AI:“先连这个数据库,用这个查询语句,然后按这个格式输出。”累不累?累。而且AI每次重新写查询,写出来的还不一定对。


但如果你把这些操作封装成几个Python函数,放在Skill的scripts/目录下。那AI在执行的时候就不需要从头写查询逻辑了。它只需要决定:先调哪个函数、传什么参数、结果怎么组合。


让Claude把精力花在决策上,而不是重建轮子上。


同样的道理,如果你的Skill最终输出是一份特定格式的报告,你可以在assets/目录下放一个模板文件。AI看到模板,就知道该往里填什么、格式长什么样。比你在markdown里用文字描述格式要准确十倍。


还有一种更高级的用法:放参考代码。比如你们团队有一套代码风格,光靠文字描述很难说清楚,但放三个写得好的文件进去,AI一看就懂。


这个思路其实就是Thariq说的“渐进式上下文披露”。你不需要把所有信息都塞进主提示词里,那样又长又乱。把详细内容拆到不同文件里,告诉AI这些文件在哪、分别是干什么的。它会在需要的时候自己去读。


用高低语境的框架来看,这其实就是在帮AI建立“共享背景”。


就像一个成熟团队不会把所有规范写进一封超级长的邮件里。而是有文档库、有脚本、有模板、有checklist。Skill本质上就是把这套东西做成AI能直接调用的工作环境。


第五:但只有能力还不够,还要有边界和护栏


不过,一个真正可用的工作环境,不能只有能力,没有约束。


如果scripts、模板、参考代码解决的是“AI能不能做”,那钩子机制解决的就是“AI会不会乱做”。


Thariq提到,Claude Code的Skill可以注册“on-demand hooks”,也就是临时钩子。这些钩子只在Skill被激活的时候生效,Skill结束就自动关闭。


比如你有一个叫/careful的Skill。激活之后,它会挂一个PreToolUse钩子,拦截所有危险操作:rm-rf、DROP TABLE、force-push、kubectl delete。你碰生产环境的时候开一下,它就像一个安全锁,AI想执行危险命令的时候会被拦住。平时不开,不影响正常工作。


再比如一个叫/freeze的Skill。激活之后,AI只能编辑指定目录下的文件,其他地方碰都不让碰。你在调试的时候特别有用。你想加几行log,但不想AI顺手"修"了别的文件。开了/freeze,它就只能在你指定的范围内活动。


这个设计特别巧妙。因为大多数人写Skill的思路是“告诉AI该做什么”。但临时钩子反过来,是“告诉AI什么绝对不能做”。


前者是引导,后者是护栏。两个都有,才算一个完整的工作环境。


想想你带一个新人。你不光要告诉他“你的任务是什么”,还要告诉他“这几台机器千万别碰”。Skill加上钩子,就是在做同样的事情。


9类Skill,背后只有一个判断标准


除了这些实用技巧,Thariq还透露了Anthropic内部管理Skill的方式。Thariq还分享到,Anthropic内部把几百个Skill归成了9类:


  1. 库和API参考——教AI用你们内部的SDK


  2. 产品验证——让AI自己测试自己写的代码


  3. 数据获取与分析——连接你们的数据和监控系统


  4. 业务流程自动化——把重复的团队流程一键化


  5. 代码脚手架——生成符合你们规范的项目模板


  6. 代码质量与审查——自动化code review


  7. CI/CD与部署——从构建到发布到回滚


  8. Runbook——从报警信号到排查到出报告


  9. 基础设施运维——清理、成本分析、依赖管理


类别很多,但最好的Skill都只落在一个类别里。如果一个Skill既想当教程,又想当自动化工具,还想当审查员,最后往往什么都做不好。


背后其实只有一个判断标准:这个Skill到底是在补“知识差”,还是在补“执行差”。


补知识差的,重点写坑、写边界、写反例;补执行差的,重点给脚本、给验证工具、给自动化流程。搞清楚这一点,你就知道自己的Skill里该写什么、不该写什么。


特别值得一提的是验证类Skill。Thariq也着重强调了一句话:如果验证Skill做得好,值得一个工程师花一周时间专门打磨。


一个好的验证Skill可能包括:浏览器自动化脚本、测试账号、状态断言规则、甚至让AI录一段操作视频以便你事后检查。生成能力决定AI能做多少事,验证能力决定你敢让它做多少事。差距就在这。


Skill商店已经开始出现了,但质量战才是重点


Thariq还透露了Anthropic内部管理Skill的方式。


他们没有一个中央团队来审批。而是让Skill自然生长。


你觉得好用,先放到GitHub的沙盒文件夹里,在Slack里告诉同事。有人用了觉得好,口碑传开了,再提PR进入正式的Skill marketplace。


这个模式特别像早期App Store。先让数量爆发,再靠口碑和使用数据做淘汰。


但Thariq也提了一句警告:创建糟糕或冗余的Skill太容易了。确保你有某种策展机制再上架。


这跟我们之前文章里观察到的一模一样。SkillsMP上的Skill数量增长很快,但质量参差不齐。有些Skill就是把官方文档复制粘贴进去,description写得模糊不清,根本不可用。


数量先爆、质量后补、优胜劣汰。这条路App Store走过,小程序走过,现在Skill生态也在走。


他们内部还用PreToolUse钩子做了使用统计,能看到哪些Skill被调用得最多、哪些Skill触发率低于预期。这意味着Skill的好坏不再靠感觉判断,而是有数据可查。


对普通开发者来说,这条信息的意义是:如果你做了一个Skill放到GitHub上,别人用不用、好不好用,将来是可以被量化的。这也意味着,做Skill的门槛虽然低,但做好Skill的标准正在变高。


回到最初的问题:为什么你的Skill不好使?


把Thariq的经验总结和高低语境的框架放在一起,答案其实很清楚了。


不好用的Skill,写的是低语境信息。功能介绍、API文档、操作步骤。这些东西模型本来就知道,你多写一遍它也不会做得更好。


真正让Skill好使的,是高语境信息:你们团队特有的坑、你们自己的验收标准、那些“做久了就知道”的默认规则、“这个命令千万别在生产环境跑”之类的护栏。


这些东西没法从预训练里学到,没法从官方文档里抄到,只有你自己最清楚。


Claude Code之所以会让人觉得越用越顺手,就是因为Skill开始承载越来越多团队自己的语境、经验、工具和边界。


所以写Skill的正确顺序应该是:


第一步,别急着写说明书。先列出你们团队在这类任务上踩过的10个最大的坑,写进Gotchas。


第二步,把description当触发条件写,而不是当简介写。想清楚这个Skill该在什么场景下被自动调出来,什么场景下不该出现。


第三步,给脚本、给模板、给参考代码,而不只是给文字。让AI把精力花在判断和组合上,而不是花在重建轮子上。


第四步,加记忆。哪怕只是一个日志文件,让Skill知道上次做了什么,这次该做什么不一样的。


第五步,加护栏。不光告诉AI该做什么,还要告诉它什么绝对不能做。


这五步做完,你的Skill就是一个有知识、有工具、有记忆、有边界的工作环境。


说白了,你在做的事情,是把你脑子里那些高语境的、只可意会的工作经验,翻译成一种AI能接住的格式。


模型决定AI能想多远。Skill决定AI能干多稳。而Skill的质量,取决于你往里面装了多少只有你才知道的东西。

AI原生产品日报频道: 前沿科技
本内容来源于网络 原文链接,观点仅代表作者本人,不代表虎嗅立场。
如涉及版权问题请联系 hezuo@huxiu.com,我们将及时核实并处理。
正在改变与想要改变世界的人,都在 虎嗅APP