你是否曾为AI智能体(Agent)的“不听话”、“执行混乱”和“工具荒”而困扰?规则(Rules)写得再详细,Agent也可能视若无睹;Prompt精心打磨,执行时却像无头苍蝇。终结这场混乱的关键,可能就在于 Skill(技能)。
Skill最早由Anthropic公司为其大模型Claude提出,作为一种能力扩展机制。随着这套做法的成熟与社区的广泛接受,Skill已成为大多数Agent开发工具和IDE支持的标准扩展规范。它让Agent从“聊天机器人”进化为了“得力干将”。
01 什么是Skill?—— 封装好的“高级技能包”
一个Skill通常以一个文件夹的形式存在,核心包含三部分内容:一份说明书(SKILL.md)、一堆操作脚本(Script)、以及一些参考资料(Reference)。
具体作用如下:
| 内容 |
作用 |
| SKILL.md |
通过自然语言描述清楚使用场景、方式、步骤及注意事项等上下文信息。 |
| Script 脚本 |
Agent可以执行的具体脚本代码(如 .py, .js 文件)。 |
| Reference 引用 |
参考文档、引用的模板、相关关联的上下文文件信息。 |
你可以把Skill想象成一个打包好的“技能包”。它将完成某个特定任务所需的领域知识、操作流程、要用到的工具、以及最佳实践全部封装在一起。当AI面对相应请求时,就能像一位经验丰富的专家,有条不紊地自主执行。
一句话总结:如果把Agent比作一个潜力巨大的大脑,那么Skill就像是给这个大脑的一套套能反复使用的“高级武功秘籍”。有了它,Agent能从“什么都略知一二”的通才,变成在特定领域“什么都擅长”的专家。
02 Skill原理介绍:渐进式加载与智能调用
Skill运行在一个沙盒环境中,允许大模型访问文件系统和执行bash命令。在这个环境里,一个个Skill就像文件夹,Agent通过命令行来读取文件、执行脚本,从而完成任务。这种“按需取用”的架构,让Skill成为既强大又高效的“工具箱”。
为了平衡效果与效率,Skill设计了一套聪明的三层分级加载机制:
| 级别 |
加载时机 |
Token 消耗 |
内容 |
| 1 级:元数据 |
始终(启动时) |
每个技能约 100 Token |
YAML前置元数据中的名称(name)和描述(description)。 |
| 2 级:说明文档 |
技能触发时 |
通常低于 5000 Token |
SKILL.md文件的正文,包含工作流程、示例(Few-shot)、约束与指南。 |
| 3 级:资源与代码 |
按需 |
几乎无限制(内容不加载到上下文) |
通过bash执行的捆绑文件,如脚本(.py, .js)、配置文件(.json)、参考资料。 |
Level 1:元数据(始终加载)
元数据是Skill的“名片”,包含名称和描述。Agent启动时会加载所有已安装Skill的元数据,从而知道每个Skill的用途。由于其非常轻量,你可以安装大量Skill而无需担心占满上下文。
Level 2:说明文档(触发时加载)
SKILL.md文件的正文就是说明文档。只有当用户的请求与Skill元数据中的描述匹配时,Agent才会用bash指令读取这份文档,并将其内容加载到上下文中。这种“触发式加载”确保了只有相关的详细指令才会消耗Token。
Level 3:资源与代码(按需加载)
Skill还可以打包更深入的资源,如更详细的文档、可执行脚本或API参考文档等。Agent仅在需要时,才会通过bash去读取或执行这些文件,且脚本代码本身不会进入上下文。这使得Skill能捆绑大量信息,几乎不增加额外的上下文成本。
Skill的调用逻辑:从理解意图到稳定执行
那么,Agent是如何智能选择并执行一个Skill的呢?整个过程如同一位经验丰富的助理在处理工作:
- 意图匹配(找到对的人):Agent分析用户需求,并快速扫描所有Skill的元数据(“名片夹”),寻找最匹配的那一个。
- 读取手册(看懂怎么干):找到合适的Skill后,Agent会读取其
SKILL.md(“操作手册”),研究详细的执行步骤和注意事项。
- 按需执行(动手开干):根据手册指引,Agent开始工作。如果需要,它会从“工具箱”(L3资源)中调用脚本或工具来执行具体操作。
- 反馈结果(事毕复命):任务完成后,Agent向用户汇报结果,或在遇到困难时及时提问。
整个流程在沙盒环境中安全、可控地完成。
03 Skill vs. 其他概念的区别
为了更清晰理解Skill的独特价值,我们将其与容易混淆的快捷指令(Command)和原子工具(MCP)进行对比。用一个厨房的比喻就很好懂:
| 概念 |
好比是…… |
核心特点 |
适用场景 |
| 快捷指令 (Command) |
微波炉上的 “指定按钮” (如 /爆米花) |
由用户主动触发的、固定的、单一功能的命令。简单直接,但不够智能灵活。 |
作为主动复用prompt的快捷方式,让用户快速调用模板prompt。 |
| 原子工具 (MCP) |
厨房里的 “单一厨具” (如一把刀、一个烤箱) |
为AI提供调用外部API或脚本的基础能力。模型知道有这个工具,但不知道在什么场景、什么步骤下最优使用。 |
通过标准协议连接外部系统以获取信息或完成任务。 |
| 技能 (Skill) |
一本完整的 “菜谱” (如“如何制作法式焗蜗牛”) |
由模型根据任务自动匹配和驱动。它定义了需要哪些工具、遵循哪些步骤、注意什么要点,是流程化、场景化的知识集成。 |
由模型驱动意图理解,通过渐进式加载补充上下文,并根据标准作业程序(SOP)完成复杂任务。 |
我们也对比一下其他相关功能:
| 概念 |
核心特点 |
适用场景 |
易混淆点 |
| 规则 (Rules) |
通常通过agent.md或project_rules文件维护,内容基本与项目强绑定。 |
专注于和项目强相关的通用行为准则和习惯。 |
在无Skill时,部分场景可通过在rules文件中手动维护不同文件的索引和摘要来实现场景复用。 |
| 智能体 (Agent) |
通常搭配相关prompt和对应的tools打包使用,普遍用于多Agent系统。 |
专用型、目标明确的复杂场景。 |
在“Skill + 子智能体(subagent)”的场景中,也能实现多智能体调度的逻辑。 |
| 记忆 (Memory) |
由模型主动或被动从用户对话中提炼关键上下文并进行记录。 |
日常开发中潜移默化地记录历史上下文,对用户干扰小。 |
Memory生成的内容可能类似于rules或Skill。通常明确了使用场景的memory可以被手动迁移到rules或Skill中。 |
04 什么是好的Skill?—— 从“能用”到“好用”的准则
一个好的Skill应遵循以下原则,确保其高效、可靠且易于维护:
Good Skill vs Bad Skill
| 评判维度 |
Good Skill |
Bad Skill |
| 单一职责原则 |
每个Skill只做一件事,且把它做好。 例如,将“查询数据并生成图表发送邮件”分解为三个独立Skill:query_data, generate_chart, send_email。 |
一个Skill试图做太多事,功能混杂,导致意图匹配困难和执行逻辑复杂。 |
| 描述清晰度 |
描述清晰、具体,使用自然语言,明确说明输入、输出和核心功能。例如:“根据用户提供的城市名和日期范围,查询并返回该城市的天气数据。” |
描述模糊,充满技术术语,智能体难以理解其适用场景。例如:“一个用于数据处理的工具。” |
| 参数设计 |
参数精简、命名语义化(如city_name, date_range),并为每个参数提供清晰的描述和示例。明确参数如何获取及使用。 |
参数过多、命名不规范(如arg1, p2),缺少详细的注释说明。 |
| 可组合性 |
设计时就考虑可组合性,其输出可以作为其他Skill的输入,方便构建更复杂的任务流(Workflow)。 |
设计上是“一锤子买卖”,难以与其他Skill联动,无法融入更大工作流。 |
如何写好一个Skill?
- 原子性(Atomicity):坚持单一职责,让每个Skill都像一块积木,小而美,专注于解决一个具体问题,便于日后的复用和组合。
- 给例子(Few-Shot Prompting):这是最关键的一点。与其费尽口舌解释,不如直接在
SKILL.md中提供几个清晰的输入输出示例。模型能通过具体例子,快速理解你想要的格式、风格和行为。
- 立规矩(Structured Instructions):
- 定角色:给它一个明确的专家人设,如“你现在是一个资深的市场分析师”。
- 拆步骤:把任务流程拆解成一步步的具体指令,引导其“思考”。
- 画红线:明确告诉它“不能做什么”,防止产生“幻觉”或错误操作。
- 造接口(Interface Design):像设计软件API一样,明确定义Skill的输入参数和输出格式(如固定输出JSON或Markdown)。这让你的Skill可以被其他程序或Skill稳定调用和集成。
- 勤复盘(Iterative Refinement):把Skill当作产品来迭代。在实际使用中收集“Bad Case”,然后将它们转化为新的规则或反例,补充到Skill定义中,让其持续进化。
05 社区热门Skill推荐
刚接触Skill不知从何下手?可以从社区沉淀的热门Skill中寻找灵感,或直接在你的工作流中复用。
Claude官方Skill仓库
Anthropic在 github.com/anthropics/Skills 维护了一个官方Skill仓库,是学习最佳实践的绝佳资料。
部分官方Skill列表:
| Skill 名称 |
Skill 说明 |
适用场景 |
| frontend-design |
创建具有独特性、生产级别质量的前端界面,避免通用AI审美。 |
适用于构建Web组件、页面或应用,需要突出视觉效果时。 |
| git-committer |
分析git变更内容并生成对应的commit信息。 |
当用户需要提交代码变更、自动生成或规范化commit消息时。 |
| document-Skills/pdf |
提供全面的PDF操作工具集,支持文本与表格提取、创建、合并/拆分等。 |
适用于需要以编程方式处理、生成或分析PDF的场景。 |
| mcp-builder |
指导创建高质量的MCP(Model Context Protocol)服务器。 |
适用于Python(FastMCP)或Node/TypeScript环境,需要为模型集成外部API时。 |
| Skills-creator |
指导创建或更新能扩展Claude能力的Skills。 |
适用于为Claude开发新能力的场景。 |
如何快速使用官方Skill?
大多数官方Skill都能直接下载或通过Git克隆到本地。在TRAE等工具中,一般只需将这些Skill文件夹放到指定的.trae/skills/目录下,接着重启或刷新Agent,它就会自动识别并加载这些新能力。
社区其他资源
- Awesome集合:
github.com/ComposioHQ/awesome-claude-Skills、github.com/travisvn/awesome-claude-Skills
- Skill分发市场:
Skillsmp.com/zh
- 文档转Skill工具:
github.com/yusufkaraaslan/Skills_Seekers
- 学术写作:
github.com/K-Dense-AI/claude-scientific-writer
- UI/UX设计:
www.ui-Skills.com、ui-ux-pro-max-Skills.nextlevelbuilder.io
06 在TRAE中快速创建与使用Skill
理论不如实践。以下以在TRAE SOLO中创建和使用Skill为例。
Skill创建
方式一:在设置中直接创建
- 按下快捷键
Cmd + , (Mac)或 Ctrl + , (Windows)打开设置面板。
- 在左侧找到「规则和技能」选项。
- 在「技能(Beta)」板块,点击右侧的「+ 创建」按钮。
- 在弹窗中填写技能名称、描述和指令(即SKILL.md主体内容)。
- 点击「确认」即可创建。
例如,创建一个git-committer技能,其指令部分(SKILL.md)内容示例如下:
# Git Committer
该功能用于分析 git 仓库中的变更内容,并生成符合规范的 commit 信息。
## 使用场景
- 当用户需要提交代码变更时
- 当用户想要自动生成 commit 信息时
- 当用户需要规范化 commit 消息格式时
## 工作流程
1. **分析变更**:检查当前 git 仓库状态,获取所有变更内容
2. **分类变更**:将变更分为新增、修改、删除等类型
3. **生成 commit 信息**:根据变更内容生成符合规范的 commit 消息
4. **执行提交**:使用生成的 commit 信息执行 git commit 操作
## 支持的变更类型
- **新增文件**:识别新增的文件并添加到 commit 中
- **修改文件**:分析文件修改内容,提取关键变更
- **删除文件**:识别删除的文件
- **重命名文件**:识别文件重命名操作
## Commit 消息规范
生成的 commit 消息遵循以下格式:
<type>(<scope>): <subject>
<body>
<footer>
方式二:直接解析本地SKILL.md文件
在当前项目目录下,创建 .trae/skills/[你的技能名]/ 文件夹,并将包含SKILL.md及相关资源的完整Skill文件夹放入。与TRAE对话时,它会自动识别并加载该技能。在「设置 -> 规则和技能」中也能看到已成功导入的技能列表。
方式三:在对话中创建
TRAE内置了skills-creator技能,你可以直接在对话中要求TRAE帮你创建所需的Skill。例如,输入“帮我创建一个用于分析代码结构的codemap技能”,TRAE会引导你完成创建过程。
Skill使用
在TRAE中使用技能非常简单。加载所需技能后,只需在对话框中用自然语言描述需求即可,系统会自动匹配并调用相应技能。
例如:
- 输入“帮我设计一个有科技感的登录页面”,系统会自动调用
frontend-design技能。
- 输入“帮我提取这个PDF里的所有表格”,系统会自动调用
document-skills/pdf技能。
- 输入“分析一下我这次的代码变更并生成commit”,系统会自动调用
git-committer技能。
系统会自动分析你的需求,加载技能文档,并一步步指导或自动完成任务。
实践场景举例:基于飞书的Spec Coding
让我们通过一个“基于飞书文档的Spec Coding”场景,看看如何用Skill解决实际问题。传统规则(Rules)一次性加载所有内容,不够灵活且占用上下文。而Skill的“渐进式加载”动态方式正好可以解决此问题。
什么是Spec Coding?
Spec Coding提倡“先思考后行动”,通过详细定义可执行的需求规范(Specification)来驱动AI开发。流程包括“需求分析、技术设计、任务拆解”的文档编写,最后让AI根据规范编码。
我们可以将这个过程拆解为多个独立的角色型Skill和一个协调型Skill:
多角色专家Skills设计:
| 角色 |
技能标识 |
主导思维 |
职责 |
交付物 |
| 需求分析师 |
requirement-analyst |
产品思维 |
澄清挖掘需求、定义边界、细化场景和用户故事。 |
REQUIREMENT.md |
| 技术架构师 |
system-architect |
工程思维 |
技术选型、数据建模、模块与API设计。 |
DESIGN.md |
| 任务规划师 |
task-planner |
项目管理思维 |
将需求拆解为原子任务、规划依赖顺序、设定完成标准。 |
TODO.md |
| 规范执行者 |
spec-coder |
编程思维 |
严格遵循设计文档进行编码,管理变更,自我验证。 |
高质量代码 |
飞书文档使用Skill
飞书文档支持Markdown超集语法。我们可以创建一个using-feishu-doc技能,其目的是:
- 教会Agent飞书文档的特有语法,使其能写出格式正确的文档。
- 约束Agent利用飞书文档的评论功能,实现多人协作审阅。用户可在文档评论中提出建议,Agent重新阅读后根据建议优化文档,形成协作闭环。
Spec Coding 总控Skill
最后,创建一个spec-coding-workflow技能,将上述所有角色技能和工具技能组合起来,定义整体的Spec Coding流程,指导智能体进行分工协作与调度。
通过这种方式,我们利用Skill的动态加载机制取代固定规则,完成了复杂场景的任务分解;通过不同角色技能的分工协作,避免了Agent“什么都做”导致的执行混乱;并尝试借助飞书文档形成人机协作闭环,有效解决了Agent“不听话、执行乱、工具荒”的问题。
Q & A | 常见问题
为什么我写的Skill不生效,或者效果不符合预期?
那十有八九是你的“名片”——描述(Description)没写好。Agent通过读取Skill的description来判断何时使用它。如果描述含糊不清、过于专业或简单,Agent就无法准确匹配。用清晰、准确的白话文写描述至关重要。
使用Skill的效果,会受到所选大语言模型(LLM)的影响吗?
会有影响,但影响的方面不同。
- 更强大的模型,主要提升“挑选”和“安排”技能的能力,能更准确地理解用户意图并制定策略。
- Skill本身,决定了具体任务执行的“最低水平”和“稳定性”。一旦被选中,其内置的流程和代码会稳定运行。因此,Skill编写的好坏直接决定了任务完成的质量。
Skill是万能的吗?有什么不擅长的?
当然不是。Skill擅长处理流程明确、边界清晰的任务。在以下场景可能不是最佳选择:
- 需要高度创造力的任务:如写诗、全新品牌设计,更需要模型本身的“灵感”。
- 需要实时动态决策的复杂策略:如金融市场交易。
- 单纯的知识问答或开放式闲聊:直接问模型即可。
我可以修改社区的Skill以适应自己的需求吗?
当然可以,并且强烈建议这么做! 大多数共享Skill都允许你“Fork”并进行二次开发。你可以将通用Skill作为模板,复制后修改其逻辑或参数,以适应自己的特定业务需求。这对生态共建和知识复用非常重要。
结语:让Agent成为真正的“行动派”
Skill的出现,为AI从“对话式助手”转变为“可信赖的执行者”搭建了关键桥梁。它通过结构化的方法封装领域知识、操作流程和工具调用逻辑,解决了Agent规则失效、执行失控的痛点,让AI的能力输出变得可控、可靠且高效。
它的核心价值在于:
- 精准击中痛点:通过三级加载机制,在功能深度与上下文效率间找到绝佳平衡,实现了Agent能力的动态扩展。
- 生态赋能,降低门槛:丰富的官方与社区资源,让开发者能站在巨人肩膀上,快速复用成熟能力。
虽然Skill并非万能,但它在“确定性流程任务”上的优势无可替代。随着AI模型能力的提升与Skill生态的完善,我们有望看到更多跨领域、可组合的Skill出现,让AI真正从“样样懂一点”的通才,进化为“事事做得好”的专家协作伙伴。
不妨从今天开始,尝试将你最擅长的领域经验封装成可复用的Skill,让AI成为你延伸专业价值的放大器。更多的技术实践与前沿讨论,欢迎访问 yunpan.plus 与其他开发者交流。
参考资料
[1] 一文读懂 Skills|从概念到实操的完整指南, 微信公众号:mp.weixin.qq.com/s/LUyHgdaByxZuDyCfSxolIA
版权声明:本文由 云栈社区 整理发布,版权归原作者所有。