Agent Skills 基础知识

你是否遇到过这样的场景:每次和 Claude 对话时,都要反复重复同样的代码规范或工作流程?有没有想过,能不能把这些”经验”打包成一个可复用的工具,让 AI 自动调用?

Agent Skills 就是为解决这个问题而生的。简单来说,它是一种将专业知识、工作流程固化为可复用资产的方式——就像给 AI 配备了一本”专业手册”,它可以根据任务类型自动翻阅相应章节,而不是每次都从头学习。

理解 Agent Skills,关键在于把握它的本质:

它不是一种新工具,而是「行为规范 + 专业知识 + 触发时机」的组合封装

它的存在形式非常简单:

  • 一个 Skill = 一个文件夹 + 一个 SKILL.md 文件(核心配置)
  • SKILL.md 告诉 Claude:什么情况下用这个技能、具体怎么做、要注意什么
  • 相当于给 AI 写了一份”操作指南”,它遇到相关任务时会自动查阅
  • 你可以把它理解为「升级版的提示词」——不仅能复用,还能自动触发、团队共享

Agent Skills 是如何工作的?

Agent Skills 采用「渐进式披露」的加载机制,分三个层次逐步加载内容:

  • 第一层:快速扫描 — AI 先读取所有 Skill 的元数据(名称和描述),判断当前任务是否需要某个技能。这些元数据始终常驻在系统提示中,就像书籍的目录。
  • 第二层:按需加载 — 当任务匹配到某个 Skill 时,AI 自动读取该 SKILL.md 的完整内容,获取详细的操作指导。
  • 第三层:深度调用 — 如果需要,AI 会读取技能包中的额外文件(如示例代码、参考文档),或直接执行其中的脚本。

哪些平台支持 Agent Skills?

目前 Agent Skills 已经在多个主流 AI 编程工具中得到支持:

  • Claude 全家桶:包括 Claude.ai 网页版、Claude Code 命令行工具、Agent SDK
  • VS Code + GitHub Copilot:支持项目级技能(.github/skills/)和用户级技能
  • Cursor 编辑器:支持项目级和全局技能,可从 GitHub 直接安装
  • 其他平台:开放标准正在持续扩展,详见 GitHub 开源标准

为什么需要 Agent Skills?

虽然 Claude、Copilot 等 AI 助手已经很强大,但在实际使用中仍会遇到一些痛点:

  • 重复劳动:团队有统一的代码规范,但每次都要手动提醒 AI 遵循
  • 上下文缺失:处理 PDF 表单、调试 GitHub Actions 等复杂任务时,AI 可能不了解最佳实践
  • 提示词冗长:每次都要复制粘贴大段提示词,效率低下

Agent Skills 带来的改变是显而易见的:

  • 智能触发:AI 自动识别任务类型,调用对应技能,无需手动干预
  • 一次创建,无限复用:团队成员可以共享同一个 Skill,支持 Git 版本管理
  • 节省上下文:采用渐进式加载,只在需要时读取对应内容,避免上下文窗口溢出
  • 跨平台通用:同一个 Skill 可以在 Claude、Copilot、Cursor 等多工具中使用

四个核心概念

概念生活类比具体作用
Skill(技能包)一套完整的工具箱或菜谱完成特定任务(如写邮件、数据分析)的全部材料和说明
Instruction(指令)工具说明书或菜谱步骤告诉 Claude 做什么、怎么思考、输出格式是什么
Knowledge(知识库)工具零件清单或食材资料作为技能参考的上传文件(如 API 文档、产品手册)
Tool(工具)工具的特殊功能部件技能可调用的外部 API 或函数,用于获取数据或执行操作

Skill 的执行流程

  • 用户发出指令 → AI 分析意图,判断是否需要调用某个 Skill
  • 匹配到 Skill 后 → 加载对应的 SKILL.md,明确行为边界和可用工具
  • 执行过程中 → 只在必要时调用被允许的外部工具,否则按规则内部处理
  • 输出结果 → 整合约束后返回给用户,等待下一次指令

最简 Skill 结构

创建一个 Skill,最低只需要一个文件:

my-skill/
└── SKILL.md   (这是唯一必需的文件)

SKILL.md 的基本模板如下:

---
name: your-skill-name
description: 技能功能说明及使用场景
---

# 技能标题

## 具体指令
这里写清楚、可执行的规则。

## 使用示例
- 示例场景 1
- 示例场景 2

## 注意事项
- 注意点 1
- 注意点 2

SKILL.md 开头的 YAML 区域称为「元数据」,包含以下字段:

字段必填说明
name技能名称,默认使用文件夹名,只能含小写字母、数字、短横线(最长 64 字符)
description推荐技能用途及触发时机,Claude 依据此判断是否自动调用
argument-hint参数提示,如 [issue-number][filename] [format]
disable-model-invocation设为 true 禁用自动触发,仅可通过 /name 手动调用(默认 false)
user-invocable设为 false/ 菜单隐藏,作为后台能力使用(默认 true)
allowed-tools技能激活时 Claude 可直接使用的工具列表
model指定技能使用的模型
context设为 fork 时在子代理上下文中运行
agent子代理类型(需配合 context: fork 使用)
hooks技能生命周期钩子配置

在 SKILL.md 中,还可以使用以下动态变量:

变量用途
$ARGUMENTS调用技能时传入的所有参数
$ARGUMENTS[N]按索引获取参数,如 $ARGUMENTS[0] 表示第一个参数
$N参数简写,如 $0 等同于 $ARGUMENTS[0]
${CLAUDE_SESSION_ID}当前会话 ID,可用于日志、临时文件命名等

举个实际例子:

---
name: session-logger
description: 记录当前会话的活动日志
---

请将以下内容追加到日志文件:

logs/${CLAUDE_SESSION_ID}.log

$ARGUMENTS

使用方式:

/session-logger 用户登录成功

系统会自动生成一个属于当前会话的专属日志文件。

SKILL.md 文件深度解析

以 Claude 的 PDF 处理技能为例:Claude 本身可以读取 PDF 内容,但无法直接编辑(如填写表单)。通过编写一个专门的 Skill,就可以补齐这块功能短板。

  • 文件形态:一个包含 SKILL.md 的文件夹
  • 必备元数据:文件开头的 YAML 块,至少包含 name 和 description,会在启动时预加载到系统提示中

多文件 Skill 与渐进式披露

当 Skill 变得复杂时,可以将内容拆分到多个文件,实现渐进式加载:

  • 第一层:元数据 — 让 Claude 快速判断这个技能是做什么的,不加载全文
  • 第二层:SKILL.md 主体 — 判定相关后,才加载完整的指令内容
  • 第三层及更深层:附属文件 — 按需引用(如 forms.md),保持主文件精简

下图展示了一个技能被触发时,上下文窗口的变化过程:

  • 初始状态:上下文包含系统提示词、所有技能的元数据、用户指令
  • 触发技能:调用工具读取对应的 SKILL.md 文件
  • 按需加载:根据需要读取附属文件(如 forms.md)
  • 执行任务:所有必要信息加载完成后,执行用户要求的操作

推荐的 Skill 目录结构

为避免单个文件过于臃肿,建议采用以下结构组织你的 Skill:

  • SKILL.md — 放置核心规则和必读内容
  • reference.md — 存放详细参考资料
  • examples.md — 收集使用示例
  • scripts/ — 放置可执行脚本(运行时不加载,按需调用)

一个典型的 Skill 文件夹结构:

my-skill/
├── SKILL.md          # 核心配置和指令(必选)
├── reference.md      # 参考文档
├── examples.md       # 示例合集
└── scripts/
    └── helper.py     # 辅助脚本

动手创建第一个 Skill

光说不练假把式。让我们通过一个简单的实例,亲手创建一个 Skill,感受它的威力。

创建目录结构

Skill 可以存放在两个位置:

  • ~/.claude-code/skills/ — 全局技能,所有项目都能用
  • 项目目录/.claude/skills/ — 项目专属技能,仅当前项目有效

本教程在项目目录下演示。首先创建一个测试目录:

mkdir claude-test
cd claude-test
mkdir -p .claude/skills/python-naming-standard

编写 SKILL.md

在刚才创建的目录中新建 SKILL.md 文件:

---
name: python-naming-convention
description: 当用户编写、审查或重构 Python 代码时,强制执行内部函数命名规范
---

## 核心规则
1. 所有内部辅助函数必须以 \`_internal_\` 前缀开头
2. 发现不符合规则的代码时,主动指出并给出修改建议
3. 执行 \`claude commit\` 之前,必须检查是否符合此规范

## 代码示例
\`\`\`python
# ✅ 正确写法
def _internal_calculate_discount(user_score):
    return user_score * 0.1

# ❌ 错误写法
def calculate_discount(user_score):
    return user_score * 0.1
\`\`\`

元数据字段说明:

  • name:只能包含小写字母、数字和连字符,不超过 64 个字符
  • description:清晰描述技能的用途和触发时机,不超过 1024 个字符

创建完成后,目录结构应该如下所示:

一个完整的项目目录结构示例:

my-project/
├─ src/
│  └─ test.py              # 源代码文件
├─ .claude/
│  ├─ skills/
│  │  └─ python-naming-standard/
│  │     ├─ SKILL.md       # 技能定义(核心文件)
│  │     └─ README.md      # 技能说明(可选,供人类阅读)
│  └─ config.yml           # Claude 项目配置(可选)
├─ .gitignore
└─ README.md

测试 Skill 效果

在终端中启动 Claude Code:

claude

然后输入以下任务:

帮我写一个计算用户折扣的函数

Claude 会自动检测到你的请求涉及”Python 代码编写”,从而触发 python-naming-convention 技能:

根据 SKILL.md 中定义的规则,Claude 会生成符合规范的代码:

def _internal_get_discount(user_score):
    # 折扣计算逻辑
    if user_score > 100:
        return 0.2
    return 0.1

扩展:添加资源文件

除了 SKILL.md,你还可以在技能文件夹中添加:

    • examples/ — 存放代码示例或测试用例

    • references/ — 存放 API 文档、规范文件等参考资料

    • scripts/ — 存放可执行的辅助脚本(如 PDF 处理脚本)

然后在 SKILL.md 中引用这些资源:

查看示例代码:./examples/sample.py
运行处理脚本:使用工具执行 ./scripts/process.py


使用官方技能市场

除了自己编写,你还可以直接使用社区贡献的技能。2025 年末,Agent Skills 开放标准发布后,官方推出了技能仓库。

    • 官方仓库:访问 anthropics/skills 获取预设技能(如 React 优化器、SQL 调优工具等)

    • Skill Creator:直接告诉 Claude「把我刚才教你的 Docker 配置逻辑总结成一个 Skill」,它会自动为你生成 SKILL.md 文件

要将官方仓库添加为插件市场,在 Claude Code 中执行:

/plugin marketplace add anthropics/skills

添加成功后,使用 /plugin 命令查看已安装的插件:

安装技能包的步骤:

    • 选择「浏览并安装插件」

    • 选择 anthropic-agent-skills 插件源

    • 选择要安装的技能包(如 document-skills 文档技能 或 example-skills 示例技能)

点击「立即安装」:

你也可以直接用命令行安装:

/plugin install document-skills@anthropic-agent-skills
/plugin install example-skills@anthropic-agent-skills

注意:通过插件安装的技能存放在 ~/claude/plugins/marketplaces/ 目录下。

安装完成后,记得重启 Claude Code 使其生效。

安装 document-skills 后,你就可以这样使用:

使用 PDF 技能提取 path/to/file.pdf 中的表单字段

或者让 Claude 创建演示文稿:

创建一个 Agent Skills 的演示 PPT

Claude 会自动调用 /document-skills:pptx 技能:

开始生成文件:

完成后告诉你文件保存的位置:


延伸阅读