目录
5. 使用 Agent Skills 装备真实世界的 Agent #
1. 什么是 Skills? #
Skills 是包含指令、脚本和资源的文件夹,Claude 可以动态加载这些内容以提高在特定任务上的表现。 Skills 教会 Claude 如何以可重复的方式完成特定任务,无论是使用公司的品牌指南创建文档、按照组织特定的工作流程分析数据,还是自动化个人任务。
1.1 Skills 的工作原理 #
系统采用渐进式披露(progressive disclosure)机制:
- Claude 评估可用的 Skills
- 加载相关的 Skills
- 当用户请求完成任务时应用相应的指令
这种机制可以防止上下文窗口过载。
1.2 两种 Skills 类别 #
1. Anthropic Skills(官方 Skills)
- 由 Anthropic 创建
- 用于文档创建(Excel、Word、PowerPoint、PDF)
- 在适当的时候自动调用
2. Custom Skills(自定义 Skills)
- 由用户或组织创建
- 用于专门的工作流程,包括:
- 应用品牌指南
- 生成电子邮件模板
- 结构化会议笔记
- 在 JIRA 等工具中创建任务
- 数据分析工作流
- 个人自动化任务
1.3 主要优势 #
- 提高特定任务的性能
- 捕获和保持组织知识的一致性
- 使用 Markdown 进行简单定制(定制简单的 Skills 无需编写代码)
1.4 与其他功能的对比 #
Skills vs. Projects(项目)
- Skills:动态激活
- Projects:持续加载静态知识
Projects(项目)
Projects 是具有独立聊天历史和知识库的自主工作空间,Claude的付费订阅用户可以使用。用户可以在每个项目中组织文档、提供上下文,并与 Claude 进行专注的对话。
核心特性:
- 项目知识库:上传文档、文本、代码和文件供 Claude 在对话中引用;可建立项目特定的指令来定制 Claude 的响应风格、正式程度或视角
- 检索增强生成(RAG):当项目知识接近上下文限制时,自动启用 RAG 模式,将容量扩展最多 10 倍,同时保持响应质量
- 协作功能(Team 和 Enterprise 计划):三种权限级别("可使用"、"可编辑"、创建者权限);支持单个成员、批量邮件列表、组织范围的共享
Skills vs. MCP
- MCP:将 Claude 连接到外部服务和数据源
- Skills:提供程序性知识------关于如何完成特定任务或工作流程的指令
- 两者可以结合使用:MCP 连接让 Claude 访问工具,而 Skills 教会 Claude 如何有效地使用这些工具
Skills vs. Custom Instructions
- Custom Instructions:广泛应用
- Skills:针对特定任务激活
Custom Instructions
"Custom Instructions" 对应于 Claude 的个性化功能,主要包括:
- Profile Preferences(配置文件偏好)
- 账户范围的设置,帮助 Claude 理解用户的通用偏好
- 应用于所有与 Claude 的对话
- 可以描述:偏好的方法或途径、常用的术语或概念、典型场景、沟通偏好
- Project Instructions(项目指令)
- 帮助 Claude 理解特定项目的上下文和要求
- 仅应用于该项目内的聊天
- 提供:项目特定的上下文、工作流程指南、任务要求、Claude 应扮演的角色
- 仅付费计划可用
- Styles(样式)**
- 定制 Claude 与用户的沟通方式
- 专注于 Claude 如何格式化和传递响应
- 调整语气/格式,在不同沟通风格间切换
与 Skills 的区别:这些个性化功能广泛应用(Profile Preferences 应用于所有对话,Project Instructions 应用于整个项目),而 Skills 是针对特定任务激活,仅在相关时加载。
2. 在 Claude 中使用 Skills #
Skills 通过提供专门知识(knowledge)和工作流程(workflows)扩展 Claude 的能力。当前该功能作为预览版提供给 Pro、Max、Team 和 Enterprise 计划用户,需要启用代码执行工具(code execution tool)。 Skills 也以 beta 形式提供给 Claude Code 用户和所有使用代码执行工具的 API 用户。
2.1 访问 Skills #
在 Settings > Capabilities 管理 Skills。界面功能包括:
- 查看所有可用的 Anthropic Skills 和自定义 Skills
- 开启或关闭单个 Skills
- 上传新的自定义 Skills(ZIP 文件)
- 查看每个 Skill 的启用或添加时间
2.2 内置的 Anthropic Skill #
Claude 提供了多个内置的 Skill,包括:
- 增强的 Excel 电子表格创建和操作
- 专业的 Word 文档创建
- PowerPoint 演示文稿生成
- PDF 创建和处理
这些 Skills 在相关时自动激活,无需明确调用。
2.3 自定义 Skill 上传流程 #
- 按照要求的结构创建 Skill
- 将 Skill 文件夹打包为 ZIP 文件
- 前往 Settings > Capabilities
- 点击 "Upload skill" 并选择 ZIP 文件
- Skill 出现在列表中,可以开启或关闭
注意 :上传的 Skills 是个人账户私有的,无法直接与组织成员共享。关于如何创建和打包 Skill 的详细说明,请参见 4. 如何创建自定义 Skill。
2.4 Claude 如何使用 Skills #
Claude 根据任务需求自动识别和加载相关的 Skills。系统会自动确定何时需要每个 Skill,无需手动选择。
2.5 安全注意事项 #
- Skills 在沙盒环境中运行,会话之间不保留数据
- 主要风险包括提示注入和数据泄露
- 注意只安装来自可信来源的 Skills
- 使用前审查 Skill 内容,特别注意代码依赖项和外部连接
2.6 问题排查 #
- Skills 部分不可见:确保在 Settings > Capabilities 中启用了代码执行
- Claude 未使用 Skill:验证 Skill 已开启、有清晰的描述、使用了结构良好的指令
- 上传失败:检查 ZIP 文件是否符合大小限制、文件夹名称是否与 Skill 名称匹配、是否存在必需的 Skill.md 文件
- Skills 显示为灰色:代码执行或 Skills 可能在组织级别被禁用
3. 在 Claude Code 中使用 Skills #
Claude Code 中的 Skills 使用方式与 Web 界面有显著不同。Skills 通过文件系统目录管理,Claude 根据请求上下文自动激活相关 Skills。
3.1 Skills 的存储位置 #
个人 Skills (~/.claude/skills/skill-name/)
- 用于个人工作流程
- 跨所有项目可用
项目 Skills (.claude/skills/skill-name/)
- 位于项目目录内
- 通过 git 同步,团队成员共享
插件 Skills
- 随安装的插件自动提供
3.2 SKILL.md 文件要求 #
每个 Skill 必须包含一个 SKILL.md 文件,包含 YAML frontmatter:
---
name: lowercase-name-with-hyphens
description: 功能说明和激活触发器
---
字段要求:
name:仅小写字母、数字、连字符description:说明功能和激活条件
关键要点:description 字段对于 Claude 发现何时使用 Skill 至关重要。应同时指定功能和使用场景,包含用户可能提到的关键词。描述模糊会导致发现困难。
3.3 支持文件(supporting files) #
Skills 可以包含可选的参考文档、示例、脚本和模板,组织在子目录中。Claude 在需要时渐进式加载这些内容。
3.4 工具访问限制 #
通过 allowed-tools 字段限制工具访问:
---
name: my-skill
description: 描述
allowed-tools:
- Read
- Grep
---
当此 Skill 激活时,Claude 只能使用指定的工具,无需请求权限。这可以确保只读操作或限定范围的功能。
3.5 发现和测试 #
发现 Skills:
- Claude 自动从所有三个位置发现 Skills
- 可以询问:"有哪些 Skills 可用?"来列举所有 Skills
测试 Skills:
- 构造与描述匹配的请求
- 如果 Claude 未激活 Skill,说明描述可能不够具体
3.6 团队共享方法 #
主要方法:通过包含 Skills 的插件分发
备选方法:将项目 Skills 提交到 git 仓库,团队成员拉取更新后自动可用
3.7 最佳实践 #
- 保持每个 Skill 专注于单一功能
- 编写具体的描述,包含触发词
- 记录版本历史以跟踪变更
- 使用清晰的分步指令
3.8 问题排查 #
问题:Claude 未使用 Skill
症状:你提出了相关问题,但 Claude 没有使用你的 Skill。
检查项:
-
描述是否足够具体?
- 描述模糊会导致发现困难。应包含 Skill 的功能和使用时机,以及用户可能提到的关键词
- 过于泛泛的示例:
description: Helps with data - 具体的示例:
description: Analyze Excel spreadsheets, generate pivot tables, create charts. Use when working with Excel files, spreadsheets, or .xlsx files.
-
YAML 是否有效?
- 运行验证检查语法错误:
cat .claude/skills/my-skill/SKILL.md | head -n 15 - 常见问题:缺少开头或结尾的
---、使用制表符而非空格、包含特殊字符的字符串未加引号
- 运行验证检查语法错误:
-
Skill 是否在正确位置?
-
检查命令:
ls ~/.claude/skills/*/SKILL.md ls .claude/skills/*/SKILL.md
-
问题:Skill 出现错误
症状:Skill 已加载但运行不正常。
检查项:
-
依赖项是否可用?
- Claude 会在需要时自动安装所需依赖项(或请求安装权限)
-
脚本是否有执行权限?
- 设置权限:
chmod +x .claude/skills/my-skill/scripts/*.py
- 设置权限:
-
文件路径是否正确?
- 所有路径使用正斜杠(Unix 风格)
- 正确格式:
scripts/helper.py,而非 Windows 风格路径
问题:多个 Skills 冲突
症状:Claude 使用了错误的 Skill,或在相似的 Skills 之间显得困惑。
解决方法:
- 在描述中使用具体的触发词来帮助 Claude 区分它们,避免使用泛泛的语言
3.9 与 Web 界面的主要区别 #
| 特性 | Claude Code | claude.ai Web |
|---|---|---|
| 启用方式 | 自动可用,无需手动启用 | Settings > Capabilities 手动开启 |
| 安装方式 | 放入文件系统目录 | 上传 ZIP 文件 |
| 管理方式 | 文件系统和 git | Web 界面开关 |
| 共享方式 | git 同步或插件分发 | 个人私有,无法直接共享 |
| 激活方式 | Claude Code 自动根据描述激活 | Claude 自动激活 |
4. 如何创建自定义 Skill #
自定义 Skill 为 Claude 增强专门的知识(knowledge)和工作流程(workflows),可用于组织或个人使用。最好的 Skill 通过清晰的指令、示例、定义的用例和专注的工作流程来解决特定的、可重复的任务。
4.1 创建 Skill.md 文件 #
每个 Skill 都需要一个目录,其中至少包含一个 Skill.md 文件。这个核心文件必须以包含必需元数据字段的 YAML frontmatter 开头。
4.1.1 必需的元数据字段 #
name:人类友好的标识符(最多 64 个字符)
- 示例:Brand Guidelines
description:阐明 Skill 的功能和使用时机
- 对 Claude 的调用决策至关重要
- 示例:
Apply Acme Corp brand guidelines to presentations and documents, including official colors, fonts, and logo usage.
4.1.2 可选的元数据字段 #
version:跟踪迭代(示例:1.0.0)
dependencies:列出所需的软件包(示例:python>=3.8, pandas>=1.5.0)
元数据作为第一个披露级别,允许 Claude 在不加载完整内容的情况下确定何时调用 Skill。
4.1.3 Markdown 正文 #
Markdown 正文构成第二个细节级别。Claude 在查看元数据后访问此内容以适当地执行 Skill。
4.1.4 Skill 结构示例 #
一个品牌指南 Skill 的完整示例:
---
name: Brand Guidelines
description: Apply Acme Corp brand guidelines to all presentations and documents
version: 1.0.0
---
## 概述
这个 Skill 提供 Acme Corp 的官方品牌指南,用于创建一致的、专业的材料。在创建演示文稿、文档或营销材料时,应用这些标准以确保所有输出符合 Acme 的视觉标识。Claude 在创建面向外部的材料或代表 Acme Corp 的文档时应参考这些指南。
## 品牌颜色
我们的官方品牌颜色是:
- Primary: #FF6B35 (Coral)
- Secondary: #004E89 (Navy Blue)
- Accent: #F7B801 (Gold)
- Neutral: #2E2E2E (Charcoal)
## 排版
标题:Montserrat Bold
正文:Open Sans Regular
尺寸指南:
- H1: 32pt
- H2: 24pt
- Body: 11pt
## Logo 使用
始终在浅色背景上使用全彩 logo。在深色背景上使用白色 logo。Logo 周围保持至少 0.5 英寸的最小间距。
## 何时应用
在创建以下内容时应用这些指南:
- PowerPoint 演示文稿
- 用于外部共享的 Word 文档
- 营销材料
- 客户报告
## 资源
有关 logo 文件和字体下载,请参阅 resources 文件夹。
4.2 添加资源 #
对于大量信息,可以向 Skill 目录添加补充文件,如 REFERENCE.md。在 Skill.md 中引用这些文件有助于 Claude 确定在执行期间何时访问资源。
4.3 添加脚本 #
高级 Skills 可以附加可执行代码文件,使 Claude 能够运行代码。支持的语言和包:
- Python(pandas、numpy、matplotlib 等)
- JavaScript/Node.js
- 用于文件编辑的软件包(如 openpyxl、python-docx 等)
- 可视化工具(如 matplotlib、seaborn、plotly、chart.js、d3.js 等)
重要说明:Claude Code 在加载 Skills 时可以从标准存储库(PyPI, npm)安装包。但是,对于 API Skills,"所有依赖项必须预先安装在容器中"。
4.4 打包 Skill #
完成后,确保:
- 文件夹名称与 Skill 名称匹配
- 创建文件夹的 ZIP 文件
- ZIP 应包含 Skill 文件夹作为根目录,而不是作为子文件夹
正确的结构:
my-Skill.zip
└── my-Skill/
├── Skill.md
└── resources/
错误的结构:
my-Skill.zip
└── (文件直接在 ZIP 根目录中)
4.5 测试 Skill #
4.5.1 上传前 #
- 检查 Skill.md 的清晰度
- 验证描述是否准确反映 Claude 的用例
- 确认所有引用的文件存在于正确的位置
- 使用示例提示进行测试,确保适当的调用
4.5.2 上传到 Claude 后 #
- 在 Settings > Capabilities 中启用
- 尝试应该触发它的多个提示
- 查看 Claude 的思考过程以确认 Skill 加载
- 如果 Claude 没有按预期使用它,则迭代描述
4.6 最佳实践 #
- 保持专注:为不同的工作流程创建单独的 Skill;多个专注的 Skill 比一个大型 Skill 组合得更好
- 编写清晰的描述:具体说明适用性
- 从简单开始:在添加复杂脚本之前,从基本的 Markdown 指令开始
- 使用示例:包括示例输入和输出
- 版本化 Skill:跟踪迭代以进行故障排除
- 增量测试:在每次重大更改后进行测试
- 可组合性:"Skill 不能显式引用其他 Skill,Claude 可以自动一起使用多个 Skill"
有关更深入的指导,请参阅 Claude 文档中的 Skill 创作最佳实践。
4.7 安全注意事项 #
- 添加脚本时要谨慎
- 永远不要硬编码敏感信息(API 密钥、密码)
- 在启用之前查看下载的 Skills
- 使用适当的 MCP 连接来访问外部服务
4.8 示例资源 #
5. 使用 Agent Skills 装备真实世界的 Agent #
这部分内容来自 Anthropic 的工程博客: Equipping agents for the real world with Agent Skills ,深入探讨了 Agent Skills 的架构设计、实践案例和开发指南。
5.1 核心概念 #
Agent Skills 是"包含指令、脚本和资源的组织化文件夹, Agent 可以动态发现和加载",用于增强 Claude 的能力。这种方法通过将领域专业知识打包为可组合、可重用的组件,将通用 Agent 转变为专业化实现。
5.2 解剖 Skill 的结构 #
5.2.1 基本结构 #
一个 Skill 需要一个目录,其中包含以 YAML frontmatter 开头的 SKILL.md 文件,指定两个必需字段:
name:标识 Skilldescription:说明其用途
Skill 目录的组织结构:
my-skill/
├── SKILL.md # 核心文件(必需)
├── reference.md # 参考文档(可选)
├── forms.md # 特定功能文档(可选)
├── scripts/ # 可执行脚本(可选)
│ └── helper.py
└── resources/ # 其他资源文件(可选)
└── templates/

SKILL.md 文件结构:
SKILL.md 文件必须以 YAML frontmatter 开头,包含元数据。这些元数据在 Agent 启动时被预加载到系统提示中,使其能够在不加载完整上下文的情况下发现能力。
---
name: skill-name
description: 简洁描述 Skill 的功能和使用场景
---
# Skill 的详细指令
这里是 Skill 的核心内容,包括:
- 使用说明
- 工作流程步骤
- 示例和最佳实践
# 引用其他文件
可以在这里引用补充文件,如:
- 详细参考信息见 reference.md
- 表单填写流程见 forms.md
补充文件的引用机制:
在 SKILL.md 中,可以通过自然语言引用其他文件。Claude 会根据任务需要,选择性地读取这些补充文件。例如:
- "For general PDF operations, see reference.md" → Claude 需要时会读取 reference.md
- "For form-filling procedures, see forms.md" → Claude 只在填写表单时才会加载此文件
5.2.2 渐进式披露架构 #
设计实现了三个披露级别:
级别 1 - 元数据:在启动时加载名称和描述
级别 2 - 核心内容 :当 Claude 确定相关性时加载完整的 SKILL.md 内容
级别 3 - 补充文件 :仅在需要时加载引用的文档,如 reference.md 或 forms.md
这种模式"就像一本组织良好的手册,从目录开始,然后是特定章节,最后是详细的附录。"
5.2.3 PDF Skill 案例研究 #
博客中展示的案例研究演示了文档操作能力。该 Skill 展示了如何通过分层组织来优化上下文使用。
PDF Skill 的文件组织:
pdf/
├── SKILL.md # 核心文件,包含 PDF 操作的基础指导
├── reference.md # 通用 PDF 操作参考(读取、提取、转换等)
└── forms.md # 专门针对 PDF 表单填写的详细流程
工作原理:
- 启动阶段:Agent 加载 PDF Skill 的元数据(name 和 description)
- 任务触发 :当用户请求 PDF 相关操作时,Claude 读取
SKILL.md核心内容 - 按需加载 :
- 如果任务是一般 PDF 操作(如提取文本),Claude 读取
reference.md - 如果任务是填写 PDF 表单,Claude 才会加载
forms.md
- 如果任务是一般 PDF 操作(如提取文本),Claude 读取
- 精简上下文 :这种架构允许 Claude "保持 Skill 的核心精简,相信 Claude 只会在填写表单时读取
forms.md"
优势:
- 避免将所有文档内容一次性加载到上下文窗口
- 根据任务类型动态选择相关信息
- 减少 token 消耗,提高响应效率
- 支持复杂功能的模块化组织
| Level | File | Context Window | # Tokens |
|---|---|---|---|
| 1 | SKILL.md Metadata (YAML) | Always loaded | ~100 |
| 2 | SKILL.md Body (Markdown) | Loaded when Skill triggers | <5k |
| 3+ | Bundled files (text files, scripts, data) | Loaded as-needed by Claude | unlimited* |
5.3 上下文窗口集成 #
Skills 通过系统提示机制与上下文窗口集成。理解这个过程对于优化 Skill 设计至关重要。
完整的操作序列:
-
初始状态:
- 上下文窗口包含:核心系统提示 + 所有已安装 Skills 的元数据(name + description) + 用户消息
- 此时尚未加载任何 Skill 的完整内容
-
Skill 触发:
- 用户发送请求:"请帮我填写这个 PDF 表单"
- Claude 根据已加载的 Skills 元数据,识别出 PDF Skill 相关
- Claude 调用 Bash 工具读取
pdf/SKILL.md文件内容
-
选择性加载补充文件:
-
执行任务:
- Agent 使用已加载的相关 Skill 指令继续执行任务
- 如果需要,调用 Skill 中的脚本
- 完成任务后,补充文件的内容会从上下文中移除(为下次任务腾出空间)
上下文窗口的动态管理:
时刻 1(启动):
[系统提示] + [PDF Skill 元数据] + [其他 Skills 元数据] + [用户消息]
时刻 2(触发 PDF Skill):
[系统提示] + [SKILL.md 完整内容] + [用户消息]
时刻 3(需要表单功能):
[系统提示] + [SKILL.md 内容] + [forms.md 内容] + [对话历史]
时刻 4(任务完成):
[系统提示] + [Skills 元数据] + [对话历史]
这种动态加载和卸载机制确保了上下文窗口的高效利用。
5.4 代码执行能力 #
Skills 可以捆绑可执行脚本,这是相对于纯 token 生成的重要优化。
为什么需要代码执行:
与"通过 token 生成排序列表"(计算成本高)不同,Agent 可以执行确定性代码,获得以下优势:
- 效率提升:算法操作(排序、搜索、数学计算)通过代码执行比 token 生成快得多
- 成本降低:避免消耗大量 tokens 进行计算密集型任务
- 准确性保证:确定性算法保证结果的一致性和正确性
- 上下文节省:脚本本身不需要加载到上下文中
PDF Skill 的代码执行示例:
PDF Skill 包含预先编写的 Python 脚本,实现以下功能:
pdf/
├── SKILL.md
├── reference.md
├── forms.md
└── scripts/
├── extract_fields.py # 提取 PDF 表单字段
├── fill_form.py # 填写 PDF 表单
└── convert.py # PDF 格式转换
工作流程:
- Claude 根据任务判断需要执行代码
- 调用相应的脚本(如
extract_fields.py) - 脚本执行并返回结果(如表单字段列表)
- Claude 使用结果继续完成任务
关键优势 :脚本可以提取 PDF 表单字段,而无需将脚本源代码或 PDF 文档内容加载到上下文窗口中。这大大降低了 token 消耗。
支持的代码类型:
- Python 脚本(pandas、numpy、matplotlib 等)
- JavaScript/Node.js 脚本
- Shell 脚本
- 任何可在沙盒环境中执行的代码
5.5 开发指南 #
5.5.1 从评估开始 #
在开始构建 Skill 之前,应该先通过实际测试来识别 Claude 的能力差距。
具体步骤:
-
准备测试任务:收集一组代表性的任务示例
- 例如:如果要创建"数据分析 Skill",准备 5-10 个典型的数据分析请求
-
测试基准能力:在没有 Skill 的情况下,让 Claude 尝试完成这些任务
- 记录哪些任务完成得好
- 记录哪些任务失败或效果不佳
-
识别能力差距:分析测试结果,找出 Claude 需要哪些额外的知识或工具
- 缺少特定领域知识?→ 需要在 Skill 中添加参考文档
- 操作步骤不清晰?→ 需要提供详细的工作流程指令
- 需要执行复杂计算?→ 需要添加可执行脚本
-
增量构建:根据识别出的差距,逐步构建和完善 Skill
这种"先评估,再构建"的方法可以避免创建不必要的 Skills,确保每个 Skill 都解决实际问题。
5.5.2 为规模而构建 #
随着 Skill 功能的增加,需要采用合理的结构设计来保持高效和可维护性。
1. 拆分过大的文件
当 SKILL.md 变得过于庞大时(如超过 5000 tokens),应该拆分为单独的文件:
# 拆分前(一个大文件)
data-analysis/
└── SKILL.md # 10000 tokens,包含所有内容
# 拆分后(多个专注的文件)
data-analysis/
├── SKILL.md # 核心指令,2000 tokens
├── statistics.md # 统计分析方法,3000 tokens
├── visualization.md # 可视化指南,2000 tokens
└── cleaning.md # 数据清洗流程,3000 tokens
2. 保持互斥的上下文分离
将不同功能的内容放在不同文件中,Claude 只加载当前任务需要的部分:
-
✅ 好的设计 :
statistics.md只包含统计分析,visualization.md只包含可视化- 做可视化任务时,不需要加载统计分析的内容,节省 3000 tokens
-
❌ 不好的设计 :所有内容都在
SKILL.md中- 无论做什么任务,都要加载全部 10000 tokens
3. 将代码既用作可执行工具,也用作文档
脚本文件可以同时服务两个目的:
# scripts/calculate_correlation.py
"""
计算两个变量之间的相关系数
用法:
python calculate_correlation.py data.csv col1 col2
参数:
data.csv: 数据文件路径
col1: 第一个变量列名
col2: 第二个变量列名
返回:
相关系数值(-1 到 1)
"""
import pandas as pd
import sys
def calculate_correlation(file_path, col1, col2):
df = pd.read_csv(file_path)
return df[col1].corr(df[col2])
if __name__ == "__main__":
result = calculate_correlation(sys.argv[1], sys.argv[2], sys.argv[3])
print(f"Correlation: {result}")
双重价值:
- 作为工具:Claude 可以直接执行这个脚本获得结果
- 作为文档:docstring 说明了功能、用法和参数,Claude 可以读取它来理解如何使用
这样避免了在 SKILL.md 中重复编写脚本的使用说明。
5.5.3 从 Claude 的角度思考 #
开发 Skill 时,需要站在 Claude 的角度来设计,观察它如何实际使用你的 Skill。
1. 监控真实使用模式
部署 Skill 后,观察 Claude 在实际场景中的表现:
-
记录成功案例:哪些类型的请求成功触发了 Skill?
- 例如:用户说"分析这个 Excel 文件"时,Claude 正确加载了数据分析 Skill
-
记录失败案例:哪些应该触发但没有触发?
- 例如:用户说"帮我看看这个表格的趋势"时,Claude 没有意识到需要数据分析 Skill
2. 优化 name 和 description
这两个字段是 Claude 做触发决策的关键依据,需要精心编写:
❌ 模糊的描述:
name: data-tool
description: Helps with data
问题:太泛泛,Claude 不知道何时使用
✅ 具体的描述:
name: excel-data-analyzer
description: Analyze Excel spreadsheets, generate pivot tables, create statistical summaries and charts. Use when working with .xlsx/.csv files, spreadsheets, data analysis, or statistical calculations.
优点:
- 明确说明功能(分析、透视表、统计、图表)
- 包含触发关键词(Excel, spreadsheet, .xlsx, .csv, data analysis, statistical)
- Claude 更容易判断何时需要这个 Skill
3. 观察 Claude 的思考过程
在支持的平台上(如 claude.ai),查看 Claude 的内部思考:
用户:"这个 Excel 文件有什么趋势?"
Claude 的思考:
- 用户提到 Excel 文件 ✓
- 需要数据分析 ✓
- excel-data-analyzer Skill 的描述匹配 ✓
- 决定:加载这个 Skill
如果 Claude 没有加载你的 Skill,检查它的思考过程,看看是什么原因。
4. 迭代改进
根据观察结果持续改进:
description缺少用户常用的关键词?→ 添加进去- Skill 经常被错误触发?→ 让描述更具体
- 某些场景下没被触发?→ 添加相关的使用场景描述
5.5.4 与 Claude 一起迭代 #
利用 Claude 本身来帮助改进和完善 Skill。
1. 让 Claude 捕获成功的方法
当 Claude 成功完成某个任务时,请它将解决方案整理成 Skill:
你刚才分析 Excel 文件的方法很好,请将这个工作流程
整理成一个可重用的 Skill,包括:
- 清晰的步骤说明
- 常见问题的处理方法
- 示例代码(如果需要)
保存为 SKILL.md 格式
Claude 可以:
- 提取关键步骤
- 总结最佳实践
- 生成结构化的 Skill 文件
- 编写必要的脚本
2. 要求自我反思
当 Claude 的执行轨迹偏离预期时,让它分析原因:
你刚才在处理数据时没有按照我期望的方式进行。
请反思:
1. 你理解的任务目标是什么?
2. 你选择这个方法的原因是什么?
3. Skill 的哪些部分可以改进来避免这个问题?
4. 建议如何修改 SKILL.md?
Claude 可以帮助识别:
- Skill 指令不清晰的地方
- 缺少的边界情况处理
- 需要补充的参考信息
- description 中缺少的关键词
3. 迭代改进循环
人类 → 创建初始 Skill
↓
Claude → 使用 Skill 完成任务
↓
人类 → 观察效果,发现问题
↓
Claude → 反思并建议改进
↓
人类 → 更新 Skill
↓
(循环继续)
4. 实际对话示例
人类:你刚才为什么没有生成图表?
Claude:我理解您的意图了。查看 data-analysis Skill 的描述,
它提到了"statistical summaries"但没有明确提到"visualization"
或"charts"。建议在 description 中添加:
description: "Analyze data, generate statistical summaries,
create visualizations and charts. Use when user requests
graphs, plots, trends, or visual analysis."
这样我就能更准确地判断何时需要创建图表。
核心思想:把 Claude 当作 Skill 开发的协作伙伴,而不仅仅是使用者。它的反馈可以帮助你快速发现和解决 Skill 的问题。
5.6 安全考虑 #
"Skills 通过指令和代码为 Claude 提供新能力。虽然这使它们功能强大,但也意味着恶意 Skills 可能引入漏洞。"
建议:
- 仅从可信来源安装
- 彻底审计不熟悉的 Skills
- 检查捆绑的代码依赖项和资源
- 监控指示连接到不可信外部源的指令
5.7 部署状态 #
Skills 目前在 Claude.ai、Claude Code、Claude Agent SDK 和 Claude Developer Platform 上运行。Anthropic 计划扩展对完整 Skill 生命周期的支持:创建、编辑、发现、共享和使用。
5.8 未来路线图 #
近期:增强 Skill 发现和共享功能,探索与 MCP 服务器的集成
长期:使 Agent 能够"自主创建、编辑和评估 Skills,让它们将自己的行为模式编码为可重用的能力"
6. 总结 #
Claude Skills 通过将领域知识、工作流程和可执行代码打包为可重用组件,让 Claude 从通用AI助手转变为具备专业能力的 Agent。其核心价值在于:通过三级加载(元数据→核心内容→补充文件)优化上下文使用,通过代码执行提升任务效率,通过结构化指令固化组织知识。
创建优秀 Skill 的关键是:先评估能力差距再构建,精心设计 description 以包含功能说明和触发关键词,采用分层架构支持规模化,从 Claude 视角观察使用模式并迭代改进。无论在 Web 界面、Claude Code 还是 API 中使用,Skills 都在改变我们与 Claude 协作的方式------不仅让 AI 使用工具,更让 AI 学会如何更好地完成特定任务。