手把手教你写一个 OpenClaw Skill:从零开发到发布安装全流程
你是否想让你的 AI 助手拥有独特的技能——比如查天气、自动搜索内部文档、一键生成图表?OpenClaw 的 Skill 机制就是为此而生的。本文带你从零开始,完整走完「写 Skill → 测试 → 发布 → 安装」全流程。
一、什么是 Skill?
Skill 是 OpenClaw 的能力扩展包,本质上就是一个文件夹,核心是一个叫 SKILL.md 的文件。
这个文件告诉 AI 助手:
把 Skill 放到指定目录,AI 下次对话时就自动获得这项能力。不需要改代码,不需要重启服务。
二、写一个你的第一个 Skill
第一步:创建目录结构
mkdir -p ~/.openclaw/workspace/skills/my-weather
cd ~/.openclaw/workspace/skills/my-weather推荐目录结构:
my-weather/
├── SKILL.md # 核心:AI 的指令说明书
├── scripts/ # 可选:脚本文件
│ └── weather.py
└── references/ # 可选:参考资料、API 文档第二步:编写 SKILL.md
这是整个 Skill 的灵魂。格式是:YAML 元数据 + Markdown 指令。
---
name: my-weather
description: 查询任意城市的实时天气和未来预报。当用户询问天气时使用。
---
# 天气查询 Skill
## 使用场景
当用户询问"天气怎么样"、"明天会下雨吗"、"XX城市气温"时激活本 Skill。
## 操作步骤
1. 识别用户询问的城市名称(默认:北京)
2. 调用 `exec` 工具运行:
`python3 {baseDir}/scripts/weather.py --city <城市名>`
3. 将返回的 JSON 数据整理为自然语言回复
## 注意事项
- 城市名使用中文或英文均可
- 返回数据包含:当前气温、天气状况、未来 3 天预报几个关键点:
name:Skill 唯一标识,建议用小写加连字符description:极其重要,AI 就是靠这段话决定要不要激活你的 Skill{baseDir}:会被自动替换为 Skill 目录的绝对路径,引用脚本时必用第三步:写辅助脚本(可选)
如果 Skill 需要调用外部 API 或执行复杂逻辑,可以把代码放在 scripts/ 目录:
# scripts/weather.py
import argparse, requests, json
parser = argparse.ArgumentParser()
parser.add_argument("--city", default="北京")
args = parser.parse_args()
resp = requests.get(
f"https://wttr.in/{args.city}?format=j1",
timeout=10
).json()
current = resp["current_condition"][0]
print(json.dumps({
"city": args.city,
"temp_c": current["temp_C"],
"desc": current["weatherDesc"][0]["value"],
}, ensure_ascii=False))第四步:加载 Skill
OpenClaw 会自动监视 Skills 目录,文件保存后下一次对话即生效。
也可以手动检查:
openclaw skills list # 查看所有已加载的 Skill
openclaw skills list --eligible # 只看当前可用的
openclaw skills info my-weather # 查看某个 Skill 的详情三、进阶:让 Skill 更专业
门控(按需加载)
如果 Skill 依赖特定工具或 API Key,可以设置加载条件,避免在没有依赖的机器上出错:
---
name: my-weather
description: 查询天气预报。
metadata: {"openclaw": {"requires": {"bins": ["python3"], "env": ["WEATHER_API_KEY"]}, "primaryEnv": "WEATHER_API_KEY"}}
---requires.bins:需要系统中存在的命令行工具requires.env:需要设置的环境变量primaryEnv:主要的 API Key 变量名配置 API Key
在 ~/.openclaw/openclaw.json 中为 Skill 提供配置:
{
"skills": {
"entries": {
"my-weather": {
"enabled": true,
"apiKey": "your-api-key-here"
}
}
}
}四、发布你的 Skill 到 ClawHub
ClawHub 是 OpenClaw 的官方 Skill 市场,任何人都可以发布和安装。
发布步骤:
安装方式:
# 搜索 Skill
clawhub search weather
# 安装 Skill
clawhub install my-weather
# 更新所有已安装的 Skill
clawhub update --all或者在对话中直接说:「帮我安装天气查询 Skill」,OpenClaw 会自动调用 knot_skills 工具完成安装。
五、不走 ClawHub?本地安装方法
如果你的 Skill 是内部工具、不方便开源,或者只是想快速分享给同事,有三种本地安装方式:
方式一:直接复制目录(最简单)
# 把 Skill 目录放到 ~/.openclaw/workspace/skills/
cp -r my-weather ~/.openclaw/workspace/skills/
# 或放到用户级目录(所有 Agent 共享)
cp -r my-weather ~/.openclaw/skills/重启对话即生效,无需其他配置。
方式二:Git 克隆安装
# 克隆包含 Skill 的仓库
git clone https://github.com/yourname/my-skills ~/.openclaw/skills/my-skills-pack
# OpenClaw 会扫描其中每个包含 SKILL.md 的子目录方式三:配置额外扫描目录
如果 Skill 放在任意位置,在 openclaw.json 中告诉 OpenClaw 去哪找:
{
"skills": {
"load": {
"extraDirs": [
"~/my-projects/team-skills",
"/shared/company-skills"
]
}
}
}这样团队共享的 Skill 包可以统一放在内网服务器,所有人通过挂载或 rsync 同步后自动加载。
六、Skill 的加载优先级
当同名 Skill 出现在多个位置时,按以下优先级加载(高优先级覆盖低优先级):
工作区 skills/ > ~/.openclaw/skills/ > 内置 Skills > extraDirs这意味着你可以在自己的工作区覆盖官方内置 Skill 的行为,非常灵活。
七、一张图看懂 Skill 生命周期
从写代码到 AI 使用,整个流程只有 4 步:
写 SKILL.md → 放入目录 → OpenClaw 自动发现 → AI 对话中自动激活整个过程不需要重启、不需要编译、不需要 API 接口。AI 助手读懂 SKILL.md,按指令调用工具,就这么简单。
总结
| 场景 | 推荐方式 |
|---|---|
| 个人使用 | 直接放入 ~/.openclaw/workspace/skills/ |
| 团队内部共享 | 配置 extraDirs 指向共享目录 |
| 开源发布 | 上传 GitHub + 发布到 ClawHub |
| 安装别人的 Skill | clawhub install 或对话中让 AI 安装 |
Skill 机制让每个人都能成为 AI 能力的建造者,而不只是使用者。你的业务逻辑、你的内部工具、你的专属知识,都可以封装成 Skill,让 AI 真正懂你的业务。
更多 Skill 示例和文档:docs.openclaw.ai | Skill 市场:clawhub.com
OpenClaw 官方文档 · clawhub.com · 2026-03-25
夜雨聆风