给 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 解决的是「模型该怎么用」。
打个比方:
两者是互补关系,不是替代关系。一个强大的 Agent = 通用模型 + MCP 连接外部工具 + Skills 提供操作流程。
核心设计:渐进式披露
Skills 最精妙的设计是渐进式披露(Progressive Disclosure)——它把信息分成三层,按需加载:
| 第一层:元数据 | |||
| 第二层:SKILL.md 正文 | |||
| 第三层:附加资源 |
这意味着:即使你有 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:*) # 可选:授权使用的工具---
关于 license:
license: 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. **执行提取脚本**:运行以下命令调用核心逻辑。```bashpython scripts/extract_invoice.py --pdf <用户提供的文件路径> --output invoice_result.json
输出格式要求
示例输出表格
异常处理
示例对话
用户:帮我提取 D:/发票/3月办公费.pdf 里的发票信息。
助手:
好的,我现在使用发票提取技能处理该文件。
(内部执行:python scripts/extract_invoice.py --pdf "D:/发票/3月办公费.pdf" --output invoice_result.json)
处理完成,提取结果如下:
### 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=True, help="发票 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 支持两种调用方式:
常用工具
| skill-creator | |
| OpenSkills |
五、最佳实践与避坑指南
结合大量开发者的实践经验,以下是几个关键建议:
✅ 应该做的
示例 段落,能显著提升 AI 执行的准确度。
❌ 需要避免的
六、总结
Agent Skills 让 AI 从“泛泛而谈”走向“专业做事”。它把领域知识、操作流程和执行脚本打包成一个可复用的模块,让 AI 每次都能按同一套高标准完成任务。
MCP 给 AI 装上了手脚,Skills 教会了 AI 怎么走路。
一个精心编写的 Skill,就像一份传承下来的“老师傅秘籍”——新人(AI)拿到它,就能立刻按最高标准干活。
现在,去创建你的第一个 Skill 吧!你会发现,让 AI 真正“会做事”,其实只需要一个文件夹和一个 Markdown 文件。
夜雨聆风