关于 creating-effective-skills
指导按照 Claude 官方最佳实践设计 Agent Skill 的指南。内容涵盖范围界定、结构、渐进式披露、可复用资源和可选测试场景。
主要功能
- 01澄清需求并界定范围
- 02落实单一职责边界
- 03选择适当的自由度
- 04规划脚本、参考资料和资源
- 05组织并编写 SKILL.md
- 06定义工具权限和测试场景
适用场景
- 01将模糊需求转化为聚焦的 Skill
- 02规划 Skill 文件和参考资料
- 03编写精简的 SKILL.md 指令
- 04添加工具权限或评估场景
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ taisukeoe/ agentic-ai-skills-creator --skill creating-effective-skills安装后在 Claude Code 中输入/creating-effective-skills确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdreferences/degrees-of-freedom.mdprogressive-disclosure.mdworkflows-and-validation.mdtests/scenarios.md详细介绍
创建有效的技能
创建符合 Claude 官方最佳实践的 Agent 技能指南。
核心原则
简洁至关重要:上下文窗口由大家共享。只添加 Claude 尚不了解的内容。默认假设:Claude 已经非常聪明。
渐进式披露:技能分三个层级加载:
- 元数据(约 100 个 token)——始终加载
- SKILL.md 正文(少于 5k 个 token)——触发时加载
- 捆绑资源——按需加载
保持 SKILL.md 简洁:目标约 200 行,最多 500 行。详细内容应尽可能移至参考文件。
单一职责:每项技能只做好一件事。
工作流
步骤 1:了解技能需求
请用户进一步说明(根据具体情况调整问题):
对于明确的请求(例如,“格式化 Markdown 表格”):
- “应支持哪些输入格式?”
- “你对输出有什么偏好?”
- “需要处理哪些边缘情况?”
对于模糊的请求(例如,“处理数据”、“帮助处理文件”):
- “具体是哪类数据/文件?”(格式、来源、结构)
- “需要执行哪些操作?”(转换、验证、迁移、分析)
- “需要解决的具体问题是什么?”
- 继续之前至少提出 3 个具体问题
需要额外澄清的危险信号:
- 含糊的动词:“处理”、“管理”、“帮助”
- 宽泛的名词:没有具体说明的数据、文件、文档
明确了解以下内容:目的、使用示例、触发条件,以及范围边界。
步骤 2:验证范围
继续之前,确认技能是否符合单一职责:
检查命名:
- ❌
handling-data——范围太广,是什么数据?要如何处理? - ❌
data-helper——过于笼统,目的不清晰 - ✅
transforming-csv-data——具体操作 + 数据类型 - ✅
validating-json-schemas——单一目的明确
检查边界:
- 能否清楚说明范围内和范围外的内容?
- 如果边界不清楚,说明范围太广 → 请用户缩小范围
如果范围太广:
- 提出一个聚焦的替代方案(例如,将“处理数据”改为“transforming-csv-data”)
- 说明排除哪些内容以及原因
- 如有需要,建议拆分为多项技能
范围验证通过前,不要创建文件。
步骤 3:确定自由度
自由度决定 Claude 遵循技能时有多大的灵活空间:
- 高:存在多种有效方法,决策取决于上下文
- 中:有首选模式,可接受一定变化
- 低:操作脆弱,一致性至关重要
除非自由度明确为低:阅读 references/degrees-of-freedom.md,并应用其中的决策框架。在说明理由时,引用以下因素:脆弱性、上下文依赖性、一致性、错误影响。
如果阅读参考资料后仍不确定,请询问用户。
步骤 4:规划可复用内容
确定要包含的内容:
脚本(scripts/):用于确定性操作的可执行代码
参考资料(references/):按需加载的文档
资源文件(assets/):用于输出的文件(模板、图片、字体)
步骤 5:创建结构
skill-name/
├── SKILL.md (required - AI agent instructions)
├── README.md (optional - human-facing installation and usage guide)
├── references/ (optional)
├── tests/
│ └── scenarios.md (optional - self-evaluation scenarios)
├── scripts/ (optional)
└── assets/ (optional)
README.md 与 SKILL.md 的区别:
- SKILL.md:面向 Claude 的说明(工作流、模式、技术细节)
- README.md:面向用户的说明(安装、权限、概述)
如包含 README.md,应包括:
- 技能功能概述
- 文件结构说明(尤其是
tests/scenarios.md的用途) - 安装说明和所需权限
避免创建:INSTALLATION_GUIDE.md、CHANGELOG.md 或其他重复文档。使用 README.md 编写面向用户的文档。
步骤 6:编写 SKILL.md
Frontmatter
---
name: skill-name
description: What the skill does and when to use it
---
命名(使用动名词形式):
- 推荐:
processing-pdfs、analyzing-spreadsheets、managing-databases - 避免:
helper、utils、tools、anthropic-*、claude-*
描述(使用第三人称,说明内容和适用场景):
- 推荐:"从 PDF 文件中提取文本和表格、填写表单、合并文档。在处理 PDF 文件,或用户提到 PDF、表单或文档提取时使用。"
- 避免:"帮助处理文档"、"处理数据"
描述应具体并包含关键术语。描述是主要的触发机制。
正文
使用祈使句。保持简短(目标约 200 行,最多 500 行)。仅包含:
- 快速入门/基本用法
- 核心工作流
- 对其他文件的引用
对于复杂的多步骤流程,请参阅 references/workflows-and-validation.md。
示例模式:
## Quick start
[Basic usage]
## Advanced features
**Feature A**: See [references/feature-a.md](references/feature-a.md)
**Feature B**: See [references/feature-b.md](references/feature-b.md)
引用内容保持一层深度。模式请参阅 references/progressive-disclosure.md。
步骤 7:创建参考文件
对于超过 100 行的文件,请在顶部添加目录。
适当时按领域组织:
skill/
├── SKILL.md
└── references/
├── domain_a.md
└── domain_b.md
避免:多层嵌套的参考内容、重复信息、通用文件名。
步骤 8:创建测试场景(可选)
询问用户:"是否要为此技能创建测试场景?测试场景可通过 /evaluating-skills-with-models 进行自动评估,以衡量技能在不同模型(sonnet、opus、haiku)上的质量。"
如果用户同意,请创建 tests/scenarios.md 用于自我评估:
## Scenario: [Name]
**Difficulty:** Easy | Medium | Hard | Edge-case
**Query:** User request that triggers this skill
**Expected behaviors:**
1. [Action description]
- **Minimum:** What counts as "did it"
- **Quality criteria:** What "did it well" looks like
- **Haiku pitfall:** Common failure mode for smaller models
- **Weight:** 1-5 (importance)
**Output validation:** (optional)
- Pattern: `regex`
- Line count: `< N`
此格式的原因:二元的通过/失败结果无法区分模型。基于质量的评分可以揭示能力差异。
步骤 9:定义 allowed-tools
完成 SKILL.md 和参考文件后,确定此技能使用的工具:
- 检查 SKILL.md 和参考文件中的工具使用情况
- 列出需要预先批准的工具(例如,
Bash(git status:*)、WebSearch、Skill(other-skill)) - 如有需要,在 frontmatter 中添加
allowed-tools字段
---
name: skill-name
description: ...
allowed-tools: "Bash(git status:*) Bash(git diff:*) WebSearch"
---
此字段仍处于实验阶段,但有助于 Agent 预先批准工具访问权限。
重要注意事项:
Read、Glob默认已获允许——请勿添加Edit、Write具有破坏性——请勿预先批准- 尽可能具体地指定 Bash 子命令
- 推荐:
Bash(git status:*) Bash(git diff:*) Bash(git log:*) - 避免:
Bash(git:*)(范围过宽,包含git push --force等破坏性操作)
- 推荐:
反模式
❌ Windows 风格路径(scripts\file.py)
❌ 没有默认选项,却提供过多选项
❌ 时效性信息
❌ 术语不一致
❌ 多层嵌套的参考内容
❌ 含糊的指令
参考资料
渐进式披露:references/progressive-disclosure.md - 详细模式和示例
自由度:references/degrees-of-freedom.md - 关于适当自由度的指南
工作流与验证:references/workflows-and-validation.md - 创建包含验证和反馈循环的工作流