第一部分:核心理念 #
1.1 什么是 Skill? #
Skill 是模块化、自包含的知识包,用于扩展 Claude 的能力。把它想象成针对特定领域的"入职指南"——将通用 Claude 转变为具备专业知识的领域专家。
Skill 提供的核心价值:
- 专业工作流(多步骤领域任务流程)
- 工具集成(特定文件格式/API 的操作指南)
- 领域专知(公司知识、业务逻辑、数据模式)
- 捆绑资源(脚本、参考文档、模板资产)
1.2 黄金法则:Claude 本身就很聪明 #
默认假设:Claude 已经非常智能。
每一段内容都要经受这个拷问:
- "Claude 真的需要这个解释吗?"
- "这段话值得它消耗的 token 吗?"
💡 核心原则:简洁的示例 > 冗长的解释
1.3 上下文窗口是公共资源 #
Skill 与以下内容共享上下文窗口:
- 系统提示
- 对话历史
- 其他 Skill 的元数据
- 用户的实际请求
每个 token 都有成本。节约使用。
第二部分:自由度设计 #
根据任务的脆弱性和变化性,匹配不同的指令精确度:
| 自由度 | 形式 | 适用场景 |
|---|
| 高 | 文本指南 | 多种方案都可行、决策依赖上下文、只需启发式引导 |
| 中 | 伪代码/带参数脚本 | 存在首选模式、允许一定变化、配置影响行为 |
| 低 | 精确脚本+少量参数 | 操作脆弱易错、一致性至关重要、必须严格遵循顺序 |
🌉 形象比喻:悬崖边的窄桥需要精确的护栏(低自由度),开阔的原野允许多条路线(高自由度)。
第三部分:Skill 结构规范 #
3.1 目录结构 #
skill-name/
├── SKILL.md # [必需] 核心文档
├── scripts/ # [可选] 可执行脚本
├── references/ # [可选] 参考文档(按需加载)
└── assets/ # [可选] 输出资源(模板、图标、字体)
---
name: skill-name
description: "清晰描述功能 + 触发场景"
---
# 技能标题
## 核心内容
3.3 Frontmatter 编写要点 #
name 字段 #
- 使用小写 + 连字符命名
- 简洁明确:
pdf、docx、frontend-design
description 字段 ⭐ 关键 #
这是触发技能的主要机制。必须包含:
- 功能描述:技能做什么
- 触发场景:何时使用(用编号列举)
优秀示例:
description: "Comprehensive document creation, editing, and analysis
with support for tracked changes, comments, formatting preservation,
and text extraction. When Claude needs to work with professional
documents (.docx files) for: (1) Creating new documents,
(2) Modifying or editing content, (3) Working with tracked changes,
(4) Adding comments, or any other document tasks"
⚠️ 关键提醒:Body 中写"何时使用此技能"是无效的——因为 body 只在技能触发后才加载!所有触发信息必须放在 description 中。
第四部分:渐进式披露设计 #
4.1 三层加载系统 #
| 层级 | 内容 | 加载时机 | 建议大小 |
|---|
| L1 | 元数据(name + description) | 始终在上下文中 | ~100 词 |
| L2 | SKILL.md body | 技能触发时 | <500 行 |
| L3 | 捆绑资源 | 按需加载 | 无限制* |
*脚本可不加载到上下文直接执行
4.2 渐进式披露模式 #
模式一:高层指南 + 引用 #
# PDF 处理
## 快速开始
使用 pdfplumber 提取文本:
[代码示例]
## 高级功能
- **表单填充**:参见 [FORMS.md](FORMS.md)
- **API 参考**:参见 [REFERENCE.md](REFERENCE.md)
模式二:按领域组织 #
bigquery-skill/
├── SKILL.md (概览 + 导航)
└── references/
├── finance.md # 财务指标
├── sales.md # 销售数据
└── product.md # 产品用量
用户问销售指标时,Claude 只读取 sales.md。
模式三:条件详情 #
## 编辑文档
简单编辑直接修改 XML。
**追踪修改**:参见 [REDLINING.md](REDLINING.md)
**OOXML 详情**:参见 [OOXML.md](OOXML.md)
4.3 关键原则 #
- 避免深层嵌套:引用文件应直接从 SKILL.md 链接
- 超过 100 行的参考文件:顶部添加目录
- 避免重复:信息只在 SKILL.md 或 references 中出现一次
第五部分:三类捆绑资源 #
5.1 Scripts(脚本) #
用途:确定性执行 + 反复重写的代码
scripts/
├── unpack.py # 解包文档
├── pack.py # 打包文档
└── validate.py # 验证输出
何时使用:
- 同样的代码反复重写
- 需要确定性可靠性
- 可直接执行无需读入上下文
最佳实践:
5.2 References(参考文档) #
用途:按需加载的知识库
references/
├── schema.md # 数据库模式
├── api_docs.md # API 文档
└── policies.md # 公司政策
何时使用:
- Claude 工作时需要参考的文档
- 详细工作流指南
- 领域知识、公司政策
最佳实践:
- 大文件(>10k 词)提供 grep 搜索模式
- 保持 SKILL.md 精简,详情移到 references
5.3 Assets(资产) #
用途:不读入上下文,用于最终输出
assets/
├── logo.png # 品牌资源
├── template.pptx # PPT 模板
└── frontend-template/ # 前端脚手架
何时使用:
- 最终输出需要的文件
- 模板、图片、图标、字体
- 样本文档、样板代码
第六部分:编写工艺 #
6.1 写作风格 #
始终使用祈使句/命令式:
✅ 正确:
Extract text with pdfplumber.
Use Arial as the default font.
❌ 错误:
You should extract text with pdfplumber.
The default font should be Arial.
6.2 快速参考表格 #
使用表格快速传达任务-工具映射:
|------|------|
| 读取/分析内容 | `pandoc` 或解包查看 XML |
| 创建新文档 | 使用 `docx-js` |
| 编辑现有文档 | 解包 → 编辑 XML → 重新打包 |
6.3 代码示例原则 #
简洁 + 可直接使用:
from pypdf import PdfReader
reader = PdfReader("document.pdf")
text = "".join(page.extract_text() for page in reader.pages)
from pypdf import PdfReader
reader = PdfReader("document.pdf")
6.4 关键规则/陷阱警示 #
使用醒目格式标注关键规则:
### Critical Rules for docx-js
- **Set page size explicitly** - docx-js defaults to A4
- **Never use `\n`** - use separate Paragraph elements
- **Never use unicode bullets** - use `LevelFormat.BULLET`
- **PageBreak must be in Paragraph** - standalone creates invalid XML
6.5 工作流文档 #
顺序工作流 #
填充 PDF 表单步骤:
1. 分析表单 (运行 analyze_form.py)
2. 创建字段映射 (编辑 fields.json)
3. 验证映射 (运行 validate_fields.py)
4. 填充表单 (运行 fill_form.py)
5. 验证输出 (运行 verify_output.py)
条件工作流 #
1. 确定修改类型:
**创建新内容?** → 遵循下方"创建工作流"
**编辑现有内容?** → 遵循下方"编辑工作流"
2. 创建工作流:[步骤]
3. 编辑工作流:[步骤]
第七部分:输出模式 #
7.1 模板模式 #
严格要求时:
## 报告结构
必须使用此精确模板结构:
# [分析标题]
## 执行摘要
[关键发现的一段概述]
## 主要发现
- 发现 1 及支撑数据
- 发现 2 及支撑数据
## 建议
1. 具体可行建议
2. 具体可行建议
灵活指导时:
## 报告结构
这是合理的默认格式,但请根据判断调整:
# [分析标题]
## 执行摘要
[概述]
## 主要发现
[根据发现调整章节]
根据具体分析类型按需调整。
7.2 示例模式 #
当输出质量依赖于示例时,提供输入/输出对:
## 提交信息格式
按以下示例生成提交信息:
**示例 1:**
输入:Added user authentication with JWT tokens
输出:
feat(auth): implement JWT-based authentication
Add login endpoint and token validation middleware
**示例 2:**
输入:Fixed bug where dates displayed incorrectly
输出:
fix(reports): correct date formatting in timezone conversion
Use UTC timestamps consistently across report generation
遵循此风格:type(scope): 简要描述,然后详细解释。
第八部分:实战案例分析 #
8.1 案例一:docx 技能(文档处理) #
亮点:
- 清晰的任务-方法映射表
- 分离"创建"和"编辑"两条工作流
- 详尽的 XML 参考(低自由度任务)
- 关键规则使用醒目标注
- 常见陷阱专门说明
结构:
docx/
├── SKILL.md # 主文档(含 XML 参考)
└── scripts/
├── unpack.py # 解包 DOCX
├── pack.py # 打包 DOCX
├── comment.py # 添加批注
└── accept_changes.py # 接受修订
8.2 案例二:pdf 技能(渐进式披露) #
亮点:
- 主文档精简,高级功能引用外部
- 明确指向:
FORMS.md、REFERENCE.md - 命令行工具和 Python 库双轨并行
结构:
pdf/
├── SKILL.md # 快速参考(~300 行)
├── FORMS.md # 表单填充专题
├── REFERENCE.md # API 详细参考
└── scripts/ # 辅助脚本
8.3 案例三:xlsx 技能(领域规范) #
亮点:
- 前置专业领域规范(财务模型颜色标准)
- 强调"使用公式而非硬编码"
- 验证清单确保质量
- 集成 recalc.py 自动重算
技巧:
## CRITICAL: Use Formulas, Not Hardcoded Values
### ❌ WRONG - Hardcoding Calculated Values
sheet['B10'] = total # Hardcodes 5000
### ✅ CORRECT - Using Excel Formulas
sheet['B10'] = '=SUM(B2:B9)'
8.4 案例四:frontend-design 技能(创意领域) #
亮点:
- 高自由度:指导性文本而非精确脚本
- 强调设计思维先于编码
- 明确反面案例(避免 AI 风格)
- 鼓励大胆美学选择
适用于创意/主观任务的高自由度风格。
第九部分:不该包含的内容 #
Skill 只应包含 AI agent 完成工作所需的核心文件。
❌ 不要创建:
这些只会增加混乱。Skill 不是给人类读的项目文档。
第十部分:创建流程 #
步骤 1:理解具体示例 #
关键问题:
- "这个技能应支持什么功能?"
- "给一些使用示例?"
- "用户会说什么来触发这个技能?"
步骤 2:规划可复用内容 #
分析每个示例:
- 如何从头执行这个示例
- 重复执行时哪些脚本/引用/资产有帮助
步骤 3:初始化技能 #
scripts/init_skill.py --path
步骤 4:编辑技能 #
- 先实现可复用资源(scripts/references/assets)
- 测试脚本确保无 bug
- 更新 SKILL.md
步骤 5:打包技能 #
scripts/package_skill.py <path/to/skill-folder>
自动验证 + 打包为 .skill 文件。
步骤 6:迭代 #
在真实任务上测试 → 发现问题 → 改进 → 再测试
第十一部分:质量检查清单 #
Frontmatter 检查 #
- [ ]
name 使用小写连字符 - [ ]
description 包含功能描述 - [ ]
description 包含触发场景(编号列举) - [ ] 无多余字段
- [ ] 控制在 500 行以内
- [ ] 使用祈使句
- [ ] 包含快速参考表格
- [ ] 关键规则醒目标注
- [ ] 无"何时使用"章节(应在 description 中)
资源文件检查 #
- [ ] 脚本已测试
- [ ] References 无重复内容
- [ ] 大文件有目录或搜索提示
- [ ] 无不必要的文档文件
整体检查 #
- [ ] 每段内容经受"Claude 需要吗?"拷问
- [ ] 简洁示例优于冗长解释
- [ ] 自由度匹配任务脆弱性
- [ ] 渐进式披露减少上下文占用
附录:常见反模式 #
| 反模式 | 问题 | 正确做法 |
|---|
| 过度注释的代码 | 浪费 token | 代码自解释,关键点简注 |
| SKILL.md 中写"何时使用" | 不会被读到 | 放入 description |
| 信息重复在多处 | 上下文浪费 | 单一真相来源 |
| 深层嵌套引用 | 难以发现 | 一层引用直接从 SKILL.md 链接 |
| 缺少具体示例 | Claude 难以理解预期 | 提供输入/输出对 |
| 高自由度用于脆弱任务 | 输出不稳定 | 降低自由度、提供脚本 |
| 包含项目管理文件 | 与任务无关 | 只保留核心文件 |
记住:最好的 Skill 是让 Claude 从通用助手变成领域专家的最短路径。每个 token 都应该为此目标服务。