【Vercel实用Skill】skill-creator 技能
创建有效技能的指南。当用户想要创建新技能(或更新现有技能)以扩展Claude的专业知识、工作流程或工具集成时,应使用此技能。
技能概述
skill-creator 技能是一个专门用于创建Agent Skill的技能。它提供了创建有效技能的完整指南,包括技能的结构、核心原则、创建过程和最佳实践。通过使用这个技能,开发者可以创建模块化、自包含的技能包,这些技能包可以扩展AI代理的能力,提供专业知识、工作流程和工具集成。
下载地址:https://github.com/vercel-labs/json-render
主要功能
- 技能结构指导: 提供技能的标准结构和组成部分
- 核心原则: 教授创建有效技能的核心原则
- 创建流程: 提供完整的技能创建流程
- 最佳实践: 分享创建技能的最佳实践和设计模式
- 工具脚本: 提供初始化和打包技能的脚本
- 参考文档: 提供工作流程和输出模式的参考文档
触发条件
在以下情况下应该调用此技能:
- 用户想要创建新的技能
- 用户想要更新现有技能
- 用户需要了解如何创建有效的技能
- 用户需要扩展AI代理的专业知识
关于技能
技能是模块化、自包含的包,通过提供专业知识、工作流程和工具来扩展Claude的能力。可以将它们视为特定领域或任务的"入职指南"——它们将Claude从通用代理转变为配备程序性知识的专业代理。
技能提供的内容
- 专业工作流程: 特定领域的多步骤程序
- 工具集成: 使用特定文件格式或API的说明
- 领域专业知识: 公司特定知识、模式、业务逻辑
- 捆绑资源: 复杂和重复任务的脚本、参考和资产
核心原则
简洁是关键
上下文窗口是公共资源。技能与Claude需要的其他所有内容共享上下文窗口:系统提示、对话历史、其他技能的元数据和实际用户请求。
默认假设:Claude已经非常聪明。只添加Claude还没有的上下文。挑战每条信息:"Claude真的需要这个解释吗?"和"这段话是否值得其token成本?"
优先使用简洁示例而不是冗长的解释。
设置适当的自由度
根据任务的脆弱性和可变性匹配特异性水平:
- 高自由度(基于文本的说明): 当多种方法有效、决策取决于上下文或启发式指导方法时使用
- 中等自由度(伪代码或带参数的脚本): 当存在首选模式、某些变化可接受或配置影响行为时使用
- 低自由度(特定脚本、少量参数): 当操作脆弱且容易出错、一致性至关重要或必须遵循特定顺序时使用
技能结构
每个技能由必需的SKILL.md文件和可选的捆绑资源组成:
skill-name/
├── SKILL.md (必需)
│ ├── YAML frontmatter元数据 (必需)
│ │ ├── name: (必需)
│ │ └── description: (必需)
│ └── Markdown说明 (必需)
└── 捆绑资源 (可选)
├── scripts/ - 可执行代码(Python/Bash等)
├── references/ - 旨在根据需要加载到上下文中的文档
└── assets/ - 在输出中使用的文件(模板、图标、字体等)
SKILL.md(必需)
每个SKILL.md由以下部分组成:
- Frontmatter(YAML): 包含name和description字段。这些是Claude确定何时使用技能的唯一字段,因此在描述技能是什么以及何时应该使用时非常重要清晰和全面。
- 正文(Markdown): 使用技能的说明和指导。仅在技能触发后加载(如果有的话)。
捆绑资源(可选)
Scripts (scripts/)
需要确定性可靠性或重复重写的任务的可执行代码(Python/Bash等)。
何时包含
当相同的代码被重复重写或需要确定性可靠性时
References (references/)
旨在根据需要加载到上下文中以告知Claude过程和思考的文档和参考材料。
何时包含
用于Claude在工作时应该参考的文档
Assets (assets/)
不打算加载到上下文中,而是在Claude生成的输出中使用的文件。
何时包含
当技能需要在最终输出中使用的文件时
技能创建过程
步骤1: 通过具体示例理解技能
跳过此步骤仅当技能的使用模式已经清楚理解时。即使在使用现有技能时,它仍然有价值。
步骤2: 规划可重用的技能内容
分析每个示例,识别哪些脚本、参考和资产在重复执行这些工作流程时会有帮助。
步骤3: 初始化技能
运行init_skill.py脚本:
scripts/init_skill.py <skill-name> --path <output-directory>
步骤4: 编辑技能
实现资源并编写SKILL.md。记住技能是为另一个Claude实例创建的。
步骤5: 打包技能
运行package_skill.py脚本:
scripts/package_skill.py <path/to/skill-folder>
步骤6: 迭代
根据实际使用情况改进技能。
渐进式披露设计原则
技能使用三级加载系统来高效管理上下文:
- 元数据(name + description): 始终在上下文中(~100字)
- SKILL.md正文: 当技能触发时(<5k字)
- 捆绑资源: 根据Claude的需要(无限制,因为脚本可以在不读入上下文窗口的情况下执行)
关键导出
| 文件/脚本 | 用途 |
|---|---|
| SKILL.md | 技能的主要说明文件 |
| scripts/init_skill.py | 初始化新技能目录 |
| scripts/package_skill.py | 打包技能为.skill文件 |
| scripts/quick_validate.py | 快速验证技能结构 |
| references/workflows.md | 顺序工作流程和条件逻辑指南 |
| references/output-patterns.md | 模板和示例模式指南 |
| LICENSE.txt | 完整许可条款 |
使用示例
示例: 创建PDF处理技能
# 1. 理解技能需求
# 用户问题:
# - "PDF处理技能应该支持什么功能?编辑、旋转还是其他?"
# - "能否举例说明如何使用这个技能?"
# - "用户会说什么来触发这个技能?"# 2. 规划资源
# 分析显示:
# - 旋转PDF每次都需要重写相同的代码
# - scripts/rotate_pdf.py脚本会有帮助
# - references/pdf_operations.md参考文档会有帮助# 3. 初始化技能
scripts/init_skill.py pdf-editor --path ./skills# 4. 编辑技能
# - 实现 scripts/rotate_pdf.py
# - 编写 references/pdf_operations.md
# - 编写 SKILL.md# 5. 打包技能
scripts/package_skill.py ./skills/pdf-editor# 6. 迭代
# 根据实际使用反馈改进技能
最佳实践
- 保持简洁: SKILL.md正文保持在500行以内,以最小化上下文膨胀
- 清晰描述: 在description字段中清晰描述技能是什么以及何时使用
- 避免重复: 信息应该存在于SKILL.md或参考文件中,不要两者都有
- 渐进式披露: 将详细参考材料移到references/目录,保持SKILL.md精简
- 测试脚本: 实际运行添加的脚本以确保没有错误
- 删除示例文件: 删除不需要的示例文件和目录
- 使用祈使语气: 在SKILL.md中始终使用祈使/不定式形式
- 避免深层嵌套: 保持参考文件从SKILL.md一级深度链接
