Agent Skills 中文可以叫「智能体技能」。它是一种打包流程知识的开放格式:一个文件夹,里面放一个 SKILL.md,顶部用 YAML 写名字和描述,正文用 Markdown 写做法,需要的话再配上脚本、模板和参考文档。
有一句很好用的对照:MCP 让智能体能访问外部工具和数据,Skills 教智能体拿这些工具和数据该做什么。前者是接口,后者是手艺。
先用一句话抓住它
Agent Skills 是给 AI 的岗位作业指导书:一个文件夹说清楚这件事该怎么做,谁都能复用。
生活里的类比是餐厅后厨墙上贴的标准作业流程。新来的厨师不需要师傅站旁边口述,看一眼那张纸就知道这道菜的顺序、火候、份量和常见坑。Skills 就是把这类「本来要每次重新交代一遍」的知识固定下来,让 AI 自己去看。
为什么会出现这个词
在这套标准之前,每个工具都有自己的写法:Cursor 有 .cursorrules,GitHub Copilot 有自定义指令,Windsurf 有自己的 rules,Claude Code 有自己的项目文件。做的事其实是同一件——把项目规范和常用流程交给 AI——但格式互不兼容,可移植性基本为零。
2025 年 10 月,Anthropic 推出 Agent Skills,用来教 Claude 可重复的工作流。2025 年 12 月 18 日,它把 Agent Skills 作为开放标准发布,公开了规范和 SDK,供任何 AI 平台采用,路径和当初把 MCP 推成事实标准如出一辙。
采用速度很快:微软(VS Code / Copilot)和 OpenAI(ChatGPT、Codex CLI)在 48 小时内跟进,Google 的 Antigravity 在 2026 年 1 月支持,到 2026 年 3 月已有三十多个工具能读同一套 SKILL.md。
flowchart TB
Start["会话启动"] --> L1["第一层:只加载名字 + 描述<br/>每个技能约 30–50 token"]
L1 --> Trigger{"当前任务命中某个技能?"}
Trigger -->|否| Idle["不加载正文"]
Trigger -->|是| L2["第二层:加载完整 SKILL.md"]
L2 --> Need{"执行中需要更多细节?"}
Need -->|是| L3["第三层:按需读 references / scripts"]
Need -->|否| Run["按流程执行"]
L3 --> Run它通常包含什么
一个技能就是一个目录:
my-skill/
├── SKILL.md # 必需:YAML 头 + Markdown 正文
├── scripts/ # 可选:可执行代码
├── references/ # 可选:按需读取的文档
└── assets/ # 可选:模板和素材SKILL.md 的 YAML 头至少要有 name 和 description,正文写指令。规范建议 SKILL.md 控制在 500 行以内,更细的材料拆到单独文件里。scripts/ 放智能体可以直接运行的代码(Python、Bash、JavaScript 都行),references/ 放需要时才读的技术文档、模板或结构化数据。
关键的架构设计叫渐进式披露,分三层加载:启动时只加载名字和描述(每个技能大约 30 到 50 token);任务命中时才加载完整的 SKILL.md;执行过程中需要了再去读参考文件。这样做的实际好处是,一个技能里能塞多少上下文几乎不受限制,因为智能体不必一上来就全读进来。
和提示词、MCP、子智能体的区别
和提示词的区别在于持久和可复用。提示词是这一次说的话,技能是写下来、下次自动生效的做法。你不用每次粘贴同一段规范,智能体判断任务相关时会自己调出来。
和 MCP 的区别是能力和知识的分工。MCP 解决「智能体能连到什么」,技能解决「连上之后按什么流程做」。两者常常配合:MCP 提供数据库连接,技能规定这个库的表结构约定和查询前必须做的检查。
和子智能体的区别是是否隔离上下文。技能在主对话里执行,用的是当前会话的上下文;子智能体在独立窗口里执行,只回传结论。需要复用一段做法时用技能,需要把冗长过程关在外面时用子智能体。
和 Loop Engineering 的关系
在 Loop Engineering 拆出的几块里,技能承担的正是「沉淀下来的知识」那一块——把项目里反复要交代的规范固定成可复用文件,而不是每次重新粘贴。一套跑得久的循环里,技能通常是最先长出来的部分,因为循环跑几轮之后你就会发现自己在重复解释同样的事。
容易误解的地方
第一个误解是把技能写成文档。技能是给智能体执行用的指令,不是给人读的说明书;写「本模块负责用户管理」没有用,写「改这个模块前先跑 X 命令确认 Y,改完必须更新 Z」才有用。
第二个误解是描述随便写。因为启动时只有名字和描述进入上下文,能不能被触发完全取决于描述写得准不准。描述含糊,技能就永远躺在那里不被调用。
第三个误解是把所有东西塞进 SKILL.md。规范建议控制篇幅、把细节拆到 references/,就是为了让渐进式披露真正发挥作用;一个两千行的 SKILL.md 会把渐进加载的好处全部抵消。
第四个误解是以为技能等于权限。技能里写「必须先备份再删除」是一条指令,不是一道强制约束——真正的边界要靠工具权限和护栏去实现。
怎么判断它该不该用
判断标准很朴素:这件事你是不是已经跟 AI 解释过第三遍了。项目的提交规范、某个内部系统的调用顺序、一类文档的固定格式、上线前必跑的检查清单——这些都适合固化成技能。
不适合的是一次性的、任务特定的要求,直接说就行,写成技能反而增加维护负担。还有一类要注意:涉及密钥、生产数据操作、对外发布的流程,可以写成技能,但同时必须在权限和审批层面加约束,不能只靠一段文字自觉执行。