mcpField
S
skill-creator

skill-creator

github.com/langchain-aiAgent 工作流30.8k1.3k 次安装今天更新
代码仓库

关于 skill-creator

skill-creator 为 deepagents CLI 提供技能创建与组织指南,涵盖技能结构、上下文精简设计、可复用资源、验证流程及加载位置。

主要功能

  1. 01技能目录优先级规则
  2. 02SKILL.md 结构与元数据
  3. 03脚本、参考资料和资源指南
  4. 04按需加载以管理上下文
  5. 05分步创建与验证技能

适用场景

  1. 01创建新的 deepagents 技能
  2. 02选择要随技能打包的资源
  3. 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 完成当前任务所需的信息。它不应包含关于创建过程的辅助背景、安装与测试流程、面向用户的文档等内容。额外的文档文件只会增加杂乱和混淆。

渐进式披露设计原则

技能采用三级加载机制,以高效管理上下文:

  1. 元数据(名称 + 描述):始终在上下文中(约 100 词)
  2. SKILL.md 正文:技能触发时加载(少于 5 千词)
  3. 捆绑资源:由 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 在预览时能看到完整范围。

技能创建流程

技能创建包括以下步骤:

  1. 通过具体示例理解技能
  2. 规划可复用的技能内容(脚本、参考文件、资源)
  3. 初始化技能(运行 init_skill.py)
  4. 编辑技能(实现资源并编写 SKILL.md)
  5. 验证技能(运行 quick_validate.py)
  6. 根据实际使用情况迭代

请按顺序执行这些步骤,仅当有明确理由表明某步骤不适用时才可跳过。

第 1 步:通过具体示例理解技能

只有在已经清楚理解技能的使用模式时,才可跳过此步骤。即使是处理现有技能,此步骤依然有价值。

要创建一个有效的技能,需要清楚理解该技能将如何被使用的具体示例。这些理解既可以来自用户的直接示例,也可以来自经用户反馈验证过的生成示例。

例如,在构建图像编辑器技能时,相关问题包括:

  • "这个图像编辑器技能应该支持哪些功能?编辑、旋转,还是其他?"
  • "你能举一些这个技能会如何被使用的例子吗?"
  • "我能想象用户会提出诸如'去除这张图片中的红眼'或'旋转这张图片'之类的请求。你还能想到这个技能的其他使用方式吗?"
  • "用户会说什么话,才应该触发这个技能?"

为避免让用户应接不暇,请不要在一条消息中提出过多问题。先从最重要的问题开始,再根据需要进行追问,以获得更好的效果。

当对该技能应支持的功能有了清晰认识时,即可结束此步骤。

第 2 步:规划可复用的技能内容

要把具体示例转化为有效的技能,请对每个示例进行如下分析:

  1. 思考如何从零开始执行该示例
  2. 确定哪些脚本、参考资料和资源文件在反复执行这些工作流时会有帮助

示例:在构建 pdf-editor 技能以处理“帮我旋转这个 PDF”之类的请求时,分析结果如下:

  1. 旋转 PDF 每次都需要重新编写相同的代码
  2. 将 scripts/rotate_pdf.py 脚本存放在技能中会很有帮助

示例:在为“给我做一个待办事项应用”或“给我做一个追踪步数的仪表盘”之类的请求设计 frontend-webapp-builder 技能时,分析结果如下:

  1. 编写前端 Web 应用每次都需要相同的 HTML/React 样板代码
  2. 将包含 HTML/React 样板项目文件的 assets/hello-world/ 模板存放在技能中会很有帮助

示例:在构建 big-query 技能以处理“今天有多少用户登录过?”之类的请求时,分析结果如下:

  1. 查询 BigQuery 每次都需要重新发现表结构和表之间的关系
  2. 将记录表结构的 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 步:迭代

测试技能后,用户可能会提出改进要求。这种情况通常发生在刚使用完技能之后,此时对技能的表现还留有清晰印象。

迭代流程:

  1. 在真实任务中使用该技能
  2. 注意遇到的困难或低效之处
  3. 确定 SKILL.md 或捆绑资源应如何更新
  4. 实施更改并再次测试

评论

支持 Markdown