初始化新 skill 目录(运行 init_skill.py)、打包 skill(运行 package_skill.py)、或需要了解 skill 结构规范时使用。
本 Skill 提供“如何编写有效 Skill”的方法与流程。
Skill 是模块化、可复用的“指引包”,通过提供专业知识、workflow、工具与资源,让 Claude 从通用助手变成具备流程化能力的专用助手。
scripts/、references/、assets/context window 是公共资源:system prompt、对话历史、其他 Skill metadata、以及用户需求都要共用它。
默认假设:Claude 已经很聪明。 只加入 Claude 现实中“拿不到”的信息。对每一段文字都要自问:
优先用短小的例子与可执行步骤,避免冗长叙述。
根据任务的“脆弱性”和“可变性”决定指令有多具体:
可以把 Claude 想象成“走路”:窄桥两侧是悬崖就需要更强的护栏(低自由度);开阔草地就允许更多路线(高自由度)。
每个 skill 由必需的 SKILL.md 与可选的资源目录组成:
skill-name/
├── SKILL.md(必需)
│ ├── YAML frontmatter metadata(必需)
│ │ ├── name:(必需)
│ │ └── description:(必需)
│ └── Markdown instructions(必需)
└── Bundled resources(可选)
├── scripts/ - 可执行代码(Python/Bash 等)
├── references/ - 需要时加载的参考文档
└── assets/ - 用于输出的文件(模板、图标、字体等)
SKILL.md(必需)SKILL.md 包含:
name 与 description。Claude 主要依赖它们来判断是否触发 skill,因此务必清晰描述“做什么 + 何时用”。scripts/用于需要确定性与可重复执行的任务(Python/Bash 等)。
scripts/rotate_pdf.py(旋转 PDF)references/按需加载的参考材料,用来支撑 Claude 的推理与决策。
references/schema.md(表结构)、references/api_docs.md(API 说明)、references/policies.md(政策/规范)SKILL.md 保持精简;只在需要时加载SKILL.md 中提供 grep/搜索提示SKILL.md,要么放在 references/;细节优先放 references/,SKILL.md 只保留关键流程与导航assets/不需要读入 context、但会被复制/引用到输出中的文件。
assets/logo.png、assets/slides.pptx、assets/frontend-template/Skill 应只包含支撑其功能的必要文件,不要新增无关文档/辅助文件,例如:
README.mdINSTALLATION_GUIDE.mdQUICK_REFERENCE.mdCHANGELOG.md这些“人类文档”会制造噪音与维护成本。Skill 的目标是让 AI agent 能更可靠地完成任务,而不是记录编写过程或面向用户的说明书。
用三层结构控制 context:
SKILL.md body:skill 触发后加载(建议 <5k words)尽量把 SKILL.md 控制在必要范围内(建议 <500 行),避免 context 膨胀。接近上限时,把细节拆分到独立文件,并在 SKILL.md 中明确“何时阅读”。
关键原则: 当 skill 支持多种变体/框架/选项时,SKILL.md 只保留核心流程与选择指引;把变体细节(pattern、example、config)放到 references/。
模式 1:高层导航 + 引用
# PDF 处理
## Quick start
用 pdfplumber 提取文本:
[code example]
## Advanced features
- **表单填写**:完整指南见 [FORMS.md](FORMS.md)
- **API reference**:所有方法见 [REFERENCE.md](REFERENCE.md)
- **Examples**:常见模式见 [EXAMPLES.md](EXAMPLES.md)
需要时才加载 FORMS.md / REFERENCE.md / EXAMPLES.md。
模式 2:按业务域拆分
当 skill 覆盖多个 domain 时,按 domain 拆分,避免加载无关内容:
bigquery-skill/
├── SKILL.md(概览与导航)
└── reference/
├── finance.md(revenue、billing metrics)
├── sales.md(opportunities、pipeline)
├── product.md(API usage、features)
└── marketing.md(campaigns、attribution)
用户问 sales 指标时,只读 sales.md。
类似地,支持多 provider 的部署类技能也可按 provider 拆分:
cloud-deploy/
├── SKILL.md(workflow + provider selection)
└── references/
├── aws.md(AWS deployment patterns)
├── gcp.md(GCP deployment patterns)
└── azure.md(Azure deployment patterns)
模式 3:条件化细节
先给基础做法,再链接到高级内容:
# DOCX 处理
## Creating documents
新建文档用 docx-js。详见 [DOCX-JS.md](DOCX-JS.md)。
## Editing documents
简单修改可以直接改 XML。
**涉及 tracked changes**:见 [REDLINING.md](REDLINING.md)
**涉及 OOXML 细节**:见 [OOXML.md](OOXML.md)
重要建议:
SKILL.md 直接链接到(保持一层深度)。Skill 创建通常按以下步骤推进:
init_skill.py)SKILL.md)package_skill.py)按顺序执行;只有在明确不适用时才跳过某步。
仅当使用方式已非常清晰时才可跳过;即使在迭代已有 skill 时,这一步通常仍有价值。
要写出有效 skill,必须先明确它会如何被使用:可以来自用户提供的真实例子,也可以由你生成例子并让用户确认。
例如:要做一个 image-editor skill,可以问:
避免一次问太多问题;先问最关键的,后续再补。
当你对“要支持的功能边界”有明确共识时,结束本步骤。
把具体例子转化为 skill 内容时,对每个例子做两件事:
scripts/、references/、assets/ 能让重复执行更快、更稳示例:做 pdf-editor(用户问“帮我旋转这个 PDF”)时,你会发现:
scripts/rotate_pdf.py示例:做 frontend-webapp-builder(用户问“做个 todo app / 做个 dashboard”)时,你会发现:
assets/hello-world/ 模板目录示例:做 big-query(用户问“今天有多少用户登录?”)时,你会发现:
references/schema.md 来记录 schema把所有例子都过一遍,最终得到“要包含哪些可复用资源”的清单。
如果是从零新建 skill,总是先运行 init_skill.py。它会生成一个包含必需结构的模板目录,减少遗漏与返工。
仅当 skill 已存在且你在做迭代/打包时,才跳过本步骤并进入下一步。
用法:
scripts/init_skill.py <skill-name> --path <output-directory>
该脚本会:
SKILL.md 模板(包含正确的 frontmatter)scripts/、references/、assets/初始化后,按需要修改或删除示例文件与目录。
编辑(新生成或已有)skill 时要记住:你是在给“另一个 Claude 实例”写说明。只加入对 Claude 有帮助且不显然的信息:流程化知识、domain 细节、可复用资产等。
根据 skill 类型参考以下指南:
references/workflows.md(顺序流程与条件分支)references/output-patterns.md(模板与示例模式)优先实现 Step 2 中识别出的 scripts/、references/、assets/。这一步可能需要用户提供材料:例如 brand-guidelines skill 需要用户提供品牌资源放入 assets/,或提供文档放入 references/。
新增脚本必须“实际运行”验证输出是否符合预期;如果脚本很多且相似,至少运行代表性样本以建立信心(兼顾时间成本)。
不需要的示例文件/目录要删除。模板目录只是演示结构,大多数 skill 不会用到全部内容。
SKILL.md写作要求: 统一使用祈使/动词原形(imperative/infinitive)表达(例如“检查… / 运行… / 生成…”)。
SKILL.md 顶部的 YAML frontmatter 只写 name 与 description:
name:skill 名称description:skill 的主要触发机制,用来告诉 Claude“什么时候用它”docx skill 的 description):不要在 frontmatter 里加入其他字段。
在正文里写清楚:如何使用该 skill 以及如何使用其 bundled resources。
开发完成后,需要打包成可分发的 .skill 文件。打包脚本会先自动验证 skill 是否符合要求:
scripts/package_skill.py <path/to/skill-folder>
也可指定输出目录:
scripts/package_skill.py <path/to/skill-folder> ./dist
打包脚本会:
.skill 文件(如 my-skill.skill),并保持正确的分发目录结构(本质是 zip + .skill 扩展名)。验证失败则输出错误并退出,不会生成包。修复后重新运行打包命令。
skill 在真实任务中使用后,用户通常会马上提出改进(此时上下文最新、反馈最具体)。
迭代 workflow:
SKILL.md 或 bundled resources