乐于分享
好东西不私藏

给 AI 装“技能”:Agent Skills 完全指南

给 AI 装“技能”:Agent Skills 完全指南

给 AI 装“技能”:Agent Skills 完全指南

你的 AI 助手终于可以不只是“会说话”,而是真正“会做事”了

想象一下这个场景:

:帮我处理一下这张发票 PDF,把里面的金额、日期、发票号提取出来。

通用 AI:我无法直接读取 PDF 文件,但你可以把内容粘贴给我……

装了“发票处理技能”的 AI:(自动识别任务 → 调用专用脚本 → 输出结果)

字段
发票号码
INV-2024-0123
价税合计
12,800.00
销售方
XX科技有限公司

这就是Agent Skills的魅力——它让你的 AI 从“只能聊天”进化到“能动手干活”。

2025年12月18日,Anthropic 将 Agent Skills 正式发布为开放标准。一套标准化的文件夹规范,让 agent 像装 App 一样加载专业技能。标准一出,行业跟进速度惊人——Microsoft 在 VS Code 和 GitHub 里直接集成,OpenAI 在 ChatGPT 和 Codex CLI 里采用了几乎一模一样的架构,Cursor、Goose 等编码工具也纷纷跟进。截至 2026 年初,Atlassian、Figma、Canva、Stripe、Notion、Zapier 等厂商都已经为自家平台构建了相应的 skills。

一、Agent Skills 是什么?

一句话定义:Agent Skills 是一套标准化格式,用于将 AI 指令、脚本和资源打包成可复用、可发现的模块。

如果你用过 AI 编程助手,可能遇到过这样的问题:今天让 AI 帮你生成了一份符合公司规范的 PPT,明天换了一个对话,AI 就“忘”了这些规范,你得从头再说一遍。Skills 解决的就是这个问题——它把“这件事该怎么做”的知识固化下来,让 AI 每次都能按同一套标准执行。

它和 MCP 是什么关系?

很多第一次接触 Skills 的人会问:“不是已经有 MCP 了吗?” 这两个概念确实容易混淆,但定位完全不同:

MCP 解决的是「模型能用什么」;Skills 解决的是「模型该怎么用」。

打个比方:

MCP
是“工具箱”——它给 AI 接上了手和眼,让 AI 能够连接数据库、调用 API、读写文件
Skills
是“操作手册”——它告诉 AI,拿到这个工具后应该按照什么流程、什么标准去用

两者是互补关系,不是替代关系。一个强大的 Agent = 通用模型 + MCP 连接外部工具 + Skills 提供操作流程。

核心设计:渐进式披露

Skills 最精妙的设计是渐进式披露(Progressive Disclosure)——它把信息分成三层,按需加载:

层级
内容
何时加载
大小限制
第一层:元数据
name + description
始终在上下文中
~100 词
第二层:SKILL.md 正文
详细指令、流程说明
技能被触发时
< 500 行(推荐)
第三层:附加资源
脚本、参考文档、模板
按需加载
无限制

这意味着:即使你有 100 个 skills 安装在系统中,AI 启动时也只加载它们的元数据(每个 skill 仅 30-50 个 tokens),只有当某个 skill 被判定为“相关”时,才会加载它的完整内容。这种设计既保证了能力丰富,又避免了上下文窗口被撑爆。

二、一个 Skill 长什么样?

每个 Skill 就是一个文件夹,包含一个必需的 SKILL.md 文件和若干可选的资源文件:

my-invoice-skill/                # 技能根目录├── SKILL.md                     # 【必需】核心定义文件├── scripts/                     # 【可选】可执行脚本│   └── extract_invoice.py├── references/                  # 【可选】参考文档│   └── field_mapping.md└── assets/                      # 【可选】静态资源    └── output_template.xlsx

SKILL.md 文件结构

SKILL.md 采用YAML Frontmatter + Markdown 正文的双层结构:

---name: invoice-extractor              # 必需:技能唯一标识(小写字母+连字符,最长64字符)description: 从 PDF 发票中提取关键字段。当用户需要“解析发票”或“提取账单信息”时使用。license: MIT                         # 可选:许可证声明compatibility: 需要 python3 及 PyPDF2  # 可选:运行环境要求allowed-tools: Bash(python:*)       # 可选:授权使用的工具---

关于 licenselicense: MIT 表示该技能以 MIT 开源许可证发布,任何人都可以免费使用、修改和分发。如果只是个人或公司内部使用,这行可以删除或改为 Proprietary

Frontmatter 之后是 Markdown 格式的技能说明,包括角色定位、核心流程、输出格式、异常处理和示例对话。接下来我们就看一个完整的示例。

三、完整示例:发票信息提取技能

以下是一个可直接运行的完整 Skill,它封装了一个 Python 脚本,用于从 PDF 中提取发票信息。

1. SKILL.md

---name: invoice-extractordescription: 从 PDF 发票中提取关键字段(发票号、日期、金额、销售方等)。当用户需要“解析发票”、“提取发票信息”或“识别 PDF 中的账单数据”时使用。compatibility: 需要 python3 及依赖库 PyPDF2、pdfplumberallowed-tools: Bash(python:*)---# 发票信息提取技能## 角色你是一名专门处理财务文档的数据提取助手。你的任务是调用指定的 Python 脚本,从用户提供的发票 PDF 中提取结构化数据。## 核心流程1. **确认文件路径**:获取用户要处理的 PDF 文件路径。2. **执行提取脚本**:运行以下命令调用核心逻辑。   ```bash   python scripts/extract_invoice.py --pdf <用户提供的文件路径> --output invoice_result.json
读取结果
:命令执行成功后,读取生成的 invoice_result.json 文件。
呈现给用户
:将 JSON 内容转换为易于阅读的 Markdown 表格。

输出格式要求

提取状态
:明确告知用户解析是否成功。
数据表格
:使用 Markdown 表格展示提取到的字段。

示例输出表格

字段
发票号码
INV-2024-0123
开票日期
2024-03-15
价税合计
12,800.00
销售方名称
XX科技有限公司
购买方名称
YY贸易有限公司

异常处理

若脚本执行失败,请将错误信息原文告知用户,并建议检查 PDF 是否清晰可读或是否为扫描件。
若 JSON 中 success 字段为 false,直接向用户显示 error 字段的内容。

示例对话

用户:帮我提取 D:/发票/3月办公费.pdf 里的发票信息。

助手

好的,我现在使用发票提取技能处理该文件。

(内部执行:python scripts/extract_invoice.py --pdf "D:/发票/3月办公费.pdf" --output invoice_result.json)

处理完成,提取结果如下:

字段
发票号码
24332000000123456789
开票日期
2024-03-10
价税合计
3,580.00
销售方名称
晨光文具股份有限公司
购买方名称
上海XX信息技术有限公司
### 2. scripts/extract_invoice.py脚本需要遵循**标准化接口**和**结构化输出**的规范,这样才能被 AI 可靠地调用:```python#!/usr/bin/env python3# scripts/extract_invoice.pyimport argparseimport jsonimport sysimport osdef main():    parser = argparse.ArgumentParser(description="提取 PDF 发票信息")    parser.add_argument("--pdf", required=Truehelp="发票 PDF 文件路径")    parser.add_argument("--output", default="invoice_result.json"help="输出 JSON 文件路径")    args = parser.parse_args()    # 检查输入文件是否存在    if not os.path.exists(args.pdf):        result = {"success"False"error"f"文件不存在:{args.pdf}"}        with open(args.output, "w", encoding="utf-8"as f:            json.dump(result, f, ensure_ascii=False, indent=2)        print(json.dumps(result, ensure_ascii=False))        sys.exit(1)    # ========== 在这里调用你的实际提取逻辑 ==========    # 以下为模拟数据,请替换为真实的 PDF 解析代码    try:        extracted_data = {            "发票号码""24332000000123456789",            "开票日期""2024-03-10",            "价税合计""3,580.00",            "销售方名称""晨光文具股份有限公司",            "购买方名称""上海XX信息技术有限公司"        }        result = {"success"True"data": extracted_data}    except Exception as e:        result = {"success"False"error"f"解析失败:{str(e)}"}    # =============================================    # 输出结果到 JSON 文件    with open(args.output, "w", encoding="utf-8"as f:        json.dump(result, f, ensure_ascii=False, indent=2)    # 同时向 stdout 打印结果,方便 AI 直接读取    print(json.dumps(result, ensure_ascii=False))if __name__ == "__main__":    main()

关键规范:脚本输出必须是 JSON 格式,且必须包含 success 布尔字段。这样 AI 才能正确判断执行结果。日志输出请使用 sys.stderr,避免污染 stdout。

四、如何部署和使用

部署位置

Skills 可以放在两个位置:

位置
路径示例
作用范围
项目级项目根目录/.claude/skills/
仅当前项目可用,可随代码提交
用户级~/.claude/skills/
所有项目均可用
.claude/skills/├── invoice-extractor/   ├── SKILL.md   └── scripts/       └── extract_invoice.py└── another-skill/    └── SKILL.md

调用方式

Skills 支持两种调用方式:

自动触发
:AI 根据 description 字段自动判断是否使用该技能。当用户说“帮我提取发票”时,AI 会自动加载 invoice-extractor 技能。
手动调用
:部分工具支持直接输入 / 加技能名来调用(如 /invoice-extractor)。

常用工具

工具
说明
skill-creator
Anthropic 官方提供的元 Skill,能引导你一步步生成完整的 Skill 文件
OpenSkills
开源工具,可将 Skills 系统引入 Cursor、Windsurf 等其他 AI 编码工具

五、最佳实践与避坑指南

结合大量开发者的实践经验,以下是几个关键建议:

✅ 应该做的

description 写清楚“何时用”
:这是 AI 判断是否触发 skill 的唯一依据,务必包含触发场景关键词。
脚本输出必须是 JSON
:AI 只能可靠地解析结构化数据。
示例对话写一个
:在 SKILL.md 中加入

示例 段落,能显著提升 AI 执行的准确度。

大文档放到 references/
:SKILL.md 正文推荐不超过 500 行,详细的参考文档放到 references 目录,在需要时用链接引用。
解释“为什么”而不只是“做什么”
:现代 AI 理解原理后能更好地应对边缘情况。

❌ 需要避免的

指令塞太多
:一次性把全部细节都写进 SKILL.md 正文,会导致 AI “晕掉”——信息过载反而降低执行质量。
忽略安全校验
:脚本中避免直接拼接用户输入执行 rm -rf 等危险命令,建议做路径白名单校验。
日志污染 stdout
:print("正在处理...") 这类日志会混入 JSON 输出,导致 AI 解析失败。

六、总结

Agent Skills 让 AI 从“泛泛而谈”走向“专业做事”。它把领域知识、操作流程和执行脚本打包成一个可复用的模块,让 AI 每次都能按同一套高标准完成任务。

MCP 给 AI 装上了手脚,Skills 教会了 AI 怎么走路。

一个精心编写的 Skill,就像一份传承下来的“老师傅秘籍”——新人(AI)拿到它,就能立刻按最高标准干活。

现在,去创建你的第一个 Skill 吧!你会发现,让 AI 真正“会做事”,其实只需要一个文件夹和一个 Markdown 文件。