关于 skill-creator
skill-creator 为 deepagents CLI 提供技能创建与组织指南,涵盖技能结构、上下文精简设计、可复用资源、验证流程及加载位置。
主要功能
- 01技能目录优先级规则
- 02SKILL.md 结构与元数据
- 03脚本、参考资料和资源指南
- 04按需加载以管理上下文
- 05分步创建与验证技能
适用场景
- 01创建新的 deepagents 技能
- 02选择要随技能打包的资源
- 03为多种变体组织参考资料
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ langchain-ai/ deepagents --skill skill-creator安装后在 Claude Code 中输入/skill-creator确认已加载。
附带文件scripts/init_skill.pyscripts/quick_validate.py
详细介绍
Skill Creator
Deepagents 的 Skill 位置
deepagents CLI 会从五个来源加载 skills,按优先级从低到高列出如下:
| # | 目录 | 范围 | 说明 |
|---|---|---|---|
| 0 | <package>/built_in_skills/ | 内置 | 随 deepagents CLI 一同提供 |
| 1 | $DEEPAGENTS_HOME/<agent>/skills/ | 用户(deepagents 别名) | deepagents skills create 的默认目录 |
| 2 | ~/.agents/skills/ | 用户 | 可供多个 Agent 工具共享 |
| 3 | .deepagents/skills/ | 项目(deepagents 别名) | deepagents skills create --project 的默认目录 |
| 4 | .agents/skills/ | 项目 | 可供多个 Agent 工具共享 |
<agent> 是 Agent 配置名称(默认为 agent)。当两个目录中包含同名 skill 时,优先级更高的版本生效:项目 skill 覆盖用户 skill,用户或项目 skill 则覆盖内置 skill。
目录结构示例:
$DEEPAGENTS_HOME/agent/skills/ # user skills (lowest precedence)
├── skill-name-1/
│ └── SKILL.md
└── ...
<project-root>/.deepagents/skills/ # project skills (higher precedence)
├── skill-name-2/
│ └── SKILL.md
└── ...
核心原则
简洁为王
上下文窗口是公共资源。Skill 与 Agent 所需的其他内容共享上下文窗口,包括系统提示词、对话历史、其他 Skill 的元数据以及用户的实际请求。
默认假设:Agent 已经非常强大。 只添加 Agent 尚不具备的上下文。逐条审视每条信息:“Agent 真的需要这段解释吗?”以及“这一段内容是否值得它消耗的 token?”
优先使用简洁的示例,而非冗长的解释。
设定合适的自由度
让具体程度与任务的脆弱性和可变性相匹配:
高自由度(基于文本的指令):适用于存在多种有效方法、决策依赖上下文或由启发式规则指导的情况。
中等自由度(带参数的伪代码或脚本):适用于存在推荐模式、可接受一定变化或配置会影响行为的情况。
低自由度(具体脚本,参数较少):适用于操作脆弱且易出错、一致性至关重要或必须遵循特定顺序的情况。
可以把 Agent 想象成在探索一条路径:一座两侧是悬崖的窄桥需要具体的护栏(低自由度),而开阔的原野则允许多条路线(高自由度)。
Skill 的结构
每个 skill 都由必需的 SKILL.md 文件和可选的附带资源组成:
skill-name/
├── SKILL.md (required)
│ ├── YAML frontmatter metadata (required)
│ │ ├── name: (required)
│ │ └── description: (required)
│ └── Markdown instructions (required)
└── Bundled Resources (optional)
├── scripts/ - Executable code (Python/Bash/etc.)
├── references/ - Documentation intended to be loaded into context as needed
└── assets/ - Files used in output (templates, icons, fonts, etc.)
SKILL.md(必需)
每个 SKILL.md 包含:
- Frontmatter(YAML):包含
name和description字段。这是 Agent 用来判断何时使用该 skill 的唯一字段,因此描述 skill 是什么以及何时应使用它时,必须清晰且全面。 - 正文(Markdown):使用该 skill 的说明和指导。仅在 skill 被触发后才会加载(如果会被触发)。
附带资源(可选)
脚本(scripts/)
用于需要确定性可靠性或被反复重写的任务的可执行代码(Python/Bash 等)。
- 何时包含:当相同代码被反复重写或需要确定性可靠性时
- 示例:
scripts/rotate_pdf.py,用于 PDF 旋转任务 - 优势:节省 token、结果确定,且无需加载进上下文即可执行
- 注意:Agent 仍可能需要阅读脚本,以便打补丁或进行特定环境的调整
参考资料(references/)
供按需加载到上下文中的文档和参考资料,用于辅助 Agent 的流程和思考。
- 适用场景:Agent 在工作时需要参考的文档
- 示例:
references/finance.md用于金融模式,references/mnda.md用于公司保密协议模板,references/policies.md用于公司政策,references/api_docs.md用于 API 规范 - 使用场景:数据库模式、API 文档、领域知识、公司政策、详细的工作流指南
- 优势:让 SKILL.md 保持精简,仅在 Agent 判断需要时才加载
- 最佳实践:如果文件较大(超过 1 万词),请在 SKILL.md 中包含搜索模式
- 避免重复:信息应只存在于 SKILL.md 或参考文件中,二者不要重复。除非内容确属技能核心,否则优先将详细信息放入参考文件。这样既能保持 SKILL.md 精简,又能让信息便于查找,同时不占用过多上下文窗口。SKILL.md 中只保留必要的流程性指令和工作流指导,将详细的参考材料、模式和示例移至参考文件。
资源文件(assets/)
不需要加载到上下文中、而是用于 Agent 所生成输出内容的文件。
- 适用场景:技能需要使用会出现在最终输出中的文件时
- 示例:
assets/logo.png用于品牌资产,assets/slides.pptx用于 PowerPoint 模板,assets/frontend-template/用于 HTML/React 样板代码,assets/font.ttf用于字体 - 使用场景:模板、图片、图标、样板代码、字体、可被复制或修改的示例文档
- 优势:将输出资源与文档分离,使 Agent 无需将文件加载到上下文中即可使用
技能中不应包含的内容
技能应只包含直接支持其功能的必要文件。请勿创建多余的文档或辅助文件,包括:
- README.md
- INSTALLATION_GUIDE.md
- QUICK_REFERENCE.md
- CHANGELOG.md
- 等等
技能应只包含 AI Agent 完成当前任务所需的信息。它不应包含关于创建过程的辅助背景、安装与测试流程、面向用户的文档等内容。额外的文档文件只会增加杂乱和混淆。
渐进式披露设计原则
技能采用三级加载机制,以高效管理上下文:
- 元数据(名称 + 描述):始终在上下文中(约 100 词)
- SKILL.md 正文:技能触发时加载(少于 5 千词)
- 捆绑资源:由 Agent 按需加载(不限量,因为脚本可以直接执行,无需读入上下文窗口)
渐进式披露模式
保持 SKILL.md 正文精炼,并控制在 500 行以内,以减少上下文膨胀。超过 10 MB 的 SKILL.md 文件会被 Agent 运行时静默跳过。接近行数上限时,将内容拆分到单独的文件中。拆分内容时,务必在 SKILL.md 中引用这些文件,并清楚说明何时需要阅读它们,以确保技能的读者知道这些文件的存在以及何时使用。
核心原则: 当一个技能支持多种变体、框架或选项时,只在 SKILL.md 中保留核心工作流和选择指导。将针对特定变体的细节(模式、示例、配置)移到单独的参考文件中。
模式 1:带参考文件的高层指南
# PDF Processing
## Quick start
Extract text with pdfplumber:
[code example]
## Advanced features
- **Form filling**: See [FORMS.md](FORMS.md) for complete guide
- **API reference**: See [REFERENCE.md](REFERENCE.md) for all methods
- **Examples**: See [EXAMPLES.md](EXAMPLES.md) for common patterns
Agent 仅在需要时才加载 FORMS.md、REFERENCE.md 或 EXAMPLES.md。
模式 2:按领域组织
对于包含多个领域的技能,按领域组织内容,以避免加载无关上下文:
bigquery-skill/
├── SKILL.md (overview and navigation)
└── reference/
├── finance.md (revenue, billing metrics)
├── sales.md (opportunities, pipeline)
├── product.md (API usage, features)
└── marketing.md (campaigns, attribution)
当用户询问销售指标时,Agent 只读取 sales.md。
同样,对于支持多个框架或变体的技能,按变体组织:
cloud-deploy/
├── SKILL.md (workflow + provider selection)
└── references/
├── aws.md (AWS deployment patterns)
├── gcp.md (GCP deployment patterns)
└── azure.md (Azure deployment patterns)
当用户选择 AWS 时,Agent 只读取 aws.md。
模式 3:条件性细节
展示基础内容,链接到高级内容:
# DOCX Processing
## Creating documents
Use docx-js for new documents. See [DOCX-JS.md](DOCX-JS.md).
## Editing documents
For simple edits, modify the XML directly.
**For tracked changes**: See [REDLINING.md](REDLINING.md)
**For OOXML details**: See [OOXML.md](OOXML.md)
只有当用户需要这些功能时,Agent 才会读取 REDLINING.md 或 OOXML.md。
重要指南:
- 避免深层嵌套引用:参考文件与 SKILL.md 的层级保持在一级之内。所有参考文件都应直接从 SKILL.md 链接。
- 为较长的参考文件设置结构:对于超过 100 行的文件,在顶部包含目录,以便 Agent 在预览时能看到完整范围。
技能创建流程
技能创建包括以下步骤:
- 通过具体示例理解技能
- 规划可复用的技能内容(脚本、参考文件、资源)
- 初始化技能(运行 init_skill.py)
- 编辑技能(实现资源并编写 SKILL.md)
- 验证技能(运行 quick_validate.py)
- 根据实际使用情况迭代
请按顺序执行这些步骤,仅当有明确理由表明某步骤不适用时才可跳过。
第 1 步:通过具体示例理解技能
只有在已经清楚理解技能的使用模式时,才可跳过此步骤。即使是处理现有技能,此步骤依然有价值。
要创建一个有效的技能,需要清楚理解该技能将如何被使用的具体示例。这些理解既可以来自用户的直接示例,也可以来自经用户反馈验证过的生成示例。
例如,在构建图像编辑器技能时,相关问题包括:
- "这个图像编辑器技能应该支持哪些功能?编辑、旋转,还是其他?"
- "你能举一些这个技能会如何被使用的例子吗?"
- "我能想象用户会提出诸如'去除这张图片中的红眼'或'旋转这张图片'之类的请求。你还能想到这个技能的其他使用方式吗?"
- "用户会说什么话,才应该触发这个技能?"
为避免让用户应接不暇,请不要在一条消息中提出过多问题。先从最重要的问题开始,再根据需要进行追问,以获得更好的效果。
当对该技能应支持的功能有了清晰认识时,即可结束此步骤。
第 2 步:规划可复用的技能内容
要把具体示例转化为有效的技能,请对每个示例进行如下分析:
- 思考如何从零开始执行该示例
- 确定哪些脚本、参考资料和资源文件在反复执行这些工作流时会有帮助
示例:在构建 pdf-editor 技能以处理“帮我旋转这个 PDF”之类的请求时,分析结果如下:
- 旋转 PDF 每次都需要重新编写相同的代码
- 将
scripts/rotate_pdf.py脚本存放在技能中会很有帮助
示例:在为“给我做一个待办事项应用”或“给我做一个追踪步数的仪表盘”之类的请求设计 frontend-webapp-builder 技能时,分析结果如下:
- 编写前端 Web 应用每次都需要相同的 HTML/React 样板代码
- 将包含 HTML/React 样板项目文件的
assets/hello-world/模板存放在技能中会很有帮助
示例:在构建 big-query 技能以处理“今天有多少用户登录过?”之类的请求时,分析结果如下:
- 查询 BigQuery 每次都需要重新发现表结构和表之间的关系
- 将记录表结构的
references/schema.md文件存放在技能中会很有帮助
要确定技能的内容,请分析每个具体示例,列出需要包含的可复用资源:脚本、参考资料和资源文件。
第 3 步:初始化技能
现在,是时候真正创建技能了。
只有在要开发的技能已经存在,且需要迭代或打包时,才可以跳过此步骤。在这种情况下,请继续下一步。
创建新技能有两种方式:
方式 A:init_skill.py(推荐用于功能丰富的技能)
从零开始创建新技能时,运行 init_skill.py 脚本。该脚本会生成一个新的模板技能目录,自动包含技能所需的全部内容,使技能创建过程更加高效、可靠。
用法:
scripts/init_skill.py <skill-name> --path <output-directory>
对于 deepagents 命令行,请使用上文“Skill Location for Deepagents”中列出的任一技能目录:
# User skills (default)
scripts/init_skill.py <skill-name> --path "${DEEPAGENTS_HOME:-$HOME/.deepagents}/agent/skills"
# Project skills
scripts/init_skill.py <skill-name> --path .deepagents/skills
该脚本会:
- 在指定路径创建技能目录
- 生成带有正确 frontmatter 和 TODO 占位符的 SKILL.md 模板
- 创建示例资源目录:
scripts/、references/和assets/ - 在每个目录中添加可自定义或删除的示例文件
初始化后,请根据需要自定义或删除生成的 SKILL.md 和示例文件。
方式 B:deepagents skills create(快速开始)
内置的命令行命令只会创建一个仅包含 SKILL.md 模板的最小技能,不包含资源目录。对于只需要说明、不需要捆绑脚本、参考资料或资源文件的简单技能,可以使用此方式。
# Create in user skills directory
deepagents skills create <skill-name>
# Create in project skills directory
deepagents skills create <skill-name> --project
当技能需要包含捆绑资源(scripts/、references/、assets/)时,请使用 init_skill.py。若需要快速、精简的起点,请使用 deepagents skills create。
第 4 步:编辑技能
编辑(新生成的或已存在的)技能时,请记住该技能是为 Agent 使用而创建的。应包含对 Agent 有益且不易自行推断的信息。请考虑哪些流程性知识、领域相关细节或可复用资源有助于 Agent 更有效地完成这些任务。
学习经过验证的设计模式
顺序工作流、条件逻辑和输出格式方面的既定模式,请参考上文的“渐进式披露设计原则”和“核心原则”章节。
从可复用的技能内容开始
开始实现时,先从上文确定的可复用资源入手:scripts/、references/ 和 assets/ 中的文件。注意,这一步可能需要用户提供输入。例如,在实现 brand-guidelines 技能时,用户可能需要提供品牌素材或模板并存入 assets/,或提供文档并存入 references/。
新增的脚本必须实际运行测试,以确保没有错误且输出符合预期。如果存在许多类似的脚本,只需抽样测试有代表性的部分,即可在兼顾完成时间的同时确保它们都能正常工作。
技能不需要的示例文件和目录都应删除。初始化脚本会在 scripts/、references/ 和 assets/ 中创建示例文件以展示结构,但大多数技能并不需要全部示例。
更新 SKILL.md
编写指南: 始终使用祈使句/不定式形式。
Frontmatter
使用 name 和 description 编写 YAML frontmatter:
name:技能名称description:这是技能的主要触发机制,帮助 Agent 理解何时使用该技能。- 同时包含技能的功能以及具体的触发条件或使用场景。
- 所有"何时使用"的信息都应写在这里,而不是正文中。正文只在技能被触发后才会加载,因此正文中的"何时使用本技能"章节对 Agent 没有帮助。
docx技能的描述示例:"Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. Use when working 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"
根据 Agent Skills 规范,YAML frontmatter 中允许的其他字段仅有可选属性:license、compatibility、allowed-tools 和 metadata。不要包含这些之外的任何字段。
正文
编写使用该技能及其捆绑资源的说明。
第 5 步:验证技能
技能开发完成后,对其进行验证,确保满足所有要求:
scripts/quick_validate.py <path/to/skill-folder>
验证脚本会检查以下内容:
- YAML frontmatter 格式及必填字段
- 技能命名规范(Unicode 小写字母与数字,可包含连字符,最多 64 个字符)
- 描述的完整性(不得包含尖括号,最多 1024 个字符)
- 必填字段:
name和description - 仅允许的 frontmatter 属性:
name、description、license、compatibility、allowed-tools、metadata
如果验证失败,请修复报告的错误,然后重新运行验证命令。
第 6 步:迭代
测试技能后,用户可能会提出改进要求。这种情况通常发生在刚使用完技能之后,此时对技能的表现还留有清晰印象。
迭代流程:
- 在真实任务中使用该技能
- 注意遇到的困难或低效之处
- 确定 SKILL.md 或捆绑资源应如何更新
- 实施更改并再次测试