mcpField
C
create-agent-skills

create-agent-skills

github.com/everyincAgent 工作流25.8k218 次安装1 天前更新
代码仓库

关于 create-agent-skills

create-agent-skills 为 Claude Code 用户提供创建和审查技能与命令的指南,涵盖格式、调用控制及参考文件组织。它说明如何依据任务类型选择单文件命令或带支持文件的技能目录。

主要功能

  1. 01介绍技能与命令的格式
  2. 02说明 frontmatter 配置选项
  3. 03指导调用权限与上下文设置
  4. 04讲解渐进式信息披露
  5. 05提供创建和审查检查清单

适用场景

  1. 01为 Claude Code 创建工作流技能
  2. 02将简单任务编写为命令文件
  3. 03为技能添加参考文件或脚本
  4. 04审查现有技能的结构与配置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/everyinc/compound-engineering-plugin --skill create-agent-skills

安装后在 Claude Code 中输入/create-agent-skills确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
api-security.md
be-clear-and-direct.md
best-practices.md
common-patterns.md
core-principles.md
executable-code.md
iteration-and-testing.md
official-spec.md
recommended-structure.md
skill-structure.md
using-scripts.md
using-templates.md
workflows-and-validation.md
templates/
router-skill.md
simple-skill.md
workflows/
add-reference.md
add-script.md
add-template.md
add-workflow.md
audit-skill.md
create-domain-expertise-skill.md
create-new-skill.md
get-guidance.md
upgrade-to-router.md
verify-skill.md

详细介绍

创建技能与命令

本技能将教你如何按照 code.claude.com/docs/en/skills 中的官方规范创建有效的 Claude Code 技能。

命令与技能现在是同一回事

自定义斜杠命令已并入技能。.claude/commands/review.md 文件和 .claude/skills/review/SKILL.md 技能都会创建 /review,且工作方式相同。现有 .claude/commands/ 文件仍可继续使用。技能还提供可选功能:用于存放支持文件的目录、用于控制调用方式的 frontmatter,以及自动加载上下文。

如果技能和命令同名,则优先使用技能。

何时创建哪种

在以下情况使用命令文件(commands/name.md):

  • 简单的单文件工作流
  • 不需要支持文件
  • 面向任务的操作(部署、提交、分类)

在以下情况使用技能目录(skills/name/SKILL.md):

  • 需要支持性的参考文件、脚本或模板
  • Claude 应自动加载的背景知识
  • 复杂到适合渐进式披露

两者使用相同的 YAML frontmatter 和 Markdown 正文格式。

标准 Markdown 格式

使用 YAML frontmatter + Markdown 正文,并采用标准 Markdown 标题。保持简洁直接。

---
name: my-skill-name
description: What it does and when to use it
---

# My Skill Name

## Quick Start
Immediate actionable guidance...

## Instructions
Step-by-step procedures...

## Examples
Concrete usage examples...

Frontmatter 参考

所有字段均为可选。仅建议填写 description。

字段必填说明
name否显示名称。使用小写字母、数字和连字符(最多 64 个字符)。默认为目录名称。
description建议填写说明其功能以及何时使用。Claude 会用它进行自动发现。最多 1024 个字符。
argument-hint否自动补全时显示的提示。例如:[issue-number]
disable-model-invocation否设为 true 可阻止 Claude 自动加载。适用于 /deploy、/commit 等手动工作流。默认值:false。
user-invocable否设为 false 可从 / 菜单中隐藏。适用于背景知识。默认值:true。
allowed-tools否Claude 无需权限提示即可使用的工具。例如:Read, Bash(git *)
model否要使用的模型。可选值:haiku、sonnet、opus。
context否设为 fork 可在隔离的子 Agent 上下文中运行。
agent否context: fork 时使用的子 Agent 类型。可选值:Explore、Plan、general-purpose 或自定义 Agent 名称。
调用控制
Frontmatter用户能否调用Claude 能否调用加载时机
(默认)是是描述始终在上下文中,调用时加载完整内容
disable-model-invocation: true是否描述不在上下文中,仅在用户调用时加载
user-invocable: false否是描述始终在上下文中,相关时加载

对具有副作用的工作流使用 disable-model-invocation: true:/deploy、/commit、/triage-prs、/send-slack-message。你不会希望 Claude 因为代码看起来已准备就绪,就自行决定部署。

对不属于有意义用户操作的背景知识使用 user-invocable: false:编码规范、领域背景、旧系统文档。

动态功能

参数

使用 $ARGUMENTS 占位符接收用户输入。如果内容中未包含该占位符,参数会自动追加。

---
name: fix-issue
description: Fix a GitHub issue
disable-model-invocation: true
---

Fix GitHub issue $ARGUMENTS following our coding standards.

访问单个参数:$ARGUMENTS[0] 或简写 $0、$1、$2。

动态上下文注入

技能支持动态上下文注入:在用反引号括起来的 shell 命令前加一个感叹号,预处理器便会在加载时执行该命令,并用标准输出替换这条指令。在要执行的命令的起始反引号前立即写入感叹号(例如,要注入当前 git 分支,请写入感叹号,后面跟着用反引号括起来的 git branch --show-current)。

**重要:**预处理器会将整个 SKILL.md 作为纯文本扫描,不会解析 Markdown。围栏代码块或行内代码片段中的指令也会执行。如果某项技能通过字面示例介绍这种语法,预处理器仍会尝试运行这些示例,导致加载失败。要安全地介绍此功能,请像这里一样用文字描述,或将示例放在参考文件中。Claude 会按需加载参考文件,不会对其进行预处理。

如需查看技能中动态上下文注入的具体示例,请参阅 official-spec.md §“动态上下文注入”。

在子 Agent 中运行

添加 context: fork 可在隔离环境中运行。技能内容会成为子 Agent 的提示词。子 Agent 不会获得对话历史。

---
name: deep-research
description: Research a topic thoroughly
context: fork
agent: Explore
---

Research $ARGUMENTS thoroughly:
1. Find relevant files
2. Analyze the code
3. Summarize findings

渐进式披露

将 SKILL.md 控制在 500 行以内。将详细内容拆分到参考文件中:

my-skill/
├── SKILL.md           # Entry point (required, overview + navigation)
├── reference.md       # Detailed docs (loaded when needed)
├── examples.md        # Usage examples (loaded when needed)
└── scripts/
    └── helper.py      # Utility script (executed, not loaded)

从 SKILL.md 添加链接:For API details, see [reference.md](reference.md).

参考文件与 SKILL.md 的引用层级应保持一层。避免嵌套引用链。

有效的描述

描述有助于发现技能。应同时说明技能的作用和适用时机。

良好示例:

description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction.

不佳示例:

description: Helps with documents

你想做什么?

  1. 创建新技能 - 从头开始构建
  2. 创建新命令 - 构建斜杠命令
  3. 审查现有技能 - 检查是否符合最佳实践
  4. 添加组件 - 添加工作流/参考资料/示例
  5. 获取指导 - 了解技能设计

创建新技能或命令

第 1 步:选择类型

思考:这是手动工作流(部署、提交、分类处理),还是背景知识(约定、模式)?

  • 手动工作流 → 使用 disable-model-invocation: true 的命令
  • 背景知识 → 不使用 disable-model-invocation 的技能
  • 包含支持文件的复杂内容 → 技能目录
第 2 步:创建文件

命令:

---
name: my-command
description: What this command does
argument-hint: [expected arguments]
disable-model-invocation: true
allowed-tools: Bash(gh *), Read
---

# Command Title

## Workflow

### Step 1: Gather Context
...

### Step 2: Execute
...

## Success Criteria
- [ ] Expected outcome 1
- [ ] Expected outcome 2

技能:

---
name: my-skill
description: What it does. Use when [trigger conditions].
---

# Skill Title

## Quick Start
[Immediate actionable example]

## Instructions
[Core guidance]

## Examples
[Concrete input/output pairs]
第 3 步:添加参考文件(如有需要)

从 SKILL.md 链接到详细内容:

For API reference, see [reference.md](reference.md).
For form filling guide, see [forms.md](forms.md).
第 4 步:使用真实任务进行测试
  1. 使用实际任务测试,而非测试场景
  2. 通过 /skill-name 直接调用以验证
  3. 提出与描述相符的问题,检查是否会自动触发
  4. 根据实际表现进行优化

审查清单

  • YAML 前置元数据有效(包含名称和描述)
  • 描述包含触发关键词且具体明确
  • 使用标准 Markdown 标题(而非 XML 标签)
  • SKILL.md 少于 500 行
  • 如果会产生副作用,则设置 disable-model-invocation: true
  • 如果需要特定工具,则设置 allowed-tools
  • 参考文件仅一层引用,且链接正确
  • 示例具体,而非抽象
  • 已使用真实任务进行测试

应避免的反模式

  • 正文中使用 XML 标签 - 使用标准 Markdown 标题
  • 描述含糊 - 使用明确的触发关键词
  • 嵌套过深 - 参考文件与 SKILL.md 的引用层级保持一层
  • 缺少调用控制 - 有副作用的工作流需要设置 disable-model-invocation: true
  • 选项过多 - 提供默认选项和退出方式
  • 将问题推给 Claude - 脚本应明确处理错误

参考文件

如需详细指导,请参阅:

来源

评论

支持 Markdown