
最近一段时间“skills”这个词在AI编程圈里的出现频率高得吓人。从Claude Agent Skills到Codex Skills再到GitHub上被疯狂收藏的skills合集几乎每隔几分钟就能刷到一条相关讨论。很多人的第一反应是这不就是让AI多几个工具吗但你要是真的跟着社区里的分享去试一次就会发现完全不是这么回事——一个设计良好的Skill能让原本需要几十条提示词来教AI做的事变成一次简单的“调用”而且结果比临时发挥要稳得多。这篇文章就是想把“skills”这件事彻底讲透它到底解决了什么问题、一个标准的Skill由什么构成、从零开发一个前端类的Skill要经过哪些步骤、以及我在实际使用中踩过的坑。不管你是刚接触Agent的新手还是已经在写各种自定义Instruction的老手这篇都能给你一些能直接落地的东西。1. 从一个概念说起Agent Skills到底是什么1.1 从工具到技能AI能力的边界扩展先说你最熟悉的情况。以前我们让AI做事靠的是对话里反复描述目标或者给它一堆工具函数让它在代码里调用。工具调用解决的是“能不能做”的问题但AI并不清楚什么时候该用、用完之后下一步该干嘛。举个生活化的例子螺丝刀是工具而你脑子里那套“拆开电脑后盖、找到内存插槽、换上新内存、再装回去”的流程是技能。Agent Skills要封装的就是后者。Skills本质上是一种可复用的“任务执行包”。它能包含说明文档、脚本、模板、参考示例甚至是一整套检查清单。Agent通过读取这个包能快速理解一项任务的完整上下文而不是每次都在有限的上下文里重新摸索。这也是为什么现在各大Agent产品都在推Skills——它让AI更像是带着“工作经验”上班的同事而不是一个只会回答问题的聊天框。1.2 一套Skills的标准构成目录、描述与执行逻辑从实际开发角度看一个最常见的Skills目录结构长这样skills/ ├── my-skill/ │ ├── SKILL.md │ ├── scripts/ │ │ └── run.py │ ├── templates/ │ │ └── demo.txt │ └── references/ │ └── best-practices.md其中SKILL.md是灵魂后面会详细说。scripts用来放真正会被执行的可执行脚本templates放生成文件的模板references放一些参考资料Agent在需要时可以“按图索骥”。这里有个很容易被忽略的点Agent决定要不要加载某个Skill依靠的是SKILL.md里的description和正文而不是文件名。换句话说如果你描述写得含糊Agent可能永远都发现不了它。很多人写完Skills丢进目录就不管了结果测试时发现Agent根本不用大部分问题都出在这。1.3 为什么2025年Skills突然成了热词细看最近的热搜词“agent skills测试”“find skills”“skills推荐”几乎每天都在换花样但核心就一件事大家发现写好的Skills可以像模块一样复用而且跨项目、跨团队共享。之前微调一个模型或者维护一套RAG知识库太重了Skills用纯文本加脚本就能完成“技能注入”几十KB到几百KB的文件就能让Agent获得一个新能力。另一个推动力来自生态Claude把Skills做成了官方支持的功能Codex也跟进GitHub上第三方skills仓库如雨后春笋。甚至有人开始把自己常用的Skills打包上架到共享市场这本质上就是“AI技能包”的雏形。你会发现“skills”已经从动词变成了名词成了一个被反复讨论的生态位。2. 从零开发一个前端Skills目录规划到落地测试2.1 需求拆解做之前先想清楚这几个问题写Skills最忌讳上来就开写。你先把目标任务拆成Agent需要执行的几个环节。比如我想做一个“自动生成React组件”的Skill那首先明确输入是什么用户给组件名、样式偏好、是否包含测试。输出是什么一个tsx文件、一个样式文件、一个测试文件。拆完环节再想边界哪些事由Skill里的脚本自动做哪些事该让Agent自己发挥比如样式文件可以用模板生成但组件内部的业务逻辑最好交给Agent根据需求填写。把边界想清楚Skill才能做到“大部分情况稳定少部分情况可扩展”而不是一遇到意外就崩。假如你连第一步都没想明白就开始写SKILL.md很容易出现两种情况要么描述得特别空Agent根本不知道这个Skill能干嘛要么描述得太死稍微换个需求就触发不了。我习惯在动手前打开一个空白文档先用三行字写下“输入是什么、输出是什么、哪些步骤必须固定”写清楚了再进入下一环节。2.2 SKILL.md怎么写frontmatter和正文的规范SKILL.md最关键的头部信息是这样的--- name: react_component_generator description: 当用户需要创建新的React组件时使用。输入组件名称和可选的需求描述生成tsx、css、test三个文件。适用于函数组件不支持class组件。 --- # React Component Generator ## 输入 - component_name: 组件名PascalCase - style: 可选默认css modules - with_test: 是否生成测试文件默认true ## 执行步骤 1. 读取 template/component.tsx.tpl 2. 替换模板中的占位符 3. 生成到 src/components/{component_name}/ 4. 如有需要用 scripts/add_stories.py 生成stories文件 ## 输出 - {component_name}.tsx - {component_name}.module.css - {component_name}.test.tsx ## 约束 - 只支持函数组件 - 不使用任何第三方UI库 - 生成文件后必须提醒用户检查依赖这个示例里有几个常见技巧description用“当……时使用”句式把触发条件放在最前面正文用结构化列表告诉Agent执行顺序约束部分相当于给Agent设了边界避免它发挥过头。这些内容最终都会进入Agent的上下文写得越清晰执行越稳定。2.3 description的艺术如何让Agent精准触发很多人以为description就是给AI介绍一下这个Skill其实它是进行“路由决策”的依据。你想象一下Agent每轮都在做一个选择题根据当前用户需求该调用哪个Skill如果description里没有明确的触发词或场景Agent就会犹豫甚至跳到另一个错误的Skill。几个我自己验证过好用的写法明确使用场景“当用户要求生成一个React组件时使用”明确排除场景“如果用户只是想修改样式不要使用此Skill”提供示例输入“例如生成一个名为UserCard的组件带灰色边框和hover阴影”说明输出格式“输出必须包含三个文件并给出文件路径”这里再提一个不算技巧但很容易忽略的点description别写太长。Agent的上下文有限description过长会挤占后续脚本输出的空间一般120字以内最合适。我见过有人把description写成一篇小作文结果Agent每次调用都产生大量无效上下文不仅响应变慢还容易跑偏。2.4 本地测试与调试怎么验证一个Skill真的能用写完Skill先别急着让生产Agent用。我自己习惯的流程是用支持Skills的CLI环境加载本地目录然后模拟几类典型输入去调。比如React组件生成Skill我会分别测正常组件名、带样式描述、要求生成测试文件、故意给一个不存在的组件名。测试时务必打开日志或verbose模式。我遇到过最典型的坑是脚本路径问题SKILL.md里写的执行命令是bash run.py但Agent执行时的工作目录并不是skills目录脚本找不到报错报得莫名其妙。后来我在脚本开头加了一行os.chdir(os.path.dirname(__file__))用脚本自身所在目录作为基准路径问题就消失了。这个细节值得记一下。另一个调试技巧在SKILL.md里给Agent留一个“检查点”。比如生成完文件后让Agent输出一个结构化清单列明生成了哪些文件、是否完成约束检查。这样你一眼就能看出Agent有没有按你的预期走完流程而不是等它闷头执行完才发现结果不对。3. 高频问题排查为什么你的Skill就是不生效3.1 Agent总是不调用Skill怎么办这是我在各个社群看到被问得最多的一个问题。排查顺序如下可能原因表现对策description触发词不清晰Agent回答得很泛没有调用迹象重写description增加明确场景和排除边界Skill目录不在加载路径日志里完全搜不到Skill名检查配置文件里的skills路径确认是绝对路径或正确相对路径上下文被其它内容挤占输入一长Agent就开始“自创”流程精简其他Instruction给Skill留出上下文SKILL.md格式错误加载时报错或Agent不识别frontmatter用Markdown解析器检查确保yaml缩进正确其中第三种最隐蔽。有些项目会在系统Prompt里塞特别长的背景说明Skills的description反而成了“小透明”。遇到这种情况强烈建议把一些冗长的背景说明改成独立的reference文档让Agent按需检索而不是全量灌进上下文。还有一种情况是Agent“触发了但没用对”。比如description写的是生成React组件但用户说“写一个React页面”Agent可能觉得页面和组件不是一回事就放弃调用。这时候我会在description里加一条“也可以用于创建页面级组件”把相近场景都覆盖到。说白了description也是在帮Agent降低决策成本。3.2 执行环境的依赖坑Skills里的脚本往往依赖Python、Node或者一些第三方库。最常见的问题是Agent能读到Skill文件但执行脚本时环境不对要么包没装要么权限不足要么路径空格导致命令解析出错。我现在的习惯是在SKILL.md里单独写一个“依赖”小节把需要的环境和安装命令列清楚。比如## 依赖 - Python 3.10 - pip install pandas requests - 如果使用MacOS需要注意xxxx然后用一个bootstrap脚本或初始化命令先跑一遍依赖检查并输出“环境检查通过/失败”。这样Agent在执行前就能判断当前环境是否可用而不是一上来就报错。很多踩过坑的开发者后来都默认加这个环节真的能省很多事。另外如果你把Skill分享给团队其他人他们机器上的Python版本、Node版本很可能和你不一样。这时候在SKILL.md里写明最低版本要求就显得格外重要。不要指望每个Agent都能自己装依赖写清楚等于把不确定性提前消灭掉。3.3 跨模型和跨平台复用时的兼容性当前市场上有Claude Agent Skills、Codex Skills还有很多第三方Agent框架也支持类似机制。格式上大同小异但细节经常不一致有的要求SKILL.md必须有description字段有的更较真frontmatter的name字段是否与目录名一致有的对Markdown里的脚注支持很弱。如果你希望一个Skill四处跑有几个通用原则第一脚本用纯Python或通用shell避免依赖特定平台路径第二SKILL.md里尽量用标准Markdown不要用复杂内嵌JS或图片第三所有资源文件都通过相对路径引用而不是写死绝对路径。满足这三点你写的Skill几乎可以零成本移植到不同Agent产品。我还试过把同一个Skill在Claude和Codex里分别跑发现最大的差异是对“步骤”的理解。Claude更倾向于严格按SKILL.md里列出的步骤执行而Codex偶尔会自己优化过程跳过一些看起来不重要的环节。解决办法是在约束部分明确写上“不要跳过任何步骤即使你认为它们不必要”。这种细节听起来很傻但在跨模型复用时会救你一命。4. 如何高效选择和下载Skills少走弯路的判断标准4.1 正规的Skills来源渠道怎么找现在网上搜“skills下载平台”能搜出一堆结果但鱼龙混杂。我最常用的渠道其实还是三个官方市场、GitHub星标仓库、技术社区的热门分享帖。官方市场的优点是经过基础审核结构相对规范GitHub上能找到大量带示例代码的完整项目很多作者还会写配套说明文档社区分享帖则能看到真实使用评价比单纯看star数量更可靠。当然GitHub上也不是所有skills仓库都值得下。有些仓库只是堆了一堆零散文件没有目录说明没有更新记录甚至没有测试案例。这种仓库下载下来大概率是“躺尸”。我一般先看仓库的README是否解释了每个Skill的适用场景再看最近commit时间最后看有没有人提issue。如果三个条件都不满足果断绕开。4.2 判断一个Skills值不值得用的三个维度第一个维度是“可解释性”打开SKILL.md是否能在三分钟内看懂它打算做什么。如果读了两段还不知道输入输出是什么说明作者自己都没想清楚这种Skill用起来会非常惊吓。第二个维度是“可维护性”Skill里是否写明了依赖、约束和适用范围。一个负责人的作者会在SKILL.md里写清楚哪些情况不符合而不是让你碰运气。第三个维度是“场景契合度”这个Skill是不是你真正高频遇到的场景。我见过有人下载了上百个Skills真正用的不超过五个因为大多数只是“看着有用”。4.3 安装之后必须做的三件事下载完Skill不要直接丢进目录就完事。第一件事是本地跑一遍测试用例哪怕没有测试用例也要手动模拟一次输入输出确保在当前环境下能跑通。第二件事是打开SKILL.md按你的需求微调description和约束条件因为别人的场景和你不完全一样直接套用很容易出现“触发不准”的问题。第三件事是记录你使用这个Skill时出现的偏差。我通常在SKILL.md末尾加一个“Changelog”小节每次调整都追加一行哪一天、改了什么、原因是什么。这样过两个月再看你的Skill已经从原始版本进化成了完全符合你工作流的版本这种积累感比反复去找新工具强得多。5. 我私藏的高效Skills清单与思路拆解5.1 日常开发类从代码评审到文档生成Skills并不都是高大上的自动化流水线很多小而美的技能反而提升最明显。举几个我常用的Skill名称解决的问题设计要点code_reviewer自动按团队规范审查代码在SKILL.md中内置团队规范要点通过脚本统一输出审查报告migration_helper处理老接口到新接口的迁移用模板记录常见映射确保替换时不遗漏changelog_writer根据git diff生成CHANGELOG通过脚本读取diffAgent负责归纳和分类以code_reviewer为例这个Skill本质上把“团队Code Review规范”变成了Agent的检查清单。它的SKILL.md里除了规范还包含一个输出模板让Agent必须按“严重程度、问题位置、建议修复方式”的格式返回结果。你会惊讶地发现当检查点足够明确时Agent找问题的命中率并不比人差多少。还有一点值得说这类Skills最容易被忽略的是“团队规范本身就是参考文档”。如果你把一份20页的团队规范全文塞进SKILL.mdAgent的上下文会被撑爆。我通常在SKILL.md里只保留核心十条规则其余放进references目录需要时再去查。这样既能保证主要判断不被冲淡又不至于丢失细节。5.2 授权安全测试类如何设计一个合规的“自动扫描”技能“自动挖洞skills”这个词会出现在热搜里并不意外但我必须强调一句任何安全测试都必须在获得授权的前提下进行Skill只是把流程固化了不等于你可以拿它到处乱扫。合规边界的把控永远是第一位的。这类Skill的设计思路其实和上面一样只是检查清单更讲究。比如一个“越权漏洞检测Skill”它的SKILL.md里会要求Agent先读取目标授权文件只有确认授权范围才继续执行并限制扫描目标同时把请求频率控制写进约束里避免影响目标服务。整个过程其实就是在帮Agent建立一套“专业测试人员应有的操作习惯”。如果你想自己开发这类Skill我建议先从“把规范检查自动化”开始而不是一上来纠结攻击向量。可以写一个检查HTTP响应头是否缺失的Skill再慢慢加状态码分析、逻辑漏洞判断。自动化的价值在于让Agent能稳定地跑完一个完整的测试流程而不是撞运气式地发现几个漏洞。在授权范围内这种Skill才能成为团队的安全杠杆。5.3 内容创作类用分镜Skills打破“创意冷启动”另一个让我意外高频使用的内容创作类Skill是分镜写作。以前写短视频脚本最头疼的不是文案而是分镜结构这个镜头到底该给特写还是全景转场要不要加速现在我把一套“短视频分镜规则”写进Skill包括景别选择、运镜逻辑、时长分配表Agent直接用这套规则帮我把文案拆成一个个分镜卡片。比如我设计的storyboard_builder Skill会要求输出一张这样的表格镜号、景别、画面描述、台词、字幕、备注。因为表格结构固定Agent生成的分镜非常规整剪辑那边拿来就能用。这也再次印证了一个观点Skill的核心价值在于“把你擅长领域的隐性经验显性化”而不一定非得是代码自动化。分镜Skills还有一个意外收获因为规则被写死了团队里的新手也能用这个Skill独立产出及格线的分镜。以前带新人要反复讲景别、讲节奏现在让新人先跑一遍Skill再针对偏差做指导效率完全不一样。这也是我觉得Skills未来会越来越像“团队资产”的原因所在。6. 我的真实体会Skills生态会走向哪里6.1 和Plugin、MCP的关系先说一个我自己的判断Skills和之前的Plugin、MCP不是替代关系而是不同维度。Plugin更像是给Agent装上外部能力比如查天气、订机票MCP解决的是Agent和外部工具之间的标准化通信而Skills更像是在给Agent“上课”把一套完整的工作方法直接塞进它的脑子里。它们可以组合使用比如一个Skill里的流程文档加上MCP提供的工具接口再加上几个独立插件能力边界一下子就拓宽了。我在实际项目里经常这么配用MCP接入内部API用Plugin处理文件格式转换然后最上层的决策逻辑全部放在SKILL.md里。三者的边界很清楚MCP负责“能连什么”Plugin负责“能做什么”Skill负责“怎么做最好”。如果只用一个概念去框住所有东西反而会把自己的思路限制住。6.2 持续积累和管理你自己的Skills库写Skills最有价值的部分反而不是“让Agent更听话”而是逼着你自己把repeatable的工作拆成流程。当你为了给Agent写一份清晰的SKILL.md反复琢磨步骤、输入、输出和边界时你其实是把脑子里模糊的经验变成了结构化资产。这套资产不仅Agent能用团队也能用甚至新人培训都可以直接拿它当教材。我目前的习惯是每个季度做一次Skills库存盘点哪些Skill超过三个月没用过删掉哪些Skill运行过程中经常出现偏差重写哪些场景反复被提起但还缺一个Skill记下来变成下一个待办。这种迭代过程听起来很费时间但坚持下来之后你会在不知不觉中积累起一套很独特的私有库。它不是网上那些通用技能的简单复制而是真正长在你工作流里的东西。如果你现在还没写过Skills我建议你从一个最日常、你最有把握的小任务开始不要一上来就去搜一堆别人的技能包。先自己写一个跑通流程再去看社区那些被疯狂推荐的Skills理解它们的结构为什么这么设计。这比直接下载一百个Skills到目录里扔着吃灰有用得多。Skills这个生态还在快速演进但底层的逻辑——把经验打包成技能让AI按流程执行——已经是确定的方向了。