本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。

Agent Skills 的发展简史

Agent Skills 的出现,其实是 AI 能力组织方式自然演进的结果。

早期的大模型应用主要靠提示词工程,把任务规则、流程说明、输出格式全部写进 System Prompt。这种方式简单直接,但提示词越写越长,上下文窗口被大量占用,关键指令容易被淹没,而且很难在不同项目之间复用。

随后 Function Calling 和工具调用逐渐普及,模型开始能够调用搜索、代码执行、数据库查询等外部能力。但这更多解决的是"能不能调用工具"的问题,还没有很好地回答"应该按什么流程、遵循什么标准、产出什么格式"的问题。

2025 年 10 月,Anthropic 在 Claude Code 中首次推出 Agent Skills 能力,把可复用的任务流程封装成以 SKILL.md 为核心的文件夹结构。 同年 12 月 18 日,Anthropic 将 Agent Skills 规范作为开放标准发布,并开源官方技能库,随后 OpenAI Codex、GitHub Copilot、VS Code、Cursor 等产品陆续跟进支持。 到 2026 年,Agent Skills 已经从单一产品的功能扩展为跨平台的能力封装格式,公开可用的 Skills 数量逼近百万级,累计安装约 2.8 亿次。

从技术演进看,Agent Skills 标志着 AI 应用开发从"手搓提示词"走向"标准化技能工程"。它把专业知识、执行流程、脚本工具和验收标准打包在一起,让 Agent 不再只是会聊天,而是能稳定完成具体工作。

一个 Skill 长什么样

最简单的 Skill 只需要一个文件:

my-skill/
└── SKILL.md

完整结构可以包含这些目录:

my-skill/
├── SKILL.md          # 必需:元数据 + 指令
├── scripts/          # 可选:可执行脚本
├── references/       # 可选:参考文档
├── assets/           # 可选:模板、资源
└── ...

核心文件 SKILL.md 的结构

SKILL.md 由两部分组成:YAML Frontmatter(元数据) 和 Markdown 正文(指令),用 --- 分隔。

Frontmatter 元数据

官方规范只允许 6 个字段,其中 2 个必填:

字段 必填 说明
name ✅ 唯一标识,1-64 字符,仅小写字母/数字/连字符,必须与目录名一致
description ✅ 触发核心描述,1-1024 字符,Agent 据此决定是否加载
license ❌ 许可证,如 Apache-2.0
compatibility ❌ 环境要求,最多 500 字符
metadata ❌ 自定义键值对(作者、版本等放这里)
allowed-tools ❌ 允许使用的工具列表(实验性)

注意:author、version 等字段不能直接写在 frontmatter 顶层,必须放在 metadata 里,否则验证失败。

Markdown 正文

正文是给 Agent 的执行指令,建议控制在 500 行 / 5000 tokens 以内,超出部分拆分到 references/。 应包含:

  • 何时使用:帮助 Agent 判断触发时机
  • 分步指令:用祈使句写清楚每一步做什么
  • 输出规范:规定结果格式
  • 示例:输入输出对,降低理解成本

动手:写第一个 Skill

我们以 “数据周报生成器” 为例。很多测试或开发人员每周都要从数据库拉数据、做图表、写报告,这个流程完全可以交给 AI 自动完成。

第一步:创建目录

mkdir -p .agents/skills/weekly-report

第二步:编写 SKILL.md

---
name: weekly-report
description: >
  自动生成数据分析周报。当用户需要分析销售数据、制作图表并生成周报时使用。
  支持连接数据库查询、Python 数据处理和 Markdown 报告输出。
license: MIT
metadata:
  author: gang
  version: "1.0"
---

# 数据周报生成技能

## 何时使用本技能

当用户提出以下请求时触发本技能:
- "帮我生成上周的销售周报"
- "分析一下最近的数据,出个报告"
- "把上周的测试结果汇总一下"
- "做个数据分析周报"

## 执行流程

1. **数据获取**:使用 `scripts/query_db.py` 连接数据库,执行 SQL 查询,获取指定时间段的数据。
2. **数据分析与绘图**:使用 `scripts/analyze.py` 对数据进行同比/环比分析,并生成柱状图和趋势图,图片保存到 `./output/` 目录。
3. **报告生成**:根据 `assets/report_template.md` 模板,填充分析结果和图表,生成 Markdown 格式的周报。
4. **结果输出**:将生成的报告展示给用户,并告知图表存放路径。

## 注意事项

- 数据库连接信息需在 `.env` 文件中配置,脚本会自动读取。
- 如果数据查询为空,应生成"本周无数据"的提示报告,而不是报错。
- 生成的图表统一保存在 `./output/` 目录下,文件名包含日期。

## 输出格式

报告必须包含以下三个部分:
1. **数据概览**:关键指标汇总(表格形式)
2. **趋势分析**:同比/环比变化,配图表
3. **结论与建议**:用简短的 bullet points 列出

第三步:配套脚本(可选)

weekly-report/
├── SKILL.md
├── scripts/
│   ├── query_db.py      # 数据库查询脚本
│   └── analyze.py       # 数据分析与绘图脚本
├── references/
│   └── db_schema.md     # 数据库表结构说明
└── assets/
    └── report_template.md  # 报告模板

第四步:测试。在支持 Skills 的客户端(如 Claude Code、Cursor)中打开项目,输入"帮我生成上周的销售周报",Agent 会自动识别并加载你的 Skill,按步骤执行。

渐进式加载机制

Agent 不会一次性加载所有内容,而是分三层:

  1. 发现层:启动时只读取每个 Skill 的 name + description(约 100 tokens)
  2. 激活层:任务匹配时加载完整 SKILL.md 正文
  3. 执行层:按需读取 scripts/、references/、assets/ 中的文件

这就是为什么 description 写得准不准,直接决定了 Skill 能不能被触发。

编写高质量 Skill 的要点

  • description 要具体:包含功能、场景、触发关键词。“处理数据"太模糊,“分析 CSV 文件,计算统计摘要并生成图表"更精准。
  • 单一职责:一个 Skill 只做一件事,复杂任务靠组合多个 Skill。
  • 关键校验用脚本:确定性逻辑写在 scripts/ 里,比让模型用自然语言判断更可靠。
  • 指令前置:最重要的步骤放在正文开头,必要时重复强调。
  • 命名用动名词:如 analyzing-sales-data、generating-unit-tests,见名知意。

用 skill-creator 自动生成 Skill

https://github.com/anthropics/skills/tree/main/skills/skill-creator

如果你不想从零手写 SKILL.md,可以直接使用 Anthropic 官方提供的 skill-creator。它是一个“元技能”,也就是专门用来帮你创建、校验、测试和优化其他 Skill 的工具,源码在 GitHub 的 anthropics/skills 仓库中。

安装方式大致有两种:

  • Claude Code 中安装:先添加官方插件市场,再安装示例技能包:
    /plugin marketplace add anthropics/skills
    /plugin install example-skills@anthropic-agent-skills
    
  • 手动安装:从 GitHub 仓库下载 skill-creator 目录,放到本地技能目录,例如 ~/.claude/skills/skill-creator。

安装完成后,在对话里输入:

使用 skill-creator 帮我创建一个新的 Claude Skill。
目标是:自动生成数据分析周报,读取数据库或 CSV 数据,生成图表,并输出 Markdown 报告。

skill-creator 会追问你几个问题:技能名称、触发场景、输入输出、允许使用的工具、边界条件等。回答完后,它会自动生成标准目录结构,包括 SKILL.md、scripts/、assets/、references/ 等文件。

它还能帮你做几件比较工程化的事:

  • 校验格式:检查 SKILL.md 的 frontmatter、字段、权限配置是否合规;
  • 跑测试用例:对比“带 Skill”和“不带 Skill”的输出差异;
  • 迭代优化:根据测试结果调整 description 和正文指令;
  • 打包分发:把技能打包成可分享的 .skill 文件。

如果你只是想快速试手,用 skill-creator 会比手写更省事;但如果你想彻底理解 Agent Skill 的结构,还是建议先照着前面的步骤手动写一遍。

进阶:评估你的 Skill

写完后别只靠“感觉还行”来判断。Agent Skill 的评估,核心思路其实和写单元测试很像:定义好输入和预期输出,反复跑,看它是不是稳定达标。

一个测试用例怎么设计

每个测试用例只需要三样东西:

  • Prompt:真实用户会怎么问,比如“生成上周的销售周报”
  • Expected:好的输出应该长什么样,比如“报告必须包含数据概览、趋势分析、结论与建议三个部分”
  • Input files(可选):测试需要的输入文件,比如一份示例 CSV

把这些用例集中放在 evals/evals.json 里,就构成了你的测试集。

配对评测:装上和关掉各跑一遍

最关键的一步是对比运行:同一个测试用例,装上 Skill 跑一遍,关掉 Skill 再跑一遍。

这样你才能回答两个问题:

  1. 这个 Skill 真的有用吗? 如果关掉 Skill 模型也能做得一样好,没必要保留。
  2. 它带来了什么增量? 装上之后,输出更完整了?更准确了?还是反而更慢了、更贵了?

看什么指标

跑完一轮测试后,重点关注这几个维度:

  • 通过率(Pass Rate):测试用例中有多少比例达到了预期
  • 耗时(Latency):装上 Skill 后响应变快还是变慢了
  • Token 消耗(Cost):每次执行花了多少 token,增量是否值得

如果装上 Skill 后通过率大幅提升、耗时和成本可控,说明这个 Skill 是有价值的。反之,如果结果差不多,那就要考虑简化或移除它。

自动化评估

如果你不想手工跑对比,官方提供的 skill-creator 内置了一套评估流水线,可以自动完成以下工作:

  • Grader:逐条检查输出是否满足预期
  • Comparator:盲测对比“有 Skill”和“无 Skill”的输出,客观打分
  • Analyzer:分析胜者为什么赢,给出改进建议
  • Benchmark:批量跑测试集,输出通过率、耗时、token 用量等汇总指标

这些工具把评估从“凭感觉”变成了“看数据”,让你在每次修改 Skill 后都能量化验证效果。

一句话总结,评估的本质就是:定义好“什么算成功”,然后反复跑,用数据证明你的 Skill 确实比裸模型做得更好。

小结

Agent Skills 的核心思想就一句话:教一次,永久受益。 把你知道的工作流程、团队规范、脚本工具打包进一个文件夹,AI 就能在需要时自动加载并精准执行。从 weekly-report 开始动手试试吧。

参考: https://agentskills.io/