兄弟们,最近AI编程圈子里有个词出现频率高得吓人——skills。如果你还在用Claude Code或者Codex跑项目,大概率已经遇到过“这个skills怎么装”“那个skills好不好用”的讨论。我自己是从今年年初开始认真玩这东西的,从最开始一脸懵,到后来能自己写skill、给团队搭了一套代码审查流程,中间踩了不少坑,也摸出了一些门道。
这篇文章我不打算写那种四平八稳的科普,就从一个实际用的人的角度,把skills到底是什么、为什么2025年突然全都在聊、怎么装怎么用、以及怎么开发自己的skill,一次讲透。适合正在用AI编程助手、但对skills概念还比较模糊的人,也适合已经装了但不知道怎么深度定制的人。读完你至少能搞清楚:这东西和prompt有什么区别,为什么说它是Agent能力的“肌肉记忆”,以及你自己动手写一个skill需要哪几步。
1. skills到底是什么,为什么2025年突然火了
1.1 从prompts到skills:一次能力抽象层的跃迁
先说个最直观的场景。以前我用Claude Code干活,每次让它分析项目结构,都要在对话里贴一遍“请先读取xxx目录下的配置文件,然后按照xxx顺序检查依赖关系”这类长指令。麻烦不说,换一个项目、换一个模型,这套规则又得重新调。后来我意识到,真正好用的AI辅助,应该是把这类高频、可复用的工作流沉淀成一个个独立的能力模块——这就是skills的核心思路。
讲得直白一点,prompt是“告诉模型这一次该怎么想”,skill是“告诉模型这一类任务该怎么做”。它不是一段对话里的临时指令,而是一套有目录结构、有描述文件、有可执行脚本的完整能力包。用健身来类比很贴切:prompt像是教练在旁边喊“再来一组”,skill则是你自己练出来的肌肉记忆——动作规范、反应快、不需要每次重新学。
这个抽象层的价值,用的时候才感受得到。我试过在一个大型前端项目里把“规范检查”“单元测试生成”“依赖分析”分别做成skill,之后每次开会前的代码走查,AI直接按预设流程跑,产出的报告结构稳定、维度统一,不再像以前那样“这次聊到哪算哪”。这就是我认为agent skills能在2025年集中爆发的原因——大家发现光靠“更长的上下文”和“更好的模型”解决不了流程复用的问题,得从工程层面把能力沉淀下来。
1.2 skills、prompts和MCP到底有什么不一样
这是新手最容易混淆的一组概念。我自己的理解是:prompt是对话策略,MCP是工具接口,skills是工作方法论。三者解决的问题层次完全不同,但很多文章把它们混在一起讲,导致读者越看越糊涂。
先说prompt。它是每次和模型交互时的文本输入,解决的问题是“如何引导模型理解当前意图”。优点是灵活,缺点是临时——换一个任务、换一个场景,这份引导就失效了。再比如MCP(Model Context Protocol),它解决的是模型和外部系统之间的连通问题,比如让Agent能查数据库、调API、读文件系统,本质上是把“手”伸出去。但MCP不告诉你“先查什么再查什么”,也不负责“判断什么场景该查”。
skills恰恰补的是这一层。一个完整的skill往往包含描述文件(告诉Agent什么时候该用它)、指导文档(告诉Agent执行步骤)、甚至附带可执行脚本(在需要时自动化处理)。举个例子,我写过一个做前端性能审计的skill,它的描述文件里写明“当用户提到页面卡顿、性能分析、Lighthouse评分时触发”,指导文档里规定“先检查关键渲染路径→再分析打包体积→最后扫描未优化的图片和请求”,脚本部分则自动跑一遍收集数据。这一套下来,prompt只负责触发,MCP负责拿数据,方法论全在skill里。
所以选型时的判断标准很清晰:如果只是想让某个对话更听话,优化prompt够了;如果要让Agent能操作外部系统,上MCP;如果想把一整套专家流程固化下来、让不同模型都能复用,那就得好好研究skills。现在GitHub上搜索“coding skills”“claude code skills”这类关键词,仓库数量已经多到需要认真筛选,热度是实打实的。
2. 生态现状:哪些平台和仓库值得关注
2.1 主流Agent工具的skills实现方式
先盘点一下我实际用过、也关注了很久的几个主流工具。OpenAI的codex skills,属于起步比较早的,它在Codex CLI里直接支持@命令加载技能包,安装路径清晰,社区贡献量也大。Anthropic的claude code skills势头很猛,和Claude Code的工作流绑定得深,尤其是处理多文件项目时表现稳定。另外还有opencode skills,如果你是开源爱好者、喜欢高度定制自己的AI编程环境,这家的实现思路值得看。
这三个平台的skills机制各有侧重。Codex那边更偏“命令即入口”,适合快速调用某个技能;Claude Code这边更偏“上下文感知”,Agent会自己判断当前任务是否匹配某个skill;OpenCode则更极客,反正一切都可配置。如果你是刚开始接触,我建议别贪多,先选一个主用的工具,把它的skills机制吃透,再横向对比。
我在团队内部其实同时跑了Codex和Claude Code两套环境,同一个需求类别的skill,两个平台上我都装了,目的是对比体验。实测下来,claude code skills在“复杂指令跟随”上更细腻,而codex skills在“工程集成”上更立体,各有优势,没有绝对的谁取代谁。
2.2 高频出现的npx skills add到底是干什么的
很多朋友卡在安装这一步,看到npx skills add sandai-org/vidmuse-skills --agent claude-code -g -y这行命令就蒙了。其实拆开看,这条命令的本质是:从GitHub仓库拉取一组skills,然后通过协议把注册信息写入当前Agent的配置中。npx是执行入口,skills是CLI工具名,add是子命令,后面跟的仓库地址指定了技能包的来源,--agent参数告诉工具当前要装给谁用,-g代表全局安装(即对所有项目生效),-y是跳过交互确认,全自动执行。
这个npx skills工具本身,有点像软件包管理器里的npm,只不过它管理的是AI的技能包。它为整个skills生态提供了一个公开的安装、分发、注册机制,这也是为什么现在推荐一个skill,大家会直接甩一条npx skills add命令而不是让你去手动拷贝文件夹。它的好处是显而易见的:可追溯版本、可一键升级、可集中管理。尤其当你的机器上同时有Claude Code和Codex时,用同一个CLI工具统一管理技能包,比手动翻目录高效太多。
顺便多说一句,安装时如果遇到网络问题,别慌。多数情况不是工具的问题,而是源地址访问受限。国内用户常见的做法是配置代理或者用镜像源,什么“npx skills怎么源码安装”的问题,本质上是想在离线环境下手动搞定——后面我专门有章节讲这条路怎么走。
3. 实操:从零开始装一个skills并用起来
3.1 环境准备与前置条件
动手之前先自查三件事:第一,确认你本机的Node.js版本在18以上,因为npx skills这个CLI工具依赖较新的运行时;第二,确认你用的Agent工具(Claude Code或Codex)版本足够新,老版本对skills的原生支持很差;第三,准备一个干净的测试目录,别一上来就在生产项目里折腾。
为什么强调这三条?因为我在最早踩过一个巨坑:项目里装了不少依赖,Node版本偏低,结果npx skills add跑完看着像是成功了,但Agent就是识别不到新加的技能。后来排查半天,发现是运行时不兼容,skill的注册信息写进去了但加载器解析失败。所以,前置环境干净、版本够新,能帮你省掉一晚上的排查时间。
检查完环境,建议先跑一条最简单的命令验证CLI工具本身是否可用:
npx skills --help如果你能看到命令列表,说明工具正常;如果报错或者卡住不动,优先检查Node版本和网络。
3.2 三种安装路径:一键、手动与源码编译
路径一:一键安装(最推荐)。直接从社区仓库拉取,命令格式如下:
npx skills add sandai-org/vidmuse-skills --agent claude-code -g -y这条命令会把整个仓库里的skills复制到本地的全局技能目录,并把注册信息写入Claude Code的配置。-g代表全局,如果你只想在某个项目里生效,去掉它就行。
路径二:手动拷贝(适合网络受限)。先找一个网络通畅的机器,git clone目标仓库到本地,再把仓库里的skills子目录手动复制到你当前Agent的配置目录下。以Claude Code为例,技能目录通常位于~/.claude/skills/,把整个文件夹丢进去,重启会话就能识别。这条路径的弱点是需要自己管理版本更新,没有自动升级功能,但胜在完全离线可用。
路径三:源码安装(适合二次开发)。把项目克隆到本地后,先看README确认构建方式,多数需要npm install && npm run build。构建完成后会生成可发布的技能包目录,后续操作和路径二类似,但你可以直接修改源码再重新构建,适合想自己魔改的同学。我在调试opencode skills时就用的这条路,改完立刻跑测试,迭代效率很高。
3.3 安装后的验证与日常使用姿势
装完不是万事大吉,一定要验证。我的验证方法是:新开一个Agent会话,在对话里自然描述一个该skill覆盖的任务,观察模型是否会主动加载它。如果模型无动于衷,检查两件事:一是skill目录的SKILL.md写没写对描述信息(这直接决定模型何时触发它),二是注册信息有没有真正写入配置文件。
日常使用中,我习惯把skills分成三类:通用型(代码风格审查、单元测试生成)、项目型(针对某个仓库定制的分析流程)、个人型(自己总结的高频操作)。分类管理的意义在于,避免一个全局技能库里塞了几十个技能,模型每次都要做“技能匹配”,响应速度反而变慢。别贪多,选精的用。
注意:如果你发现某个skill在某次会话中没有生效,先别急着删。多数情况是因为描述文件里的触发条件写得不够明确,模型没能把当前需求与之关联。手动在对话里提一句“请使用xxx技能”往往就能强制唤醒,这不算bug,是这套机制的固有行为。
4. 开发自己的skills:从编码审查skill的完整设计讲起
4.1 SKILL.md的结构与写法技巧
要开发自己的skill,最核心的文件就是SKILL.md。它通常包含两部分:frontmatter(YAML格式的元信息)和instructions(Markdown格式的指导正文)。元信息里最关键的是name和description,前者标识技能名,后者则是给模型看的“触发说明书”。
我写前端代码审查skill时,description是这么写的:Use this skill when the user asks to review frontend code quality, check for common bugs, performance issues, or style violations in JavaScript/TypeScript projects.看到没有,里面全是“use when”开头,把可能触发它的场景尽可能枚举出来。很多新手把description写得像论文摘要,模型根本不知道什么时候该用,这个skill就废了一半。
目录结构方面,一个标准的skills文件夹长这样:
frontend-review/ ├── SKILL.md ├── scripts/ │ ├── check-deps.js │ └── analyze-bundle.mjs ├── templates/ │ └── review-report-template.md └── reference/ └── style-guides.mdSKILL.md是入口;scripts放可执行的自动化脚本;templates放输出模板;reference放参考资料。这个结构不是强制规定,但按照社区公认的方式来组织,能确保不同工具的兼容性。
4.2 从一次完整的编码审查流程看skill设计逻辑
设计一个skill,本质是把你脑海里的专家工作流“翻译”给Agent。拿编码审查为例,我规定Agents按以下顺序执行:
- 收集上下文:先读取项目根目录下的
package.json、tsconfig.json、AGENTS.md等配置文件,理解项目的技术栈和约束条件。 - 扫描改动范围:通过
git diff获取当前分支与主分支的差异文件,只审查有改动的部分,避免全量分析浪费时间。 - 分维度执行检查:先跑静态检查(规则引擎检测),再做依赖分析(找版本冲突和冗余包),最后手工阅读关键文件找逻辑问题。
- 输出结构化报告:按模板生成包含问题等级、对应文件行号、修改建议、影响评估四块的报告。
这一步设计完成后,再考虑哪些部分可以脚本化。我在scripts/里放了一个check-deps.js,用来扫依赖树、标记出大体积和重复依赖;另一个analyze-bundle.mjs用来模拟打包、输出各模块体积占比。这些脚本全部设计为“无副作用”——只读分析、不修改任何文件,避免Agent超权限操作。
也许有人觉得,这不就是把提示词写得更长了吗?当然不是。提示词是一次性的,而skill的设计是“可重入”的——同一份指导,既可以全程手动对话时触发,也可以配合脚本自动执行。更关键的是,skill可以被其他项目直接复用和fork,这是prompt没有的能力。
4.3 命名规范、版本管理与多模型适配
给skill起名,我的建议是“小且准”。别起code-review这种大而全的名字,可以学官方推荐的模式,细化成frontend-react-code-review、python-type-check-review这类。名字越具体,Agent的匹配准确率越高,用户也能一眼看懂它是干什么的。我就干过把一堆技能都归到“analysis”下面的蠢事,最后自己都分不清该用哪个。
版本管理方面,现代skills普遍采用语义化版本号,在frontmatter里标注version: 1.2.0。如果改动是向后兼容的优化,升minor;如果有破坏性变更(比如改了触发条件、换了输出格式),升major。自己开发的skill建议挂在GitHub上,配合npx skills的注册机制,团队成员一条命令就能同步最新版本。
多模型适配是另一个值得注意的点。同一个skill在Claude Code和Codex上的表现可能天差地别,因为不同模型的指令跟随能力、上下文窗口长度、工具调用方式都有差异。我的做法是:在主仓库里维护一份SKILL.md,另建adapters/目录放不同模型的微调版本。Claude Code那版我会写更多的“推理步骤”,因为它的长上下文能力强;Codex那版则精简指令,优先保证在较短的上下文窗口里也能快速定位核心行为。
5. 场景化skills怎么选:从通用到专精的匹配策略
5.1 前端、安全、数学建模、写作等场景的推荐思路
社区里现成的skills数量已经相当可观。如果你做前端开发,可以关注frontend-review、ui-ux-analysis这类,它们内置了常见的最佳实践规则,审查时能自动核对;如果打CTF或者做授权的渗透测试,penetration-test-recon这类技能包能帮你标准化目录扫描、子域名枚举、漏洞指纹识别等流程,但切记只能在授权范围内使用,这是底线;如果搞数学建模,math-modeling-skills这类技能会引导Agent按“问题分析→假设建立→模型选型→求解→敏感性分析”的节奏推进,对摘要和论文结构也有规范。
还有一批偏内容创作的,比如“微信公众号技术文章”相关的技能包,它们通常内置了标题分析、受众预设、段落节奏控制等模块,对做技术自媒体的人挺友好。我在写这篇稿子之前,也试过用这类skill做资料归拢,虽然最终文章还是自己写的,但整理素材的环节确实省了不少时间。
5.2 从通用助手到领域专家的关键一步
为什么装了技能之后,AI感觉像换了一个人?因为skills本质上在做“领域约束”。通用的模型回复是“面面俱到但都不深入”,而当它加载了一个专精的skill,就相当于戴上了一副“专家眼镜”,回复的重心、术语体系、分析框架都被强制收敛到了特定领域。
我用一个具体的例子说明。每次跑报表项目时,我会让Agent加载>
Activepieces 新 Piece 脚手架:四个配置文件逐项拆解与实战落地指南
Activepieces 新 Piece 脚手架:四个配置文件逐项拆解与实战落地指南 【免费下载链接】activepieces AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Age…
模板解析错误排查与解决方案
/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …
SpacetimeDB C++ Bindings 架构解析:编译期/运行期混合的 WASM 模块类型注册系统
SpacetimeDB C Bindings 架构解析:编译期/运行期混合的 WASM 模块类型注册系统 【免费下载链接】SpacetimeDB Development at the speed of light 项目地址: https://gitcode.com/GitHub_Trending/sp/SpacetimeDB SpacetimeDB 的 C bindings(crat…
烧结钕铁硼材料选购与性能解析指南
1. 烧结钕铁硼材料选购指南作为现代工业的"肌肉",烧结钕铁硼永磁材料在电机、风电、医疗设备等领域的应用越来越广泛。但面对市场上琳琅满目的产品,如何选择真正优质的钕铁硼材料?这个问题困扰着不少采购工程师和技术人员。我从事磁…
MLflow 大语言模型实战:基于 prompt engineering 的文本摘要与问答示例全解析
MLflow 大语言模型实战:基于 prompt engineering 的文本摘要与问答示例全解析 【免费下载链接】mlflow The open source AI engineering platform for agents, LLMs, and ML models. MLflow enables teams of all sizes to debug, evaluate, monitor, and optimize …
Kronos:开源K线预测基础模型,回测表现到底如何?
Kronos:开源K线预测基础模型,回测表现到底如何? 【免费下载链接】Kronos Kronos: A Foundation Model for the Language of Financial Markets 项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos 假设是某个交易日收盘&…