AI Skill 撰写完全指南
系统介绍 AI Skill 的概念、结构与撰写方法,涵盖 Skill 与 Prompt Engineering 的对比、SKILL.md 规范、最佳实践及典型应用场景的完整实战指南
一、什么是 Skill?
1.1 Skill 的定义与定位
Skill(技能)是一种模块化、自包含的扩展包,用于为 AI Agent 提供专业化的知识、工作流程和工具支持。它相当于 AI 的”专业培训手册”——将通用 AI 转化为具备特定领域能力的专业助手。
1.2 Skill vs Prompt Engineering 的区别
| 维度 | Prompt Engineering | Skill |
|---|---|---|
| 持久性 | 每次对话需重新输入 | 一次安装,永久使用 |
| 复用性 | 低,难以复制 | 高,标准化打包 |
| 复杂度 | 适合简单任务 | 适合复杂工作流 |
| 维护 | 分散在对话历史中 | 集中管理 |
| 工具集成 | 弱 | 强(可包含脚本) |
1.3 Skill 在 AI 工作流中的角色
二、Skill 的核心价值
2.1 模块化与可复用性
Skill 采用标准化的目录结构,支持:
- 一次开发,多次使用
- 跨项目共享
- 版本化管理
2.2 上下文管理优化
通过渐进式披露(Progressive Disclosure)机制,Skill 避免上下文膨胀:
- 渐进式披露:像阅读手册一样,先看目录,遇到问题再深入阅读具体章节,而不是一次性加载整本书
- 上下文膨胀:上下文越长,AI 处理效率越低,重要信息容易被稀释
2.3 专业化能力扩展
Skill 使 AI 能够:
| 能力类型 | 说明 | 示例 |
|---|---|---|
| 领域专家 | 垂直领域知识 | 金融、医疗、法律 |
| 工具大师 | 专业工具操作 | Git、Docker、K8s |
| 流程自动化 | 多步骤复杂工作流 | CI/CD、代码审查 |
| 格式规范 | 输出格式标准化 | 文档、报表、代码风格 |
三、Skill 的技术架构
3.1 必需部分
SKILL.md
每个 Skill 必须包含 SKILL.md 文件,包含两部分:
YAML Frontmatter(元数据)
---
name: skill-name
description: 技能描述(触发条件和使用场景)
---
示例:
---
name: openclaw-git-manager
description: |
OpenClaw 工作空间 Git 管理工具。
用于:(1) 初始化 Git 仓库 (2) 提交更改 (3) 创建分支
(4) 推送代码 (5) 查看状态
---
description 编写要点:这是 Skill 触发的关键依据,必须清晰说明:
- 技能功能
- 触发场景(用户可能怎么说)
- 适用情境
Markdown 正文
正文是 Skill 的核心指导内容,建议:
- 简洁明了,< 500 行
- 包含使用示例
- 链接到 references/ 文件获取详细文档
3.2 可选部分:
Bundled Resources
scripts/ - 可执行脚本
- 用途:需要确定性执行的代码
- 优势:无需加载到上下文,可直接执行
- 示例:
scripts/ ├── rotate_pdf.py ├── deploy.sh └── validate.sh
references/ - 参考文档
- 用途:需要时加载到上下文的文档
- 示例:
references/ ├── api_schema.md ├── company_policy.md └── workflow_guide.md
assets/ - 静态资源
- 用途:最终输出中使用的文件
- 示例:
assets/ ├── logo.png ├── template.html └── frontend-boilerplate/
非标准目录
除官方规定的 scripts/、references/、assets/ 外,Skill 开发者可根据项目需要创建额外目录(如 docs/、templates/、test/)。这些目录不会被自动打包,但可用于项目内部的文档管理、模板存储或测试验证。
四、Skill 命名规范
4.1 命名规则
| 规则 | 说明 | 示例 |
|---|---|---|
| 字符 | 小写字母、数字、连字符 | git-manager |
| 长度 | 建议 < 64 字符 | openclaw-git-manager |
| 格式 | 字母开头,禁止特殊字符 | ✅ abc / ❌ -abc |
4.2 命名空间使用
4.3 最佳实践
- ✅ 使用动词短语:
git-manager,doc-generator - ✅ 简洁明了:
pdf-tool优于comprehensive-pdf-processing-utility - ✅ 统一前缀:
openclaw-*系列
五、Skill 创建流程
5.1 流程概览
5.2 详细步骤
第一步:理解需求(Concrete Examples)
收集具体使用场景:
## 用户可能这样问:
- "帮我初始化一个 Git 仓库"
- "创建新分支并推送"
- "查看当前状态"
第二步:规划资源内容
| 资源类型 | 判断标准 | 示例 |
|---|---|---|
| scripts/ | 代码需确定性执行 | 脚本、CLI 工具 |
| references/ | 需要查阅的文档 | API 文档、模板 |
| assets/ | 输出中直接使用的文件 | 图片、模板 |
第三步:初始化模板
scripts/init_skill.py <skill-name> --path <output-dir>
脚本核心逻辑(伪代码):
# init_skill.py 核心逻辑
def init_skill(name, path, resources):
create_directory(f"{path}/{name}")
write_file(f"{path}/{name}/SKILL.md", generate_template(name))
for res in resources:
create_directory(f"{path}/{name}/{res}/")
第四步:编辑实现
- 编写
SKILL.md - 实现
scripts/脚本 - 准备
references/文档 - 整理
assets/资源
第五步:打包发布
scripts/package_skill.py <path/to/skill-folder>
脚本核心逻辑(伪代码):
# package_skill.py 核心逻辑
def package_skill(skill_path):
validate_yaml(skill_path) # 验证 YAML 格式
validate_naming(skill_path) # 验证命名规范
check_no_symlinks(skill_path) # 安全检查:禁止 symlink
zip_files(skill_path, f"{skill_path}.skill") # 打包成 .skill
生成 .skill 文件(本质是 zip 包)
第六步:迭代优化
根据使用反馈持续改进
六、核心设计原则
6.1 渐进式披露(Progressive Disclosure)
通俗理解:像查字典一样——先看索引定位章节,需要时再深入阅读具体内容,而不是一次性把整本书塞进脑子。
实践要点:
- SKILL.md 建议 < 500 行
- 长内容拆分到 reference 文件
- 链接形式引导按需加载
6.2 上下文精简原则
通俗理解:上下文就像工作记忆,塞得越多越容易”失忆”——AI 也会因为信息过载而遗漏重点。
核心原则:
默认假设:AI 已经很聪明了
只添加 AI 本身不具备的上下文。
6.3 自由度把控
| 自由度级别 | 适用场景 | 实现方式 |
|---|---|---|
| 高 | 多种方案均可、依赖上下文判断 | 文本指令 |
| 中 | 有最佳实践、允许一定变化 | 伪代码/参数化脚本 |
| 低 | 操作脆弱、必须精确执行 | 固定脚本+极少参数 |
七、实战案例
7.1 openclaw-git-manager 案例
项目结构:
openclaw-git-manager/
├── SKILL.md # 技能定义
├── config.json # 配置文件
├── scripts/ # 可执行脚本
│ ├── git_init.sh
│ ├── git_commit.sh
│ └── git_push.sh
├── docs/ # 参考文档(非标准目录)
├── templates/ # 模板文件(非标准目录)
├── demo.sh # 演示脚本
└── test.sh # 测试脚本
非标准目录说明:除官方规定的
scripts/、references/、assets/外,Skill 开发者可根据项目需要创建额外目录(如docs/、templates/、test/)。这些目录不会被自动打包,但可用于项目内部的文档管理、模板存储或测试验证。
核心功能:
- Git 仓库初始化
- 提交更改管理
- 分支创建与切换
- 远程推送
- 状态查看
开发亮点:
- 完整错误处理
- 内存系统集成
- 心跳系统支持
- 安全性验证
7.2 skill-creator 模板
使用方式:
# 初始化新 Skill
scripts/init_skill.py my-skill --path ./skills
# 指定资源类型
scripts/init_skill.py my-skill --path ./skills --resources scripts,references
# 打包发布
scripts/package_skill.py ./skills/my-skill
八、最佳实践与避坑指南
8.1 必须避免的错误
| ❌ 错误做法 | ✅ 正确做法 |
|---|---|
| SKILL.md 超过 1000 行 | 拆分到 references/ |
| 包含 README.md | 只保留 SKILL.md |
| 信息重复存储 | 单一数据源 |
| 模糊的 description | 详细的触发条件说明 |
| 缺少示例 | 提供 Concrete Examples |
8.2 质量检查清单
## SKILL.md 检查
- [ ] name 符合命名规范(小写+连字符)
- [ ] description 包含触发条件
- [ ] 正文 < 500 行
- [ ] 链接到所有 reference 文件
- [ ] 包含使用示例
## 资源文件检查
- [ ] scripts/ 目录结构清晰
- [ ] references/ 文档内容准确
- [ ] assets/ 文件可用
## 整体检查
- [ ] 可正常打包
- [ ] 无 symlink(安全限制)
- [ ] 目录名与 skill 名一致
8.3 进阶技巧
模式一:领域细分
bigquery-skill/
├── SKILL.md
└── references/
├── finance.md
├── sales.md
├── product.md
└── marketing.md
模式二:框架变体
cloud-deploy/
├── SKILL.md
└── references/
├── aws.md
├── gcp.md
└── azure.md
模式三:条件细节
## 基础用法
使用 docx-js 创建文档
## 进阶功能
- 追踪修订:见 [REDLINING.md](REDLINING.md)
- OOXML 细节:见 [OOXML.md](OOXML.md)
总结
Skill 是 AI 时代软件工程的重要范式,它:
- 标准化 - 统一的架构和规范
- 模块化 - 解耦与复用
- 专业化 - 垂直领域能力扩展
- 可扩展 - 持续迭代优化
掌握 Skill 开发,让你的 AI 助手真正成为专业领域的行家里手。
下一步:从简单 Skill 开始实践,尝试运行
init_skill.py初始化你的第一个 Skill
文档版本:v1.0
最后更新:2026年3月
作者:Wisdom