OpenClaw Agent Skills 开发教程
从零开始编写你的第一个 AI Skill —— 让 OpenClaw 学会新技能
🎯 什么是 Agent Skills?
世界上有一种技能,叫 Agent Skills。它就像是给AI Agent写的一本操作手册 —— 告诉它在什么场景下该做什么、怎么做。
"凌晨2点,我终于写好了一个Skill。看着OpenClaw按照我的指示完成任务,那种成就感,就像看着自己的孩子第一次学会走路。只不过这孩子走得比我还快。"
📚 核心概念
- Skill 目录 - 每个 Skill 是一个文件夹,包含 SKILL.md 和可选的代码文件
- SKILL.md - 技能的说明书,包含元数据和操作指令
- 工具绑定 - Skill 可以声明需要的工具权限
- 条件加载 - 根据环境、配置、二进制存在性动态加载
📁 Skill 目录结构
my-skill/
├── SKILL.md # 技能说明书(必需)
├── README.md # 详细文档(可选)
├── index.js # 实现代码(可选)
└── templates/ # 模板文件(可选)
└── example.txt
📝 SKILL.md 完整规范
基础模板
---
name: my-awesome-skill
description: 这个Skill能帮你完成xxx任务
tools:
- web_search
- web_fetch
- write
lifecycle:
startup: |
# 启动时执行的指令
加载必要的上下文...
shutdown: |
# 关闭时执行的指令
保存状态...
---
# 操作指令
## 任务类型A
当用户需要xxx时:
1. 首先做yyy
2. 然后做zzz
3. 最后返回结果
## 任务类型B
当用户需要aaa时:
1. 检查bbb条件
2. 执行ccc操作
3. 验证ddd结果
YAML Frontmatter 字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | Skill 唯一标识 |
| description | string | Skill 功能描述 |
| tools | array | 需要的工具列表 |
| lifecycle.startup | string | 启动指令 |
| lifecycle.shutdown | string | 关闭指令 |
| filters.env | array | 环境变量条件 |
| filters.binary | array | 必需的二进制文件 |
💻 实战示例
示例 1: SEO 分析 Skill
---
name: seo-analyzer
description: 分析网页SEO指标,生成优化建议
tools:
- web_fetch
- write
---
# SEO 分析器
## 网页分析
当用户要求分析网页SEO时:
1. 使用 web_fetch 获取页面内容
2. 检查以下指标:
- title 标签是否存在且长度合适(50-60字符)
- meta description 是否存在(150-160字符)
- h1 标签是否唯一
- 图片是否有 alt 属性
- 是否有结构化数据
3. 生成分析报告
## 输出格式
```markdown
## SEO 分析报告
**URL**: [网址]
### 标题分析
- 当前标题: [xxx]
- 长度: [xx] 字符
- 建议: [优化建议]
### Meta 描述
...
```
示例 2: Git 工作流 Skill
---
name: git-workflow
description: 规范的Git工作流程管理
tools:
- exec
filters:
binary:
- git
---
# Git 工作流
## 创建功能分支
当用户说"创建功能分支 xxx"时:
1. 执行 `git checkout -b feature/xxx`
2. 确认分支创建成功
3. 提示用户开始开发
## 提交更改
当用户说"提交更改"时:
1. 执行 `git status` 查看更改
2. 询问用户提交信息
3. 执行 `git add . && git commit -m "[message]"`
## 创建 PR
当用户说"创建 PR"时:
1. 执行 `git push origin [current-branch]`
2. 使用 gh CLI 创建 PR
3. 返回 PR 链接
示例 3: 内容创作 Skill
---
name: content-creator
description: 妙趣风格的内容创作助手
tools:
- web_search
- write
---
# 妙趣内容创作
## 文章创作
当用户要求创作文章时:
1. 确定主题和风格(妙趣风格/王家卫风格)
2. 如果是热点类,先使用 web_search 搜索最新信息
3. 按照以下结构创作:
- 开场:时间标记 + 脑洞转折
- 正文:故事性叙述 + 技术干货
- 结尾:哲理升华 + 行动号召
4. 检查是否去除AI痕迹:
- 避免过度使用"值得注意的是"
- 避免三段式结构
- 使用口语化表达
- 适当加入吐槽
🚀 安装和使用 Skill
方法 1: 本地 Skill
# 创建 Skill 目录
mkdir -p ~/.openclaw/skills/my-skill
# 创建 SKILL.md
cat > ~/.openclaw/skills/my-skill/SKILL.md << 'EOF'
---
name: my-skill
description: 我的自定义技能
tools:
- write
---
# 技能指令
当用户说"hello"时,回复"World!"
EOF
# 重启 OpenClaw 加载 Skill
openclaw restart
方法 2: ClawHub 安装
# 从 ClawHub 安装社区 Skill
clawhub install user/skill-name
# 列出已安装 Skill
clawhub list
# 更新 Skill
clawhub update skill-name
方法 3: 项目级 Skill
# 在项目根目录创建 .openclaw/skills/
mkdir -p my-project/.openclaw/skills/project-skill
# OpenClaw 会自动加载项目级 Skill
cd my-project
openclaw
🎯 最佳实践
✅ 指令要具体
不要说"处理文件",要说"读取 /path/to/file.txt 的内容,提取其中的邮箱地址,保存到 emails.txt"。AI 需要明确的指令。
✅ 使用条件判断
用 "当...时" 来定义触发条件。条件越清晰,Skill 越智能。
✅ 声明工具权限
在 tools 数组中声明需要的工具,这样既安全又高效。不要一股脑要所有权限。
⚠️ 避坑指南
- 指令冲突 - 多个 Skill 的触发条件不要重叠
- 循环引用 - 避免 Skill A 调用 Skill B,B 又调用 A
- 过度授权 - 只申请必要的工具权限
- 缺乏示例 - 提供足够的示例帮助 AI 理解
🚀 进阶技巧
动态工具过滤
---
name: conditional-skill
description: 根据环境动态加载
tools:
- exec
- write
filters:
env:
- OPENCLAW_ENV: production
binary:
- node
- npm
---
Skill 组合
一个复杂的任务可以拆分为多个 Skill,然后通过父 Skill 协调:
---
name: complex-workflow
description: 复杂工作流协调器
tools:
- all
---
## 发布流程
当用户说"发布新版本"时:
1. 调用 git-workflow skill 创建发布分支
2. 调用 test-runner skill 执行测试
3. 调用 deploy-skill 部署到生产环境
4. 生成发布报告
🐛 调试技巧
# 查看加载的 Skills
openclaw skills list
# 查看 Skill 详情
openclaw skills info skill-name
# 调试模式运行
openclaw --debug
# 测试特定 Skill
echo "测试指令" | openclaw --skill my-skill
📚 相关资源
🎬 结语
Agent Skills 是 OpenClaw 的灵魂。写一个好的 Skill,就像培养一个得力的助手 —— 你需要告诉它什么时候做什么、怎么做、做到什么程度。
"世界上有一种艺术,叫指令的艺术。好的 Skill 不是写出来的,是调教出来的。"
现在,去写你的第一个 Skill 吧。记住:从简单开始,逐步迭代。最好的 Skill 永远是下一个。