本文是基于 Claude 官方资料对 Claude Skills 的学习笔记。
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 进行专注的对话。Projects 对所有用户可用;免费用户最多可创建 5 个项目。
核心特性:
- 项目知识库:上传文档、文本、代码和文件供 Claude 在对话中引用;可建立项目特定的指令来定制 Claude 的响应风格、正式程度或视角
- 检索增强生成(RAG):当项目知识接近上下文限制时,Claude 会启用 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)。 Skills 也以 beta 形式提供给 Claude Code 用户和所有使用代码执行工具的 API 用户。
2.1 访问 Skills
在 Settings > Capabilities 管理 Skills。界面功能包括:
- 查看所有可用的 Skills(包括 Anthropic Skills 和自定义 Skills)
- 开启或关闭单个 Skill
- 上传新的自定义 Skill(ZIP 文件)
2.2 内置的 Anthropic Skill
Claude 提供了多个内置的 Skill,包括:
- 增强的 Excel 电子表格创建和操作
- 专业的 Word 文档创建
- PowerPoint 演示文稿生成
- PDF 创建和处理
这些 Skills 在相关时自动激活,无需明确调用。
2.3 自定义 Skill 上传流程
- 按照要求的结构创建 Skill
- 将 Skill 文件夹打包为 ZIP 文件
- 前往 Settings > Capabilities
- 点击 “Upload skill” 并选择 ZIP 文件
- Skill 出现在列表中,可以开启或关闭
2.4 Claude 如何使用 Skills
Claude 会根据任务判断哪些 Skills 相关,并加载完成任务所需的信息。系统会自动确定何时需要每个 Skill,无需手动选择。
2.5 安全注意事项
- Skills 在安全的沙盒环境中运行,会话之间不保留数据
- 主要风险包括提示注入(prompt injection)和数据泄露(data exfiltration)
- 仅从可信来源安装 Skills
2.6 问题排查
- Skills 部分不可见:确保在 Settings > Capabilities 中启用了代码执行
- Claude 未使用 Skill:验证 Skill 已开启、有清晰的描述、使用了结构良好的指令
- 上传失败:检查 ZIP 结构是否符合要求(Skill 文件夹为根目录)、文件夹名称是否与 Skill 名称匹配、是否存在必需的 Skill 核心文件
- Skills 显示为灰色:代码执行或 Skills 可能在组织级别被禁用
3. 在 Claude Code 中使用 Skills
Claude Code 中的 Skills 使用方式与 Web 界面有显著不同。Skills 通过文件系统目录管理:会话启动时只加载 Skills 的名称与描述用于匹配;当你的请求匹配某个 Skill 的描述时,Claude 会询问是否使用该 Skill,确认后才加载完整 SKILL.md。
3.1 Skills 的存储位置
Claude Code 会从多个位置发现 Skills:
Enterprise(Managed)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:仅小写字母、数字、连字符;最长 64 字符;建议与 Skill 目录名一致description:最长 1024 字符;用于说明功能与触发条件
3.3 支持文件(supporting files)
Skills 可以包含可选的参考文档与示例(如 reference.md、examples.md),以及脚本等资源。Claude 会在需要时按需加载这些内容。
对于可执行脚本,通常放在 scripts/ 目录中;Claude 可以直接执行脚本而不需要把脚本源码加载进上下文,从而节省上下文窗口。
3.4 工具访问限制
通过 allowed-tools 字段限制工具访问(该字段仅在 Claude Code Skills 中支持):
---
name: my-skill
description: 描述
allowed-tools:
- Read
- Grep
---当此 Skill 激活时,Claude 可以免许可使用列表中的工具,并且只能使用这些工具。这可以确保只读操作或限定范围的功能。
3.5 发现和测试
发现 Skills:
- Claude 会在会话启动时预加载 Skills 的元数据(主要是
name与description),用于后续的匹配与发现
测试 Skills:
- 构造与描述匹配的请求
- 如果 Claude 未激活 Skill,说明描述可能不够具体
- 在 Claude Code 中,如果触发匹配,通常会在加载完整
SKILL.md前先询问是否使用该 Skill
3.6 团队共享方法
- 将项目 Skills 放在仓库的
.claude/skills/目录中,并提交到 git,让团队成员拉取后自动可用 - 也可以通过组织托管(Enterprise/Managed)或插件(Plugin)方式提供 Skills
3.7 最佳实践
- 保持每个 Skill 专注于单一功能
- 编写具体的
description,包含用户可能会用到的关键词与触发场景 SKILL.md正文尽量保持精简;官方文档建议控制在 500 行以内,超出时拆分到 supporting files- 使用清晰的分步指令
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 是否有效?
- 检查文件头部 YAML frontmatter 是否规范(例如
---是否成对、缩进是否正确、是否使用空格等) - 常见问题:缺少开头或结尾的
---、使用制表符而非空格、包含特殊字符的字符串未加引号
- 检查文件头部 YAML frontmatter 是否规范(例如
Skill 是否在正确位置?
- 检查
SKILL.md是否位于~/.claude/skills/<skill-name>/或.claude/skills/<skill-name>/下,并且文件名大小写正确
- 检查
问题:Skill 出现错误
症状:Skill 已加载但运行不正常。
检查项:
依赖项是否可用?
- 如果 Skill 使用了脚本与第三方库,确保依赖已正确安装/可用;必要时 Claude/Claude Code 可能会在加载 Skill 时从标准仓库安装依赖(或请求安装权限)
脚本是否可执行?
- 确认脚本能在你的环境/沙盒中正常运行,并且路径引用正确
文件路径是否正确?
- 所有路径使用正斜杠(Unix 风格)
- 正确格式:
scripts/helper.py,而非 Windows 风格路径
问题:多个 Skills 冲突
症状:Claude 使用了错误的 Skill,或在相似的 Skills 之间显得困惑。
解决方法:
- 在描述中使用具体的触发词来帮助 Claude 区分它们,避免使用泛泛的语言
3.9 与 Web 界面的主要区别
| 特性 | Claude Code | claude.ai Web |
|---|---|---|
| 启用/管理方式 | 通过文件系统目录管理(~/.claude/skills/、.claude/skills/ 等) | Settings > Capabilities 管理(Team/Enterprise 也可由 Admin settings 预置) |
| 安装方式 | 放入文件系统目录 | 上传 ZIP 文件 |
| 共享方式 | 项目 Skills 可随仓库通过 git 同步;也可通过插件分发 | 与账户/组织权限相关;Team/Enterprise 可由组织预置 |
| 激活方式 | 请求匹配 description 时会询问确认,确认后加载 SKILL.md | Claude 根据任务自动识别并加载相关 Skills |
4. 如何创建自定义 Skill
自定义 Skill 为 Claude 增强专门的知识(knowledge)和工作流程(workflows),可用于组织或个人使用。最好的 Skill 通过清晰的指令、示例、定义的用例和专注的工作流程来解决特定的、可重复的任务。
4.1 创建 Skill 核心文件
每个 Skill 都需要一个目录,其中至少包含一个 Skill 核心文件。这个核心文件必须以包含必需元数据字段的 YAML frontmatter 开头。
Skill.md,有的写作 SKILL.md)。为了在 Claude Code(尤其是大小写敏感的文件系统)中更稳妥地复用,本文后续示例统一使用 SKILL.md。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 可选的元数据字段
Skill 的元数据字段会因产品/环境而异。下面列出几个在官方文档中出现的可选字段:
dependencies:列出所需的软件包(可选)。例如:
python>=3.8。allowed-tools(Claude Code):指定 Skill 激活时可免许可使用、且仅允许使用的工具列表。
model / context / agent / hooks / user-invocable / disable-model-invocation(Claude Code):用于控制 Skill 的运行模型、运行上下文、子代理类型、生命周期 hooks 以及可见性/可调用性。
其中:
user-invocable仅控制是否显示在斜杠菜单,不影响 Skill tool 的调用disable-model-invocation: true会阻止通过 Skill tool 的程序化调用- 在支持的情况下,可通过输入
/skill-name手动触发 Skill
元数据作为第一个披露级别,允许 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
---
## 概述
这个 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、reference.md 或 examples.md,并在核心文件中进行引用,以便 Claude 在需要时按需读取。
4.3 添加脚本
高级 Skills 可以附加可执行脚本,使 Claude 能够运行代码。
4.4 打包 Skill
完成后,确保:
- 文件夹名称与 Skill 名称匹配
- 创建文件夹的 ZIP 文件
- ZIP 应包含 Skill 文件夹作为根目录,而不是作为子文件夹
正确的结构:
my-Skill.zip
└── my-Skill/
├── SKILL.md
└── resources/SKILL.md。错误的结构:
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:跟踪迭代以进行故障排除(例如用 git 管理变更)
- 增量测试:在每次重大更改后进行测试
- 可组合性:尽量保持 Skill 专注,避免把过多不相关能力塞进一个 Skill;需要时可以拆分为多个更小的 Skills 或 supporting files
有关更深入的指导,请参阅 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 读取
- 精简上下文:这种架构允许保持 Skill 的核心精简,按需读取补充文件
优势:
- 避免将所有文档内容一次性加载到上下文窗口
- 根据任务类型动态选择相关信息
- 减少 token 消耗,提高响应效率
- 支持复杂功能的模块化组织
| Level | File | Context Window |
|---|---|---|
| 1 | SKILL.md Metadata (YAML) | Always loaded |
| 2 | SKILL.md Body (Markdown) | Loaded when Skill triggers |
| 3+ | Bundled files (text files, scripts, data) | Loaded as-needed by Claude |
5.3 上下文窗口集成
Skills 通过系统提示机制与上下文窗口集成。理解这个过程对于优化 Skill 设计至关重要。
完整的操作序列:
初始状态:
- 上下文窗口包含:核心系统提示 + 所有已安装 Skills 的元数据(name + description) + 用户消息
- 此时尚未加载任何 Skill 的完整内容
Skill 触发:
- 用户发送请求:“请帮我填写这个 PDF 表单”
- Claude 根据已加载的 Skills 元数据,识别出 PDF Skill 相关
- Claude 调用工具读取
pdf/SKILL.md文件内容
选择性加载补充文件:
- Claude 读取 SKILL.md,发现其中提到 “For form-filling procedures, see forms.md”
- 因为任务是填写表单,Claude 进一步读取
forms.md文件 - 如果任务只是提取文本,Claude 可能只读取
reference.md,不会加载forms.md
执行任务:
- Agent 使用已加载的相关 Skill 指令继续执行任务
- 如果需要,调用 Skill 中的脚本
- 完成任务后,Claude 会回到只保留必要上下文的状态(例如只保留 Skills 的元数据),以便为后续任务腾出空间
上下文窗口的动态管理:
时刻 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 脚本可用于 PDF Skill 的示例中)
5.5 开发指南
5.5.1 从评估开始
在开始构建 Skill 之前,应该先通过实际测试来识别 Claude 的能力差距。
具体步骤:
准备测试任务:收集一组代表性的任务示例
- 例如:如果要创建"数据分析 Skill",准备 5-10 个典型的数据分析请求
测试基准能力:在没有 Skill 的情况下,让 Claude 尝试完成这些任务
- 记录哪些任务完成得好
- 记录哪些任务失败或效果不佳
识别能力差距:分析测试结果,找出 Claude 需要哪些额外的知识或工具
- 缺少特定领域知识?→ 需要在 Skill 中添加参考文档
- 操作步骤不清晰?→ 需要提供详细的工作流程指令
- 需要执行复杂计算?→ 需要添加可执行脚本
增量构建:根据识别出的差距,逐步构建和完善 Skill
这种"先评估,再构建"的方法可以避免创建不必要的 Skills,确保每个 Skill 都解决实际问题。
5.5.2 为规模而构建
随着 Skill 功能的增加,需要采用合理的结构设计来保持高效和可维护性。
1. 拆分过大的文件
当 SKILL.md 正文变得过于庞大时,应该拆分为单独的文件(例如按主题拆分为多个参考文件),并在 SKILL.md 中进行引用;官方文档也建议将 SKILL.md 正文控制在 500 行以内以获得更好的性能。
# 拆分前(一个大文件)
data-analysis/
└── SKILL.md # 包含所有内容
# 拆分后(多个专注的文件)
data-analysis/
├── SKILL.md # 核心指令
├── statistics.md # 统计分析方法
├── visualization.md # 可视化指南
└── cleaning.md # 数据清洗流程2. 保持互斥的上下文分离
将不同功能的内容放在不同文件中,Claude 只加载当前任务需要的部分:
好的设计:
statistics.md只包含统计分析,visualization.md只包含可视化- 做可视化任务时,不需要加载统计分析相关的内容,节省上下文窗口
不好的设计:所有内容都在
SKILL.md中无论做什么任务,都要加载大量不相关内容
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 是否按预期触发并使用了你的 Skill,并记录哪些提示语能稳定触发、哪些提示语会漏触发。不同平台/界面对“Skill 是否被使用”的可见信息不完全一致,但你仍可以通过行为结果和工具调用轨迹来迭代改进。
4. 迭代改进
根据观察结果持续改进:
description缺少用户常用的关键词?→ 添加进去- Skill 经常被错误触发?→ 让描述更具体
- 某些场景下没被触发?→ 添加相关的使用场景描述
5.5.4 与 Claude 一起迭代
利用 Claude 本身来帮助改进和完善 Skill。
1. 让 Claude 捕获成功的方法
当 Claude 成功完成某个任务时,请它将解决方案整理成 Skill:
你刚才分析 Excel 文件的方法很好,请将这个工作流程
整理成一个可重用的 Skill,包括:
- 清晰的步骤说明
- 常见问题的处理方法
- 示例代码(如果需要)
保存为 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 和 API 中运行。Anthropic 计划扩展对完整 Skill 生命周期的支持:创建、编辑、发现、共享和使用。
5.8 未来路线图
工程博客中提到的几个方向:
- 支持 Skills 的完整生命周期:创建、编辑、发现、共享和使用
- 探索 Skills 如何与 MCP 服务器互补:MCP 负责连接外部工具/服务,Skills 教会更复杂的工作流程
- 更长期:让 Agent 能够自主创建、编辑与评估 Skills,将自身行为模式编码为可重用的能力
6. 总结
Claude Skills 通过将领域知识、工作流程和可执行代码打包为可重用组件,让 Claude 从通用AI助手转变为具备专业能力的 Agent。其核心价值在于:通过三级加载(元数据→核心内容→补充文件)优化上下文使用,通过代码执行提升任务效率,通过结构化指令固化组织知识。
创建优秀 Skill 的关键是:先评估能力差距再构建,精心设计 description 以包含功能说明和触发关键词,采用分层架构支持规模化,从 Claude 视角观察使用模式并迭代改进。无论在 Web 界面、Claude Code 还是 API 中使用,Skills 都在改变我们与 Claude 协作的方式——不仅让 AI 使用工具,更让 AI 学会如何更好地完成特定任务。
参考
- github.com/anthropics/skills
- What are Skills?
- What are projects?
- Understanding Claude’s Personalization Features
- Using skills in Claude
- Build with Claude Code - Agent Skills
- Claude Code Reference - Slash commands
- Claude Code Reference - Plugins reference
- How to create custom Skills
- Equipping agents for the real world with Agent Skills
- claude agent-skills
- claude-cookbooks skills