跳到主要内容

Skill 文件结构

一个 Agent Skill 本质上是一个文件夹,核心是 SKILL.md 文件。理解文件结构是编写高质量 Skill 的基础。

基本结构

最简单的 Skill 只需要一个文件夹和一个 SKILL.md 文件:

my-skill/
└── SKILL.md

这是 Skill 的最小可行单元。SKILL.md 文件包含两部分:YAML frontmatter(元数据)和 Markdown 正文(指令内容)。

SKILL.md 文件详解

完整示例

---
name: "python-code-reviewer"
description: "审查 Python 代码质量,检查 PEP 8 规范、类型注解、文档字符串。当用户请求代码审查或提交 Python 代码时触发。"
---

# Python 代码审查专家

你是一位专业的 Python 代码审查员,精通 PEP 8 规范和 Python 最佳实践。

## 审查范围

### 代码风格
- 检查命名规范(变量、函数、类)
- 检查缩进和空格使用
- 检查行长度(建议不超过 88 字符)

### 类型注解
- 检查函数参数和返回值的类型注解
- 验证类型注解的正确性

### 文档
- 检查 docstring 是否存在
- 验证 docstring 格式(Google/NumPy/Sphinx 风格)

## 输出格式

请按以下格式输出审查结果:

1. **问题列表**:按严重程度排序
- 🔴 严重:可能导致错误的问题
- 🟡 警告:代码风格问题
- 🔵 建议:优化建议

2. **改进建议**:针对每个问题给出具体修改方案

3. **总体评价**:简要总结代码质量

YAML Frontmatter

SKILL.md 文件以 YAML frontmatter 开头,用三个连字符 --- 包围。Frontmatter 定义了 Skill 的元数据。

必需字段

字段类型限制说明
namestring小写字母、数字、连字符,不超过 64 字符Skill 的唯一标识符
descriptionstring不超过 1024 字符描述 Skill 的功能和触发条件

name 字段规范

name 是 Skill 的标识符,需要遵循以下规则:

✅ 正确示例
name: "code-reviewer"
name: "python-linter"
name: "api-doc-generator"
name: "test-writer-v2"

❌ 错误示例
name: "Code Reviewer" # 包含大写字母
name: "code_reviewer" # 使用下划线而非连字符
name: "代码审查" # 包含非 ASCII 字符
name: "a-very-long-skill-name-that-exceeds-the-64-character-limit" # 超过 64 字符

description 字段规范

description 是决定 Skill 何时被触发的关键字段。它需要同时说明:

  1. 功能描述:这个 Skill 做什么
  2. 触发条件:什么时候应该使用这个 Skill
✅ 好的 description
description: "审查 Python 代码质量,检查 PEP 8 规范。当用户请求代码审查或提交 Python 代码时触发。"

❌ 太模糊
description: "帮助写代码" # 不清楚具体功能

❌ 太宽泛
description: "处理所有编程相关问题" # 可能导致过度触发

❌ 缺少触发条件
description: "Python 代码审查工具" # 没有说明何时使用

可选字段

除了必需字段,frontmatter 还可以包含可选字段:

---
name: "api-doc-generator"
description: "为 REST API 生成文档。当用户需要生成 API 文档时触发。"
version: "1.0.0"
author: "your-name"
tags:
- api
- documentation
- rest
---

Markdown 正文

Frontmatter 之后是 Markdown 格式的正文,这是给 AI 的具体指令。正文内容决定了 Skill 的实际效果。

正文结构建议

一个结构良好的正文通常包含以下部分:

# 标题(定义角色)

简要说明 AI 在这个 Skill 中扮演什么角色。

## 核心职责

列出主要任务和关注点。

## 工作流程

描述执行任务的步骤。

## 输出格式

定义输出的结构和样式。

## 注意事项

列出需要避免的问题或特殊情况。

目录结构变体

包含资源文件的 Skill

如果 Skill 需要引用模板、配置或其他资源文件,可以添加额外的文件:

my-skill/
├── SKILL.md
├── templates/
│ ├── api-doc.md
│ └── readme.md
└── config/
└── rules.json

在 SKILL.md 中可以引用这些文件:

---
name: "doc-generator"
description: "生成项目文档。当用户需要生成 README 或 API 文档时触发。"
---

# 文档生成器

使用项目根目录下的 templates/ 文件夹中的模板生成文档。

## 可用模板

- `templates/readme.md`:README 模板
- `templates/api-doc.md`:API 文档模板

多文件 Skill

对于复杂的工作流,可以将指令拆分到多个文件:

code-quality-skill/
├── SKILL.md # 主入口
├── linting.md # 代码检查规则
├── formatting.md # 格式化规则
└── testing.md # 测试规范

主 SKILL.md 可以引用其他文件:

---
name: "code-quality"
description: "全面的代码质量检查。当用户请求代码质量检查时触发。"
---

# 代码质量检查器

本 Skill 包含以下检查模块:

1. 代码检查(参考 linting.md)
2. 格式化检查(参考 formatting.md)
3. 测试规范检查(参考 testing.md)

请依次执行以上检查。

存放位置

不同工具对 Skill 存放位置有不同的约定:

Claude Code

项目根目录/
├── .claude/
│ └── skills/
│ ├── code-reviewer/
│ │ └── SKILL.md
│ └── doc-generator/
│ └── SKILL.md
└── ...

Trae IDE

项目根目录/
├── .trae/
│ └── skills/
│ ├── code-reviewer/
│ │ └── SKILL.md
│ └── doc-generator/
│ └── SKILL.md
└── ...

Cursor

项目根目录/
├── .cursor/
│ └── skills/
│ ├── code-reviewer/
│ │ └── SKILL.md
│ └── doc-generator/
│ └── SKILL.md
└── ...

全局 Skills

除了项目级别的 Skills,还可以创建全局 Skills,适用于所有项目:

用户目录/
├── .claude/
│ └── skills/
│ └── global-skill/
│ └── SKILL.md

文件编码

SKILL.md 文件应使用 UTF-8 编码,确保中文字符正常显示。

命名规范

文件夹命名

  • 使用小写字母
  • 单词之间用连字符连接
  • 名称应简洁且具有描述性
✅ 好的命名
code-reviewer/
python-linter/
api-doc-generator/

❌ 不好的命名
CodeReviewer/ # 大写字母
code_reviewer/ # 下划线
skill1/ # 无意义名称

与 name 字段的关系

文件夹名称和 SKILL.md 中的 name 字段最好保持一致,便于管理:

code-reviewer/
└── SKILL.md # name: "code-reviewer"

小结

理解 Skill 的文件结构是编写高质量 Skill 的第一步。记住以下要点:

  1. 最小结构:一个文件夹 + 一个 SKILL.md 文件
  2. 必需字段:name 和 description 是 frontmatter 的必需字段
  3. description 关键:清晰描述功能和触发条件
  4. 正文结构:角色定义、职责、流程、输出格式
  5. 存放位置:遵循各工具的约定

下一步,我们将学习 如何编写高质量的 Skill