OpenClaw实战教程系列第13篇 - 发布你自己的Skill
把你的自动化方案打包成 Skill,分享给全世界。
什么是 Skill?
Skill = 可复用的自动化能力包
你已经用 OpenClaw 做了很多自动化:
-
查天气 → 调用 API → 输出结果
-
读邮件 → 分析内容 → 发送通知
-
采集数据 → 整理格式 → 保存文件
为什么不把这些打包起来,下次直接用?甚至分享给别人用?
这就是 Skill 的价值。
Skill 的好处:
✅ 一次编写,到处使用 - 不用每次重复配置
✅ 分享给他人 - 帮助社区,也获得反馈
✅ 版本管理 - 像管理代码一样管理自动化
✅ 组合使用 - 多个 Skill 协同工作
Skill 文件结构
一个标准的 Skill 目录:
my-skill/
├── SKILL.md # ⭐ 核心文件:AI 根据这个学会怎么用
├── scripts/ # 脚本文件(可选)
│ └── main.sh
├── package.json # 元数据(可选)
└── README.md # 人类阅读的说明

核心原则:
-
SKILL.md** 是灵魂** - AI 读这个文件,决定什么时候用、怎么用 -
单一职责 - 一个 Skill 只做一件事
-
自包含 - 所有依赖在
SKILL.md里声明
创建 Skill:实战演示
案例:创建一个“天气查询” Skill
功能:查询指定城市的天气,返回温度和天气状况
步骤 1:创建目录
你可以选择两个位置之一创建 Skill:
选项 A:工作区 Skills(推荐,适合项目特定 Skill)
mkdir -p ~/.openclaw/workspace/skills/weather
cd ~/.openclaw/workspace/skills/weather
选项 B:本地 Skills(适合跨项目共享的 Skill)
mkdir -p ~/.openclaw/skills/weather
cd ~/.openclaw/skills/weather
💡 路径说明:
-
~/.openclaw/workspace/skills/- 工作区 Skills(最高优先级) -
~/.openclaw/skills/- 本地 Skills(全局共享)
这里使用选项 A(工作区 Skills)作为示例。
步骤 2:编写 SKILL.md
创建 SKILL.md 文件:
---
name: weather
description: 查询指定城市的当前天气,返回温度、天气状况和穿衣建议
version: 1.0.0
---
# Weather Skill
## 用途
当用户询问天气时,使用此 Skill 查询指定城市的实时天气。
## 触发场景
- "今天北京天气怎么样?"
- "查询上海的天气"
- "明天需要带伞吗?"
- "纽约现在多少度?"
## 使用方法
### 1. 获取城市名称
从用户输入中提取城市名(如"北京"、"上海"、"New York")。
### 2. 查询天气
使用 wttr.in API 查询天气:
$$bash
curl -s "wttr.in/{城市名}?format=%C+%t+%p"
$$
### 3. 解析结果
返回格式示例:
- `Sunny +25°C 0.0mm`
- `Rain +18°C 5.2mm`
- `Cloudy +20°C 0.0mm`
### 4. 返回给用户
用自然语言描述天气:
- 温度
- 天气状况
- 是否需要带伞
- 穿衣建议
## 示例对话
**用户**:今天北京天气怎么样?
**AI**:查询中……
🌤️ 北京今天天气:
- 天气:晴朗
- 温度:25°C
- 降水:无
- 建议:适合外出,注意防晒
---
**用户**:上海需要带伞吗?
**AI**:查询中……
☔ 上海现在下雨,记得带伞!
- 温度:18°C
- 降水:5.2mm
- 建议:带伞,穿防水的鞋子

步骤 3:测试 Skill
重启 Gateway 让 Skill 生效:
openclaw gateway restart
对话测试:
你:今天北京天气怎么样?
AI:正在查询北京天气……
(调用 weather skill)
🌤️ 北京今天天气:
- 天气:晴朗
- 温度:25°C
- 建议:适合外出,注意防晒
SKILL.md 编写规范
必须包含的章节
1. Frontmatter(YAML 格式)
---
name: skill-name # Skill 标识符
description: 一句话描述 # AI 用这个匹配场景
version: 1.0.0 # 版本号
author: your-name # 作者(可选)
---
2. 核心章节
-
用途 - 这个 Skill 是做什么的
-
触发场景 - 什么时候该用这个 Skill(给 AI 的判断依据)
-
使用方法 - 详细的操作步骤,AI 会按这个执行
-
示例对话 - 展示完整的使用流程
好的 SKILL.md 示例
GitHub PR Skill
---
name: github-pr
description: 查看 GitHub 仓库的 Pull Request 状态,列出需要 review 的 PR
version: 1.0.0
---
# GitHub PR Skill
## 用途
查询 GitHub 仓库的 PR 状态,帮助用户管理和 review Pull Request。
## 触发场景
- "看看我的 open PR"
- "有哪些 PR 需要 review?"
- "检查 GitHub PR 状态"
- "我的 PR 合并了吗?"
## 使用方法
### 1. 确定仓库
- 如果用户指定了仓库,使用指定仓库
- 如果没有指定,使用 `gh repo view` 获取当前目录的默认仓库
### 2. 列出 PR
$$bash
gh pr list --json number,title,author,state,url
$$
### 3. 分类展示
按状态分类:
- Open:待 review
- Draft:草稿
- Merged:已合并
- Closed:已关闭
### 4. 详细信息(可选)
如果用户问某个具体 PR:
$$bash
gh pr view {number} --json number,title,body,author,reviewers,state
$$
## 示例对话
**用户**:看看我的 PR
**AI**:正在查询当前仓库的 PR……
✓ 找到 3 个 Open PR:
1. #45 - 添加用户认证功能 @alice (需要 review)
2. #46 - 修复登录超时问题 @bob (已批准)
3. #47 - 更新文档 @carol (草稿)
---
**用户**:#45 的详情
**AI**:查询中……
**PR #45 - 添加用户认证功能**
- 作者:@alice
- 状态:等待 review
- 描述:实现了 JWT 认证……
- 文件变更:12 个文件
使用脚本(可选)
如果 Skill 需要复杂逻辑,可以写脚本:
my-skill/
├── SKILL.md
├── scripts/
│ ├── main.sh # 主脚本
│ └── utils.py # 辅助脚本
└── package.json
在 SKILL.md 中调用脚本:
## 使用方法
### 执行脚本
$$bash
bash ~/.openclaw/workspace/skills/my-skill/scripts/main.sh {参数}
$$
### 解析输出
脚本返回 JSON 格式:
$$json
{
"status": "success",
"data": {...}
}
$$
本地测试
测试清单
1. Skill 被识别
你:列出所有可用的 Skills
AI:当前可用的 Skills:
- weather: 查询天气
- github-pr: 查看 PR
- my-skill: 你的 Skill 描述
2. 触发场景匹配
你:符合触发场景的话
AI:自动调用对应的 Skill
3. 执行结果正确
-
输出符合预期
-
错误处理完善
调试技巧
Skill 没被识别?
-
检查目录位置:
~/.openclaw/workspace/skills/或~/.openclaw/skills/ -
检查
SKILL.md语法(YAML frontmatter 是否正确) -
重启 Gateway 或说“刷新 skills”
执行报错?
-
检查脚本权限:
chmod +x scripts/*.sh -
检查依赖是否已安装
-
在终端手动执行脚本,看错误信息
发布到 ClawHub
什么是 ClawHub?
ClawHub 是 OpenClaw 的官方 Skills 市场
-
功能:发现、安装、发布 Skills
-
特点:所有 Skills 免费、开源

发布步骤
1. 安装 ClawHub CLI
npm install -g clawhub
2. 登录
clawhub login
# 浏览器打开授权页面
3. 发布
cd ~/my-skill
clawhub publish
发布流程:
📦 打包 Skill……
✓ 验证通过
✓ 上传到 ClawHub
⏳ 等待审核……
✅ 发布成功!
Skill: weather
版本:1.0.0
链接:https://clawhub.com/skills/weather
4. 更新版本
修改 SKILL.md 中的 version,然后:
clawhub publish --version 1.1.0
好 Skill 的标准
✅ 做得好
-
单一职责 - 一个 Skill 只做一件事
-
触发明确 - 触发场景描述清晰,AI 能准确判断
-
文档完整 - 包含用途、方法、示例
-
错误处理 - 考虑各种失败情况
-
有示例 - 至少 2-3 个对话示例
❌ 避免
-
功能混杂 - 一个 Skill 既查天气又查股票
-
触发模糊 - AI 不知道该不该用
-
文档缺失 - 没有使用方法
-
硬编码路径 - 假设用户的环境和你一样
-
没有错误处理 - 失败就崩溃
实战案例:完整的 Skill
Skill:系统健康检查
目录结构:
system-health/
├── SKILL.md
├── scripts/
│ └── check.sh
└── package.json
SKILL.md:
---
name: system-health
description: 检查系统健康状态,包括 CPU、内存、磁盘使用情况
version: 1.0.0
author: saga-su
---
# System Health Skill
## 用途
检查当前系统的资源使用情况,包括 CPU、内存、磁盘、负载等。
## 触发场景
- "系统状态怎么样?"
- "查看系统健康"
- "检查资源使用"
- "磁盘还剩多少空间?"
- "CPU 占用高吗?"
## 使用方法
### 执行检查脚本
$$bash
bash ~/.openclaw/workspace/skills/system-health/scripts/check.sh
$$
### 解析结果
脚本返回:
- CPU 使用率
- 内存使用率
- 磁盘使用率
- 系统负载
- 运行时间
### 生成建议
- CPU > 80%:提醒注意
- 内存 > 90%:建议清理
- 磁盘 < 10GB:提醒清理
- 负载 > 5:系统繁忙
## 示例对话
**用户**:系统状态怎么样?
**AI**:正在检查系统健康……
📊 系统状态:
- CPU:45%(正常)
- 内存:72%(正常)
- 磁盘:120GB / 500GB(剩余 76%)
- 负载:1.2(正常)
- 运行时间:3 天 12 小时
✅ 系统健康,运行良好!
---
**用户**:磁盘快满了吗?
**AI**:检查磁盘使用……
💾 磁盘状态:
- 已用:450GB / 500GB(90%)
- 剩余:50GB
⚠️ 磁盘空间紧张!建议:
1. 清理 Downloads 文件夹
2. 删除旧的日志文件
3. 卸载不用的应用
scripts/check.sh:
#!/bin/bash
# CPU 使用率
CPU=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
# 内存使用率
MEM=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100.0}')
# 磁盘使用率
DISK=$(df -h / | tail -1 | awk '{print $5}' | sed 's/%//')
DISK_AVAIL=$(df -h / | tail -1 | awk '{print $4}')
# 系统负载
LOAD=$(uptime | awk -F'load average:' '{print $2}' | awk '{print $1}' | sed 's/,//')
# 运行时间
UPTIME=$(uptime -p | sed 's/up //')
echo "CPU: ${CPU}%"
echo "Memory: ${MEM}%"
echo "Disk: ${DISK}% (${DISK_AVAIL} available)"
echo "Load: ${LOAD}"
echo "Uptime: ${UPTIME}"
故障排除
Q1: Skill 发布失败?
检查:
-
SKILL.md格式是否正确(YAML frontmatter) -
是否已登录
clawhub login -
Skill 名是否已存在
Q2: Skill 审核被拒?
常见原因:
-
描述不清晰
-
有安全风险(如执行危险命令)
-
与现有 Skill 重复
Q3: 如何更新已发布的 Skill?
# 修改版本号
vim SKILL.md # 修改 version: 1.0.1
# 重新发布
clawhub publish
验证清单
-
创建了 Skill 目录
-
编写了完整的
SKILL.md -
包含 frontmatter(name, description, version)
-
包含触发场景
-
包含使用方法
-
包含示例对话
-
本地测试通过
-
发布到 ClawHub(可选)
下一步
恭喜你!你已经学会了 OpenClaw 的所有核心功能。下一篇是一个完整的实战复盘:
→ [第 14 篇 | 实战复盘:从零到日报自动化的 30 天] — 真实踩坑记录,包括所有失败经验和最终解决方案。
💬 读者讨论
你最想创建什么 Skill?
A. 天气查询
B. 股票监控
C. 智能家居控制
D. 其他(请评论)
欢迎在评论区分享!
