博客
首页归档关于搜索

关联站点

CodeRunCommon AuthNav2文件中转站搜索引擎ZBookSBTI 人格测试OSS对象存储在线翻译

鄂ICP备19019526号

© 2026 博客

  1. 首页
  2. 如何编写标准规范的 Skills:从入门到精通的完整指南

如何编写标准规范的 Skills:从入门到精通的完整指南

2026年4月16日·约 7 分钟·1867 字·8 次阅读
AIAI 日报大模型商业分析技术前沿
如何编写标准规范的 Skills:从入门到精通的完整指南

目录

  • 引言
  • 一、Skill 是什么?先搞清楚基本概念
  • 各部分职责
  • 二、SKILL.md 的标准结构
  • 2.1 YAML Frontmatter(必须)
  • 2.2 Body(Markdown正文)
  • 三、目录结构规范
  • 3.1 标准布局
  • 3.2 哪些文件不该有
  • 四、触发词(Description)写作规范
  • 4.1 Description 的核心作用
  • 4.2 写作原则
  • 4.3 示例对比
  • 五、Body 正文写作规范
  • 5.1 使用祈使句
  • 5.2 结构化分层
  • 快速用法(最常用)
  • 进阶用法(备用)
  • 配置选项
  • 注意事项
  • 参考资料
  • 5.3 渐进式披露(Progressive Disclosure)
  • 基本用法
  • 进阶用法
  • 5.4 长度控制
  • 六、Scripts 规范
  • 6.1 什么时候用 Scripts
  • 6.2 Scripts 的优势
  • 6.3 脚本测试要求
  • 七、References 规范
  • 7.1 什么时候用 References
  • 7.2 文件命名
  • 7.3 大文件处理
  • 目录
  • create
  • 八、Assets 规范
  • 8.1 什么时候用 Assets
  • 8.2 Assets 不会被加载进上下文
  • 8.3 示例场景
  • 九、Skill 命名规范
  • 9.1 命名规则
  • 9.2 命名风格
  • 十、完整示例:从零构建一个 PDF 旋转 Skill
  • 10.1 需求分析
  • 10.2 创建目录结构
  • 10.3 编写 SKILL.md
  • 快速用法
  • 参数说明
  • 注意事项
  • 进阶用法
  • 10.4 编写旋转脚本
  • 10.5 打包发布
  • 十一、常见错误清单
  • ❌ 错误1:Description 写得像说明书
  • ❌ 错误2:把所有内容塞进 SKILL.md
  • ❌ 错误3:命名不规范
  • ❌ 错误4:创建不需要的文件
  • ❌ 错误5:Scripts 没有测试
  • 十二、自检清单(发布前必查)
  • 总结

如何编写标准规范的 Skills:从入门到精通的完整指南

引言

2026年,Skills 已经成为 AI Agent 扩展能力的主流方式。

但很多人做的 Skills 问题一堆:触发词写得模糊、SKILL.md 过于冗长、资源文件乱放、描述和实际功能对不上——导致 AI 要么选错 Skill,要么根本不知道什么时候该调用它。

本文是基于 OpenClaw / Codex 官方规范写的完整指南,手把手教你从零写出一个标准、规范、可分发的 Skill。


一、Skill 是什么?先搞清楚基本概念

Skill 是一个自包含的能力扩展包,让 AI 在特定领域具备专业知识和操作流程。

一个 Skill 由以下部分组成:

skill-name/
├── SKILL.md          # 核心文件(必须)
├── scripts/          # 可执行脚本(可选)
├── references/       # 参考文档(可选)
└── assets/          # 资源文件(可选)

各部分职责

文件/目录职责何时加载
SKILL.md触发条件和核心指令始终加载(触发前)
scripts/确定性逻辑代码执行时调用
references/详细参考资料按需加载
assets/模板、图片等输出资源生成内容时使用

二、SKILL.md 的标准结构

SKILL.md 是 Skill 的核心,每个 SKILL.md 由两部分组成:

2.1 YAML Frontmatter(必须)

Frontmatter 里的 name 和 description 是唯一被 AI 在触发前读取的字段,决定了这个 Skill 什么时候被激活。

标准格式:

---
name: my-custom-skill
description: 描述这个Skill做什么,以及什么时候应该触发它
---

⚠️ 注意事项:

  • name 只允许小写字母、数字、连字符
  • description 要写清楚触发场景,而不是功能描述
  • description 应该像"触发词清单",不是"功能说明书"

好例子:

---
name: pdf-editor
description: PDF文档编辑和处理。当用户说"帮我旋转这个PDF"、"合并多个PDF"、"从PDF里提取文字"、"给PDF加水印"、"压缩PDF"时触发。
---

坏例子:

---
name: pdf-editor
description: 这个Skill可以编辑PDF文件,支持多种操作。
---

(坏在哪里:没有触发场景,AI 不知道什么时候该用它)

2.2 Body(Markdown正文)

正文在 Skill 被触发后才加载,包含使用说明和操作指南。

核心原则:保持精简。

  • SKILL.md 正文目标:< 500 行 / < 5000 tokens
  • 详细资料放 references/,正文只放核心用法
  • 用祈使句(命令式),不要啰嗦

三、目录结构规范

3.1 标准布局

my-skill/
├── SKILL.md           # ✅ 必须
├── scripts/          # 可选
│   ├── do_something.py
│   └── helper.sh
├── references/       # 可选
│   ├── api_docs.md
│   └── schemas.md
└── assets/          # 可选
    ├── template.html
    └── logo.png

3.2 哪些文件不该有

❌ 不要创建这些文件:

  • README.md
  • INSTALLATION_GUIDE.md
  • QUICK_REFERENCE.md
  • CHANGELOG.md

Skill 目录下只放 AI 执行任务需要的文件,不需要给人类看的说明文档。


四、触发词(Description)写作规范

这是最多人犯错的地方。

4.1 Description 的核心作用

AI 在收到用户消息时,会对比所有 Skill 的 description,找出最匹配的那个。Description 就是你的 Skill 的"广告词"和"匹配钥匙"。

4.2 写作原则

原则1:列出具体触发场景

description: 当用户说"帮我XXX"、"做一下YYY"、"生成ZZZ"时触发。

原则2:包含变体表达

用户说"旋转PDF"和"把PDF转个方向"和"PDFOrientation调转",意思一样,你的 description 要能覆盖这些变体。

原则3:区分相似 Skill

如果你的 Skill 叫 pdf-rotate,description 要和 pdf-compress 明确区分开。

原则4:说明不适用的场景

有时候说清楚"什么时候不要用"比"什么时候用"更重要。

description: PDF旋转和方向调整。当用户明确说"旋转"、"转方向"、"orientation"时触发。
# 主动排除:PDF内容识别(那是OCR Skill的事)

4.3 示例对比

质量Description
⭐⭐⭐"当用户说'帮我旋转PDF'、'把PDF转90度'、'orientation'、'rotate'时触发。"
⭐⭐"PDF编辑工具,可以旋转和调整PDF方向。"
⭐"这是一个PDF编辑Skill,功能很强大。"

五、Body 正文写作规范

5.1 使用祈使句

# ✅ 正确
Extract text from PDF using pdfplumber.
Run `python scripts/extract_text.py --input <file>`.

# ❌ 错误
This skill can be used to extract text. It uses pdfplumber library.
You might want to try extracting the text when working with PDFs.

5.2 结构化分层

# Skill Name

## 快速用法(最常用)
[最简单的调用方式]

## 进阶用法(备用)
[复杂场景]

## 配置选项
[可调整的参数]

## 注意事项
[容易出错的地方]

## 参考资料
- 详细内容:See [references/api.md](references/api.md)
- 示例:See [references/examples.md](references/examples.md)

5.3 渐进式披露(Progressive Disclosure)

不要把所有信息都塞进 SKILL.md 正文。遵循原则:

正文只写:每次执行都需要的基础信息 references/ 放:详细文档、API 列表、示例代码

# PDF Processing

## 基本用法
使用 pdfplumber 提取文本:[示例]

## 进阶用法
- 表单填写:See [references/forms.md](references/forms.md)
- API 参考:See [references/api.md](references/api.md)
- 更多示例:See [references/examples.md](references/examples.md)

5.4 长度控制

内容建议行数原因
SKILL.md 正文< 500 行超过会让上下文膨胀
references/ 单文件< 100 行文件太长时加目录
总 token 预算< 5000 tokens留空间给对话和其他 Skills

六、Scripts 规范

6.1 什么时候用 Scripts

  • 确定性操作:每次执行结果必须一样的操作(如文件处理)
  • 重复性代码:同一个逻辑被反复重写
  • token 优化:把复杂逻辑封装进脚本,不占上下文

6.2 Scripts 的优势

"脚本是'执行而不读入'的——零 token 成本。"

把命名转换、长度约束、格式校验这些细碎但脆弱的操作封装进脚本,不占用 AI 的上下文窗口。

6.3 脚本测试要求

⚠️ 重要:所有 scripts 必须实际运行验证,不能只写代码不测试。

至少测试以下场景:

  • 正常输入
  • 边界输入(空文件、超大文件、特殊字符)
  • 错误处理

七、References 规范

7.1 什么时候用 References

  • API 文档、数据库 schema(数据量大的参考资料)
  • 公司内部流程文档
  • 详细的工作流指南

7.2 文件命名

references/
├── api.md          # API 文档
├── schemas.md      # 数据结构
├── examples.md      # 示例
└── policies.md      # 政策/规范

7.3 大文件处理

如果单个文件超过 100 行,在文件顶部加一个目录:

# API Reference

## 目录
- [create](#create) - 创建资源
- [update](#update) - 更新资源
- [delete](#delete) - 删除资源

## create
...

八、Assets 规范

8.1 什么时候用 Assets

  • 模板文件(HTML、PPT、文档模板)
  • 品牌资源(logo、图片)
  • 需要复制到输出中的 boilerplate 代码

8.2 Assets 不会被加载进上下文

Assets 是直接复制到输出的,不是给 AI 读的。如果 AI 需要参考某些内容,应该放 references/ 而不是 assets/。

8.3 示例场景

brand-skill/
├── SKILL.md
└── assets/
    ├── logo.png           # 直接复用
    ├── email-template.html # 直接复用
    └── colors.css         # 直接复用

九、Skill 命名规范

9.1 命名规则

规则正确错误
字符小写字母、数字、连字符大写、空格、下划线
长度64 字符以内超过 64
格式词根用连字符连接驼峰或下划线

9.2 命名风格

  • 优先用动词开头:code-review、image-resize、data-export
  • 明确工具名:gh-address-comments、linear-address-issue
  • 避免通用名:skill、tool、helper

好名字:

  • pdf-rotate
  • notion-page-creator
  • feishu-calendar-event

坏名字:

  • my-skill
  • tool1
  • pdftool_new

十、完整示例:从零构建一个 PDF 旋转 Skill

10.1 需求分析

用户会说:

  • "帮我旋转这个PDF"
  • "把PDF转90度"
  • "PDF orientation 调转"

10.2 创建目录结构

mkdir -p pdf-rotate/{scripts,references,assets}
touch pdf-rotate/SKILL.md

10.3 编写 SKILL.md

---
name: pdf-rotate
description: PDF文档旋转和方向调整。当用户说"旋转PDF"、"PDF转方向"、"rotate PDF"、"PDF orientation"、"把PDF转90度"时触发。
---

# PDF Rotate

## 快速用法

使用 `scripts/rotate_pdf.py`:

```bash
python scripts/rotate_pdf.py --input <file.pdf> --angle 90 --output <output.pdf>

参数说明

参数说明默认值
--input输入PDF文件路径必填
--output输出PDF文件路径<input>_rotated.pdf
--angle旋转角度(90/180/270)90

注意事项

  • 旋转是基于页面级别的,不是整体旋转
  • 加密PDF需要先解密
  • 批量旋转:See references/batch.md

进阶用法

  • 批量旋转:See references/batch.md
  • 方向检测:See references/auto-detect.md

### 10.4 编写旋转脚本

```python
#!/usr/bin/env python3
"""PDF旋转脚本"""
import argparse
from pypdf import PdfReader, PdfWriter

def rotate_pdf(input_path, output_path, angle):
    reader = PdfReader(input_path)
    writer = PdfWriter()
    
    for page in reader.pages:
        page.rotate(90)  # 简单处理
        writer.add_page(page)
    
    with open(output_path, 'wb') as f:
        writer.write(f)

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--input', required=True)
    parser.add_argument('--output')
    parser.add_argument('--angle', type=int, default=90)
    args = parser.parse_args()
    
    output = args.output or args.input.replace('.pdf', '_rotated.pdf')
    rotate_pdf(args.input, output, args.angle)

10.5 打包发布

python scripts/package_skill.py pdf-rotate
# 生成 pdf-rotate.skill 文件

十一、常见错误清单

❌ 错误1:Description 写得像说明书

# 错误
description: 这个Skill用于处理PDF文件,可以旋转、合并、分割等。

# 正确
description: PDF旋转。当用户说"旋转PDF"、"PDF转方向"、"rotate PDF"时触发。

❌ 错误2:把所有内容塞进 SKILL.md

# 错误:正文写了 2000 行
# 包括所有API、所有示例、所有变体

# 正确:正文精简,详细内容放 references/

❌ 错误3:命名不规范

# 错误
name: My Custom Skill  # 包含空格和大写
name: my_custom_skill  # 下划线而非连字符

# 正确
name: my-custom-skill

❌ 错误4:创建不需要的文件

# 错误:创建了这些
my-skill/
├── SKILL.md
├── README.md        # ❌ 不需要
├── CHANGELOG.md     # ❌ 不需要
├── INSTALL.md       # ❌ 不需要
└── ...

# 正确:只有必要的文件
my-skill/
├── SKILL.md
├── scripts/
└── references/

❌ 错误5:Scripts 没有测试

scripts/ 里的代码必须实际运行验证,否则可能带着 bug 交付。


十二、自检清单(发布前必查)

  • name 字段:全小写、连字符、64字符以内
  • description 字段:列出具体触发词,不是功能描述
  • SKILL.md 正文:< 500 行
  • 详细文档:已移到 references/
  • scripts/ 中的代码:已实际运行验证
  • 没有创建多余文件(README.md、CHANGELOG.md 等)
  • 目录结构符合规范
  • 打包测试:python scripts/package_skill.py 通过

总结

写好一个 Skill 的核心就三句话:

1. Description 是钥匙 — 写得具体、写得场景化,AI 才能正确触发

2. 正文要精简 — 只放核心用法,详细内容放 references/

3. Scripts 是执行层 — 把确定性逻辑封装进去,不占上下文

记住这个设计哲学:

"Codex 已经足够聪明了。只需要告诉它'什么时候用'和'怎么用',不需要教它'为什么'。"

参考工具:

  • OpenClaw skill-creator:帮你引导创建流程
  • scripts/init_skill.py:自动生成标准目录结构
  • scripts/package_skill.py:打包并验证

参考资料:OpenClaw skill-creator SKILL.md、DigitalOcean Agent Skills 教程、AgentSkills.io Best Practices、GitHub datawhale/hello-agents

标签:#Skills #教程 #SKILL.md #OpenClaw #AIAgent #技能开发

相关文章

  • 生成式 UI 深度解析:AI 驱动的界面革命4月28日
  • GitNexus:为 AI 智能体打造的代码库知识图谱引擎4月28日
  • 一场速度的幻觉?——深度解析 Vibe Coding 的真正价值与隐藏代价4月24日

系列:AI Skill 使用指南

  • 1. 深度解析 | 2026年AI Skills席卷全球:一文读懂AI技能系统的架构、生态与未来走向
  • 2. OpenCode + Skills 快速上手指南:让 AI 编程助手真正替你做事
  • 3. OpenClaw Skills 完全指南:让你的个人 AI 助手无限扩展
  • 4. 如何编写标准规范的 Skills:从入门到精通的完整指南
  • 5. AI Skills 入门完全指南:让 AI 真正成为你的得力助手
← OpenClaw Skills 完全指南:让你的个人 AI 助手无限扩展AI Skills 入门完全指南:让 AI 真正成为你的得力助手 →

评论

加载评论中…

发表评论

返回首页