什么是 Skills
Skill就是扩展Agent能力的技能包,他的本质是按需加载的SOP模块。通俗的说,Skill就是一套能够让AI按照既定计划执行任务的工具包和资源包。是某个任务的说明书。
Skill的核心特性就是:
- 可发现: AI能够根据用户指令自动判断是否需要调用该
Skill - 按需加载:只在需要时加载,不会占用太多的token数
- 模块化: 包含元数据,指令函数,资源文件等完整的结构

Skill的本质:按需加载的prompt提示词
从直观上理解,SKILL的本质其实就是增强版的、按需加载的prompt提示词。 我们从下面比较一下它和传统的提示词工程有什么区别:
传统prompt: 单次问答,你问什么,模型就回答什么。每次对话,所有内容都一次性塞进上下文中,可复用性极低。
SKILL的方式:一本"工具书",既包含了指令,还附带工具(脚本)和参考资料(文档)。按需加载,渐进式披露,一次便携,可在不同项目,甚至不同Agent中反复调用。

MCP, SKILL和TOOLs的区别
很多人都搞不懂mcp, skill和tools的区别,经常混用,下面我们来理清一下这几种技术的区别:
| 概念 | 本质 | 特点 | 适用场景 |
|---|---|---|---|
| Prompt | 一次性指令 | 临时、简单、无结构 | 一次性的简单任务,问什么答什么 |
| Tool | 单一功能接口 | 原子化操作 | 执行具体动作(如查天气、发消息) |
| Skill | 完整任务 SOP | 模块化、可发现、按需加载 | 复杂的多步骤任务 |
| MCP | 数据/动作来源 | 提供 API 接口 | 扩展 AI 能调用的外部工具 |
由上表可知,prompt适用于一次性简单的任务,你问什么,模型就回答什么。而tool是原子化的操作,适用于一些比较简单的任务,比如写文件, 发消息等操作。而mcp是为Agent提供了统一的数据接口和外部工具,比如说调用第三方服务(比如高德, 墨迹天气等数据接口), 而SKILL能够执行复杂的多步骤任务,比如完成文章插图生成,PPT制作等等。

那么有小伙伴可能就会问了,那skill也可以完成取数据的任务呀?是不是就没有mcp什么事儿了?
回答:
skill虽然能够完成取数据的任务,但是这儿有一个合适不合适的问题,就比如虽然瑞士军刀也能够切菜,但是大家却没有这么干的!
SKILL的结构组成
我们先来看一下skill的组成:
bash
skill-name/
├── SKILL.md # 核心文件:定义技能指令、元数据(必须)
├── scripts/ # 可执行脚本(可选)
│ ├── init_skill.py
│ └── validator.sh
├── references/ # 外部知识与规范(可选)
│ ├── REFERENCE.md
│ └── api-schema.json
└── assets/ # 静态资源(可选)
├── template.html
└── diagram.png
SKILL.md
这是整个SKILL的灵魂,是Agent的大脑和说明书。决定了AI决定是否调用该SKILL,以及如何执行任务。
它是由两部分组成,元数据 和正文指令。
其中元数据位于文件顶部,用---包裹,这部分始终加载在系统的提示词中,用于AI的路由决策。
比如元数据:
latex
---
name: translate-skill
description: 将用户提供的文本逐行翻译成英文,保留原格式(如空行、缩进),输出逐行对照或纯译文。适用于代码注释、日志、配置文件等多行文本的翻译场景。
---
正文指令:元数据下方的内容,这是渐进式加载的第二层内容,只有当AI判断和技能相关时才会完整读入。
它需要清晰的步骤,规则,示例,以及如何调用下方的scirpts/和references/的具体指令。
比如举个例子:
latex
# 角色定义
你是一位专业翻译专家,擅长将中文(或其他语言)翻译为地道、自然的英文。
## 触发条件
当用户明确要求"逐行翻译"、"逐句翻译成英文"、"把下面每行翻成英文"或类似指令时,自动加载本技能。
## 核心工作流程
1. **接收输入**:从用户消息中提取待翻译的多行文本。
2. **逐行处理**:
- 以换行符 `\n` 分割文本,保留每一行的**原始顺序**。
- 对**每一行**独立进行翻译,翻译为英文。
- **保留空行**:如果某行是空行,译文也输出空行。
- **保留前导/尾随空格**:保留每行原有的缩进(如空格或制表符),以维持格式对齐。
3. **输出格式**:
- 默认输出**纯译文**(仅英文,不附带原文),行数与原输入完全一致。
- 若用户要求"双语对照",则按 `原文 → 译文` 的格式逐行输出(原文和译文各占一行,或用分隔符)。
## 翻译规则
- **准确性优先**:确保每行译文准确传达原意,不增删内容。
- **风格统一**:保持全篇英文风格一致(正式/口语,根据原文风格调整)。
- **术语一致**:若同一术语在多行重复出现,保持译法统一。
- **代码/标记保留**:如果行中包含占位符(如 `{name}`)、代码变量或特殊标记,**直接保留原样**,不翻译这些部分。
## 输出示例
### 用户输入:
你好,世界!
这是第二行。
(空行)
最后一行。
### AI 输出(纯译文):
Hello, world!
This is the second line.
The last line.
reference
该文件夹下面是Agent的外置大脑,供AI阅读和理解的。 比如公司的详细规范说明,API文档,历史案例或者公司的规章制度等。
Agent的上下文是非常宝贵的,references/里的内容不会在skill激活时就自动塞进AI的大脑,相反,AI会先读取SKILL.md的轻量指令,当任务进行到特定的步骤的时候,SKILL.md就会指示AI:**请读取references/xxx.md来获取详细的规则。**此时AI才会调用read工具,将该文件内容加载到上下文中学习。
举个例子,还是上面的翻译skill。 如果上面的body中的翻译规则中有这么一句话:
latex
在翻译之前,先通读一下`references/translator_rules.md` 中的翻译规则,再执行翻译。
那么Agent在翻译之前,就会先读取这个translator_rules.md。
scripts
该文件夹下存放的是AI的机械手臂,负责操作和执行。
比如说独立可运行的代码文件(*.sh, *.py, *.js)等,它解决的是AI能动手做什么的问题。
注意: AI完全不会将scripts/下的代码读入自己的大脑(因为太占Token而且没有必要),它只会通过内置的bash工具启动脚本程序,脚本运行完成之后,读取结果。
比如parse_excel.py, convert_pdf_to_md.py, xxx
怎么写好SKILL
-
写好description
因为
description是 AI 决定是否调用该 Skill 的唯一路由依据 。只有写好了description, AI才会路由到该skill -
开头说清楚,做什么,为什么,怎么做
开头需要给出正面示例和反面示例,还有适用判断,是决定写好
skill的另一标准。 -
多解释为什么,而不要用商量的口吻
不要用
请,必须等词语,而是多用因为,这样做的好处...,让AI理解为什么要这样做。 -
给出改之前和改之后的对比
这部分是让 AI 清楚知道"改什么"和"改成什么",给出具体示例比写
必须好一万倍!
