1. Agent Skills 定义

包含指令(instructions)脚本(scripts)资源(resources)文件夹

  • 指令:md文件中的文字指令
  • 脚本:python脚本或者bash命令
  • 资源:参考资料
    Claude 判定用户需求与某个 Skill 功能适配,就会加载阅读它的指令并执行脚本。
    它是对 slash command 的一种约束和抽象,是对主agent执行某一特定任务的全方面指导。

SKILL 是一种理念,一种规范:
- 技术人员不要把它想的很简单(没有技术上的难点,但是理念很重要)
- 非技术人员也不要把它想的很复杂(没有技术上的门槛,只要理念正确)

2. Agent Skills 组成

2.1. Skill.md

Skill 的最核心指令文件,该文件必须以YAML前置元数据开头,其中包含:
必填的元数据(渐进式披露第一级)

  • name:名称
  • description:功能和使用时机
    选填的元数据
  • allowed-tools:来限制当某个 SKILL 激活时 Claude 可以使用的工具。
  • license:适用于该技能的许可证文件名称
  • metadata:KV存储其他属性
  • version: 1.0.0
  • dependencies:python>=3.12

Markdown格式正文(渐进式披露第二级

  • 功能描述
  • 执行步骤
  • 技能示例
  • 依赖文件夹内的子指令、脚本和资源等渐进式披露第三级

  • 三步渐进式

2.2. Script

大型语言模型在许多任务上表现出色,但某些操作更适合用传统代码执行,主要是为了保障执行确定性,并且能节省toke消耗和上下文空间。
下面的示例中,PDF SKILL 包含一个预先编写的Python脚本,该脚本可以读取PDF并提取所有表单字段。Claude无需将脚本或PDF加载到上下文中就能运行此脚本。
脚本的调用

2.3. resources

需要补充知识给 Claude 时再按需加载到上下文的参考资料

  • 数据库表结构
  • API 规范
  • 领域知识

3. Agent Skills 构造过程

  1. 让 Claude 不通过模型执行这个任务,观察它在哪些地方遇到困难或需要额外的背景信息等卡点,这些 卡点 就是后续构建 Skill 需要弥补的指令脚本以及资源
  2. 核心 SKILL.md 文件要按功能拆分多个并互相引用,按需加载以减少 token 消耗。
  3. 需要明确脚本是作为可执行工具还是参考文档,让 Claude 清楚是直接运行脚本还是将其读入上下文。
  4. 观察 Claude 如何使用你的技能,然后不断修正迭代你的 SKILL,来规避一些问题
  • 意外的执行路径:避免 Skill 执行逻辑失控
  • 对某些特定上下文的过度依赖:避免 Skill 适用范围过窄
  1. namedescription是Claude决定是否触发SKILL的关键
  2. 与Claude一起迭代你的SKILL:把Claude执行当前Skill的经验(成功方法、踩过的坑)转化为 Skill 的固化内容,让Skill从你觉得好用变成 Claude 觉得好用。

4. 简单 Skill 示例

pdf-processing/          # 技能根目录(以技能功能命名)
├── SKILL.md             # 【核心指令】Skill的入口文件定义基础信息、核心能力与使用指引
├── FORMS.md             # 【子指令】专门进行PDF表单处理
├── REFERENCE.md         # 【资源文件】API参考手册
└── scripts/             # 【脚本目录】
    ├── fill_form.py     # 【脚本1】PDF表单填写的脚本
    └── validate.py      # 【脚本2】PDF内容验证的脚本

SKILL.md:

---
name: pdf-processing
description: Extract text, fill forms, merge PDFs. Use when working with PDF files, forms, or document extraction. Requires pypdf and pdfplumber packages.
---

# PDF Processing

## Quick start

Extract text:
```python
import pdfplumber
with pdfplumber.open("doc.pdf") as pdf:
    text = pdf.pages[0].extract_text()
```python


For form filling, see [FORMS.md](FORMS.md).
For detailed API reference, see [REFERENCE.md](REFERENCE.md).

## Requirements
Packages must be installed in your environment:
```bash
pip install pypdf pdfplumber
```bash

5. 复杂 Skill 示例 (官方 skill-creator 解析)

5.1. 目录结构

skill-creator/               #  技能根目录
├── SKILL.md                 # 【核心指令】
└── scripts/                 # 【脚本目录】
    ├── init_skill.py        # 【脚本1】模板化方式快速创建标准化的 **SKILL** 目录结构及配套文件并设置TODO供给后续用户填写修改
    ├── package_skill.py     # 【脚本1】调用validate.py校验然后ZIP打包
    └── quick_validate.py    # 【脚本2】校验SKILL.MD格式是否正确

5.2. SKILL.md 结构概述

  1. 元数据头:定义SKILL的名称,功能,使用时机
  2. 介绍SKILL是什么可以提供什么功能
    • 特定领域工作的多步骤执行流程指导
    • 与特定文件格式(如 PDF)或 API 交互的操作说明
    • 企业专属私域知识、数据 schema、公司架构、业务信息等
    • 用于复杂 / 重复任务的脚本、参考文档、模板等
  3. SKILL技能组成结构
     技能名称/
     ├── SKILL.md (必填)
     │   ├── YAML 元数据(必填)
     │   │   ├── name: 技能名称(必填,需明确)
     │   │   └── description: 技能描述(必填,需说明适用场景)
     │   └── Markdown 说明文档(必填,含使用流程等核心信息)
     └── 捆绑资源(可选)
         ├── scripts/          - 可执行代码(Python/Bash 等)
         ├── references/       - 参考文档(按需加载到上下文的资料)
         └── assets/           - 输出时用到的文件(用于最终输出的模板、图标等)
    
  4. 以上各部分组成的详细介绍(作用、工作时机、示例、优势、注意事项)
  5. 渐进式披露原则介绍(三级)
  6. 创建的完整流程
    6.1. 和claude串通知识,给他提供你要做的skill示例让他知道技能需求
    6.2. 抽取可复用技能为脚本(PDF抽取表单)、模板(HTML模版)、参考文档
    6.3. 使用 init_skill.py [skillname] [path] 脚本初始化SKILL(下面讲)
    6.4. 编写SKILL(scripts、references、assets然后是更新SKILL.md)(记住不要依赖当前claude窗口已有的知识去认为另一个claude也有)
    6.5. 使用 package_skill.py [path]打包SKILL (下面讲)
    6.6. 迭代更新(你和claude一起不断完善SKILL)

5.3. init_skill.py 功能概述

  1. 四个木块的模版
  2. title_case_skill_name(skill_name) 技能名字转化格式-分割
  3. init_skill(skill_name, path)
    3.1. 目录路径检查校验创建
    3.2. 通过SKILL_TEMPLATE生成核心SKILL.md
    3.3. 使用另外三个模板分别初始化scripts(example.py)、references(api_reference.md)、assets(example_asset.txt)
    3.4. 输出init 成功信息以及用户TODO
    • SKILL_TEMPLATE:补充技能功能和触发场景、1-2 句话概括技能核心能力、选择技能文档结构(工作流(顺序性workflow)、任务(功能点ABC)、指南(规范和要求)、能力(?))、替换章节标题并补充核心内容
    • EXAMPLE_SCRIPT:补充实际脚本

5.4. package_skill.py 功能概述

  1. 先校验(路径、SKILL.md文件)
  2. 调用quick_validate.py校验(后面讲)
  3. 再打包(ZIP 包输出到指定路径)

5.5. quick_validate.py 功能概述

简单校验,只校验skill.md内容

  1. 校验- - -
  2. 校验 name是否合法:正则表达式 r’^ [a-z0-9-]+$’ (a-b-c)
  3. 校验 description里面不能有 <>

6. 官方最佳实践建议

6.1.简洁

  • 无需解释claude知道的知识
  • 使用pdfplumber提取文本 而不是 PDF是…pdfplumber是…请帮我…
  • name(64): a-b-c(禁用claude关键字)
  • description(1024): 描述skill功能和何时使用(禁用 你xx 我xx
  • 主 SKILL.md 控制在 500 行内,多了拆分子md

6.2.合理自由度

  • skill是介于agent和workflow之间的滑动变阻器
  • 低:明确每一步该怎么做(workflow)
  • 中:给模板,让他自己模板里面填过程
  • 高:给目标和规则,自由发挥(agent)

6.3.避免深度嵌套引用

  • √ skil.md : see [a.md] see [b.md] see [c.md]
  • × { skil.md:see [a.md] } { a.md: see [b.md] } { b.md: see [c.md]}

6.4.使用术语保持一致性

帮我查询、搜索、检索、查找 Elasticsearch

6.5. 补充第三单元内容(如何构造 Agent Skills)

  • 开发skill前明确功能、质量、效率具体检验标准
  • 先让 ClaudeA 不用模型执行任务,记录问题
  • 和 ClaudeA 一起构建 skill 多轮修复加+测
  • 你和 Claude A一起构建的 skill 给 Claude B测试

6.6. scripts编写规范

  • 脚本内部处理异常而不是直接丢给上层
  • 脚本参数说明缘由(为什么超时时间设置30)
  • 提前手写or用模型编写脚本而不是在skill-build过程中生成(省skill-build过程token,明确脚本功能)

6.7. 计划-验证-执行 模式(PVE)

workflow中间添加验证step,而不是a -> b -> c -> d-> e…

6.8. 其他

  • 避免假设工具已安装
  • 适配三个模型做测试
  • 长资源文本加目录
  • 避免时效性内容
  • 可以使用模板控制输出格式
  • 可以提供输入/输出示例给模型
  • 可以强制条件工作流

7. 总结

Skills 是什么?

  • 一个文件夹?
  • 一种限制大模型工作的规范?
  • 一种理念?
  • 一个调用脚本的指令工具?
  • 一个可以替代 langgraph 的 agent 框架?
  • 使用模型的手段

随着模型能力不断提升、上下文窗口不断变大,这个手段会越来越简单,越来越低代码量

参考文献

  1. Anthropic Engineering Blog: Equipping agents for the real world with Agent Skills
  2. Agent Skills Overview - Claude Docs
  3. Skills in Claude Code - Claude Docs
  4. skill creator - anthropics github
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐