Skill是什么?

一套可复用、可安装、可共享的任务说明

Skill是什么?

在AI智能体和AI编程工具中,Skill通常指一套可复用、可安装、可共享的任务说明。它把操作规范、专业知识、示例、脚本和参考资料组织在一起,让AI能够更稳定地完成某一类工作。

随着ChatGPT、Codex、Claude Code等工具逐渐从“聊天机器人”发展为能够读取文件、调用工具和执行任务的智能体,仅靠临时提示词已经很难管理复杂、重复的工作。Skill的出现,正是为了把成熟的工作方法保存下来,让AI在需要时直接调用。

一、Skill到底是什么?

可以把通用AI想象成一名能力很强、学习速度很快,但不了解你具体工作规范的新员工。

你可以每次都重新告诉它:

  • 报告应该使用什么结构;
  • 代码需要遵循哪些规范;
  • 处理PDF时应该调用什么程序;
  • 发布网站前要检查哪些项目;
  • 分析数据时要生成哪些图表。

但这些要求如果每次都重新输入,不仅麻烦,还容易遗漏。

Skill就是为AI准备的一份“标准作业包”。

它通常以一个文件夹存在,核心文件一般是SKILL.md。除了文字说明,还可以包含:

  • 操作步骤;
  • 任务触发条件;
  • 示例输入和输出;
  • 模板文件;
  • Python、Shell或JavaScript脚本;
  • API说明和参考资料;
  • 检查清单与质量标准。

OpenAI将Agent Skills描述为封装指令、资源和可选脚本的任务能力包;ChatGPT中的Skills则被定义为可复用、可分享的工作流程。Claude Code的Skills也遵循Agent Skills开放标准,并在此基础上提供调用控制、子智能体运行和动态上下文等扩展能力。

二、Skill和提示词有什么区别?

提示词和Skill都能指导AI,但两者解决的问题不同。

对比项 普通提示词 Skill
使用方式 每次对话临时输入 安装后重复使用
内容规模 通常较短 可以包含完整工作流程
文件支持 一般只有文字 可包含脚本、模板和资料
适用场景 一次性、简单任务 重复、专业、复杂任务
一致性 容易因表达变化而波动 更容易保持固定标准
分享方式 复制一段文字 分享完整Skill文件夹

例如,下面是一条普通提示词:

请检查这个网页是否存在SEO问题,并给出优化建议。

而一个SEO审计Skill可以进一步规定:

  1. 先检查页面是否能被抓取;
  2. 再检查标题、描述和Canonical;
  3. 分析结构化数据;
  4. 检查正文是否依赖JavaScript渲染;
  5. 按严重程度排列问题;
  6. 使用统一表格输出;
  7. 最后生成修改后的代码示例。

因此,提示词更像一次性的口头要求,Skill更像经过整理的标准操作手册。

三、Skill和工具、MCP有什么区别?

这几个概念经常被混淆。

1. 工具:让AI能够“做事”

工具为AI提供实际操作能力,例如:

  • 搜索互联网;
  • 读取文件;
  • 执行Python;
  • 查询数据库;
  • 发送邮件;
  • 调用天气API;
  • 修改代码。

工具解决的是:AI能调用什么。

2. MCP:让AI连接外部系统

MCP是Model Context Protocol的缩写,可以用统一方式把AI连接到数据库、知识库、GitHub、Notion、浏览器或企业内部系统。

MCP解决的是:AI怎样连接数据和服务。

3. Skill:告诉AI怎样完成任务

Skill负责描述工作方法,例如:

  • 什么情况下应该调用某个工具;
  • 工具调用顺序是什么;
  • 哪些风险操作必须确认;
  • 输出必须符合什么格式;
  • 完成后如何检查质量。

Skill解决的是:AI应该按照什么流程做。

可以用一个简单比喻理解:

  • AI模型是大脑;
  • 工具是双手;
  • MCP是插座和连接线;
  • Skill是操作手册。

四、一个Skill通常由什么组成?

一个简单的Skill目录可能如下:

seo-audit/
├── SKILL.md
├── references/
│   ├── checklist.md
│   └── examples.md
├── scripts/
│   └── check_meta.py
└── templates/
    └── report-template.md

其中最重要的是SKILL.md

一个最小化的Skill可以这样写:

---
name: seo-audit
description: 检查网页的SEO与GEO基础问题,并输出按优先级排序的修复建议。
---

# SEO Audit

## 何时使用

当用户要求检查网页的SEO、GEO、抓取、索引或结构化数据问题时使用。

## 工作流程

1. 获取目标网页的初始HTML。
2. 检查HTTP状态码和重定向。
3. 检查title、description和canonical。
4. 检查正文是否无需JavaScript即可读取。
5. 检查JSON-LD结构化数据。
6. 按严重、高、中、低四个等级整理问题。
7. 提供可以直接修改的代码示例。

## 输出格式

- 总体评分
- 关键问题
- 修复优先级
- 代码示例
- 验收方法

## 限制

- 不把推测写成确定事实。
- 无法访问页面时必须明确说明。
- 涉及搜索引擎规则时优先参考官方文档。

元数据有什么作用?

文件开头的namedescription不只是介绍文字,它们还会影响智能体能否正确识别和调用Skill。

---
name: seo-audit
description: 检查网页的SEO与GEO基础问题,并输出按优先级排序的修复建议。
---

名称应该简短、稳定;描述则应该说明:

  • Skill能完成什么;
  • 什么情况下使用;
  • 哪些用户表达可能触发它。

描述过于宽泛,Skill可能被错误调用;描述过于狭窄,应该调用时又可能无法触发。

五、Skill是怎样工作的?

Skill并不是重新训练AI模型,也不会永久改变模型本身。

它更接近一种按需加载的上下文机制:当智能体判断某项任务与Skill匹配时,再读取Skill中的详细说明和资源。

这种方式有三个明显优势:

1. 减少上下文浪费

智能体不必在每次对话开始时读取全部规范,只在任务需要时加载相关Skill。

2. 提高执行一致性

同一种任务可以反复使用相同流程、模板和检查标准,减少不同对话之间的质量波动。

3. 便于团队共享

团队可以把经验整理成Skill,让不同成员和不同智能体复用同一套工作方法。

六、Skill可以用来做什么?

Skill适合处理具有明确方法、重复频率较高或专业要求较强的任务。

内容创作

  • 按固定风格撰写文章;
  • 生成产品介绍;
  • 检查事实和引用;
  • 将文章转换为社交媒体内容;
  • 生成统一格式的Markdown文档。

软件开发

  • 创建符合团队规范的项目;
  • 执行代码审查;
  • 编写单元测试;
  • 排查构建错误;
  • 发布版本;
  • 生成API文档。

设计与文档

  • 制作演示文稿;
  • 生成PDF报告;
  • 按品牌规范使用字体和版式;
  • 创建流程图;
  • 检查设计稿的一致性。

数据分析

  • 清洗表格;
  • 计算指标;
  • 生成图表;
  • 检查异常值;
  • 按固定结构输出分析结论。

企业流程

  • 整理会议纪要;
  • 生成周报;
  • 审核合同中的关键条款;
  • 根据模板回复客户;
  • 检查项目上线条件。

七、怎样安装和使用Skill?

不同平台的界面和存放路径可能不同,但基本过程相似。

方法一:安装现成Skill

一般步骤为:

  1. 在官方库、插件市场或GitHub仓库中找到Skill;
  2. 阅读SKILL.md,确认用途和权限;
  3. 检查是否包含可执行脚本;
  4. 将Skill安装到平台支持的位置;
  5. 重新加载客户端或会话;
  6. 用一个明确任务测试它是否正确触发。

在支持自动调用的平台中,用户不一定要直接说出Skill名称。例如安装网页测试Skill后,可以直接说:

检查本地网页的登录流程,并记录失败的步骤。

智能体会根据任务和Skill描述判断是否调用。

部分平台也支持显式调用,形式可能类似:

使用 seo-audit Skill 检查这个页面。

或:

/seo-audit https://example.com

具体调用方式取决于平台实现。

方法二:把Skill放进项目

项目级Skill适合保存某个仓库特有的规则,例如:

my-project/
├── src/
├── tests/
└── .agents/
    └── skills/
        └── release-check/
            └── SKILL.md

它可以要求智能体在发布前完成:

  • 运行测试;
  • 检查环境变量;
  • 构建生产版本;
  • 扫描未提交文件;
  • 更新版本号;
  • 生成变更日志。

方法三:使用平台内置的Skill管理界面

部分AI产品提供Skill或插件管理页面,可以完成:

  • 浏览推荐Skill;
  • 安装或启用Skill;
  • 查看已安装项目;
  • 控制可访问的数据;
  • 删除不再需要的Skill。

由于各产品仍在快速更新,实际界面和权限应以对应平台的最新官方说明为准。

八、怎样自己创建一个Skill?

创建Skill不需要训练模型。只需把成熟的任务流程写清楚,并加入必要的资源。

第一步:选择合适的任务

好的Skill通常满足至少一个条件:

  • 任务会反复出现;
  • 执行步骤比较固定;
  • 输出格式需要保持一致;
  • 涉及团队内部规范;
  • 需要调用脚本或模板;
  • 普通提示词经常遗漏步骤。

不适合做成Skill的任务包括:

  • 只会执行一次的临时要求;
  • 没有稳定方法的开放式闲聊;
  • 可以用一句提示词准确解决的简单任务。

第二步:定义触发条件

先回答三个问题:

  1. 用户通常会怎样描述这个任务?
  2. 哪些场景应该使用该Skill?
  3. 哪些相似场景不应该使用?

例如:

## 何时使用

当用户要求创建、修改、读取或分析`.pptx`演示文稿时使用。

## 不应使用

当用户只要求提供演讲提纲,而不需要生成或编辑演示文件时,不要使用。

第三步:写出可靠流程

不要只写“认真完成任务”,而要写成可以检查的步骤。

较弱的写法:

请专业地检查代码,确保没有问题。

更好的写法:

1. 先读取受影响文件和相关测试。
2. 检查空值、边界条件和错误处理。
3. 检查是否引入安全问题。
4. 运行现有测试。
5. 对新增逻辑补充测试。
6. 输出问题位置、影响和修复方案。

第四步:加入示例和模板

示例可以让AI更准确地理解输出标准。

## 输出示例

### 严重问题

**位置:** `src/auth.ts:42`

**问题:** 用户输入未经验证就拼接进SQL语句。

**影响:** 可能导致SQL注入。

**建议:** 使用参数化查询,并增加恶意输入测试。

第五步:加入脚本

当工作需要稳定计算、文件转换或自动检查时,脚本通常比自然语言更可靠。

# scripts/check_required_files.py
from pathlib import Path

required_files = [
    "README.md",
    "LICENSE",
    ".gitignore",
]

missing = [name for name in required_files if not Path(name).exists()]

if missing:
    print("缺少文件:")
    for name in missing:
        print(f"- {name}")
    raise SystemExit(1)

print("必要文件检查通过。")

Skill中可以规定:

发布项目之前,必须运行:

python scripts/check_required_files.py

第六步:进行真实测试

至少测试以下三类情况:

测试类型 目的
正常任务 检查Skill能否正确执行
模糊表达 检查Skill能否正确触发
相似但无关的任务 检查Skill是否会被误调用

九、怎样写出一个高质量Skill?

1. 描述要具体

不推荐:

description: 帮助用户处理网页。

推荐:

description: 检查网页的可访问性、SEO元数据、结构化数据和无JavaScript正文可读性,并生成按严重程度排序的修复报告。

2. 只保留必要内容

Skill不是越长越好。过多背景材料会增加上下文负担,也可能让智能体忽略真正重要的规则。

建议将内容分层:

  • SKILL.md保存核心流程;
  • references/保存详细资料;
  • templates/保存输出模板;
  • scripts/保存可执行程序。

3. 把硬性要求写成可验证规则

不推荐:

输出应当美观、专业。

推荐:

- 一级标题只能出现一次。
- 每个问题必须包含位置、影响、证据和修复建议。
- 问题按严重、高、中、低排序。
- 没有证据时不得下确定结论。

4. 为危险操作设置确认点

涉及删除、发布、付款、发送、覆盖文件等动作时,应明确要求用户确认。

在执行以下操作之前必须获得用户明确确认:

- 删除文件或数据库记录;
- 向外部收件人发送邮件;
- 部署到生产环境;
- 覆盖无法恢复的文件;
- 产生费用的API调用。

5. 不要把密钥写进Skill

Skill可能被复制、分享或提交到Git仓库。API密钥、访问令牌、密码和个人数据不应直接写入文件。

正确方式是引用环境变量:

export API_KEY="..."

然后在脚本中读取:

import os

api_key = os.environ["API_KEY"]

十、使用第三方Skill时要注意什么?

Skill可能包含脚本、命令和外部资源,因此不能只看名称就直接安装。

安装前至少检查:

  1. Skill来自谁;
  2. SKILL.md要求AI做什么;
  3. 是否会读取个人文件;
  4. 是否会访问网络;
  5. 是否包含删除或覆盖命令;
  6. 脚本是否会上传数据;
  7. 是否要求提供密钥;
  8. 最近是否仍在维护。

需要特别警惕以下内容:

rm -rf
curl ... | sh
sudo ...
git push --force

这些命令不一定恶意,但可能造成不可逆影响。应先理解其用途,再决定是否执行。

十一、一个完整示例:文章配图Skill

下面是一个适合内容网站使用的简化示例。

---
name: article-illustration
description: 根据文章主题生成简洁、无文字、16:9比例的封面插图方案。
---

# Article Illustration

## 适用场景

当用户要求为文章、博客或报告设计封面图时使用。

## 工作流程

1. 阅读文章标题和摘要。
2. 提炼一个核心隐喻,不要堆叠多个概念。
3. 优先使用抽象、几何或平面设计语言。
4. 默认比例为16:9。
5. 画面内不得出现文字、字母、水印和界面截图。
6. 主体应占画面的25%至45%,保留足够留白。
7. 颜色控制在三种主色以内。
8. 输出图像生成提示词并执行图像生成工具。

## 质量检查

- 缩略图尺寸下是否仍能识别主体;
- 是否存在多余文字;
- 是否过度拥挤;
- 是否准确表达文章主题;
- 是否避免使用未经授权的品牌元素。

安装后,用户只需说:

为“让大模型先查资料,再回答问题”设计一张文章封面图。

智能体便可以自动应用比例、留白、无文字和构图规则,而不需要用户每次重新说明。

十二、Skill的真正价值是什么?

Skill的价值并不只是“让AI多会一种功能”。

它更重要的作用,是把人的经验转化为AI能够重复执行的流程。

一条优秀提示词可能解决一次问题;一个优秀Skill则可以持续改进,并被整个团队反复使用。

因此,可以将Skill理解为:

介于提示词、程序和操作手册之间的AI能力模块。

它用自然语言描述意图和规则,用脚本保证确定性,用模板维持输出标准,再由智能体根据当前任务灵活执行。

十三、常见问题

Skill会让AI永久学会新知识吗?

不会。Skill通常是在任务执行时被读取,并不会重新训练底层模型。删除或停用Skill后,对应规则通常也不会继续生效。

不会编程也能创建Skill吗?

可以。最简单的Skill只需要一个写清楚任务流程的SKILL.md文件。脚本是可选项,不是必需项。

Skill可以跨平台使用吗?

部分Skill可以。Claude Code文档说明其Skills遵循Agent Skills开放标准;Codex也支持以SKILL.md为核心的能力包。不过不同平台可能增加自己的字段、目录约定和调用方式,因此迁移时仍需检查兼容性。

Skill能代替MCP吗?

不能。Skill主要描述方法,MCP主要负责连接外部服务。两者经常搭配使用。

Skill越多越好吗?

不是。安装过多、描述重叠的Skill可能增加误触发和冲突。更合理的做法是保留用途明确、质量可靠、经常使用的Skill。

结语

AI模型提供通用能力,工具提供行动能力,MCP提供连接能力,而Skill负责把这些能力组织成一套稳定的工作方法。

对于普通用户,Skill可以减少重复提示;对于开发者,它可以封装工程流程;对于团队,它可以把个人经验变成共享标准。

当你发现自己反复向AI解释同一套要求时,就可以考虑把它整理成一个Skill。

参考资料

  1. OpenAI Codex:Agent Skills

  2. OpenAI Help Center:Skills in ChatGPT

  3. OpenAI Codex:Customization

  4. OpenAI:Introducing the Codex app

  5. Anthropic Claude Code:Extend Claude with skills

  6. [Anthropic Skills示例仓库] (加载链接预览…)

注:AI产品的Skill安装入口、目录结构和功能仍在持续更新。实际使用时,应优先查看对应产品的最新官方文档。

KEEP READING