写自己的 Skill:SKILL.md 与 ClawHub 发布
一句话目标:动手完成第一次 OpenClaw 技能开发——从零写一个 hello-world 技能,跑通「建目录 → 写 SKILL.md → 验证调用」全链路,并弄清发布到 ClawHub 前要准备什么。
准备
- 学完上一课《Skills 上手:安装、使用与配置》,会用现成技能。
- 本机已装 OpenClaw(Node 24.16.0+ 或 26.1.0+),
openclaw命令可用。 - 一个终端窗口即可,不需要额外依赖。
跟我做
第 1 步:创建技能目录
技能放在工作区 skills/ 文件夹下,一个技能就是一个目录:
mkdir -p ~/.openclaw/workspace/skills/hello-world想分组也可以套子文件夹(如 skills/personal/hello-world),技能名仍由 SKILL.md 的 frontmatter 决定,调用时还是 /hello-world。
预期结果:skills/hello-world/ 目录创建成功;OpenClaw 默认会监视 skills 根目录下的 SKILL.md 文件。
第 2 步:编写 SKILL.md
在目录里新建 SKILL.md:frontmatter 写元数据,正文写给 agent 的指令。
---
name: hello-world
description: A simple skill that prints a greeting.
---
# Hello World
When the user asks for a greeting, use the `exec` tool to run:
```bash
echo "Hello from your custom skill!"
```三条命名规则要守住:name 只用小写字母、数字和连字符;目录名与 frontmatter 的 name 保持一致;description 压成一行、不超过 160 字符——它会展示给 agent,也出现在斜杠命令发现里。
预期结果:文件保存为 skills/hello-world/SKILL.md,frontmatter 能被正常解析。
第 3 步:验证加载并测试
openclaw skills list列表里出现 hello-world 即已加载。若你延续了旧会话或监视器被关掉,先刷新:
# 聊天里:归档当前会话,开新会话
/new# 或重启网关
openclaw gateway restart然后测试:
openclaw agent --message "give me a greeting"也可以直接在聊天里提需求,或用 /skill hello-world 按名显式调用。
预期结果:agent 执行技能里的命令,回你一句 Hello from your custom skill!。
验证
逐项核对:
openclaw skills list能看到 hello-world。/skill hello-world显式调用有输出。- 改动 SKILL.md 后,
/new或重启网关的新会话能拿到刷新后的技能列表。
全过,说明你的第一个技能已经可用。技能本质就是「目录 + SKILL.md」,测通之后就可以考虑发布到 ClawHub 给别人安装:装好独立的 ClawHub CLI(npm i -g clawhub)并 clawhub login 登录,再用 clawhub skill publish ~/.openclaw/workspace/skills/hello-world 发布;注册表审核等细节以官方 ClawHub 文档为准。
常见坑
- 目录名和
name不一致:技能名以 frontmatter 为准,目录名只是容器;但两者不一致容易调错,保持对齐最省心。 - description 超长:超过 160 字符会拖累斜杠命令发现,压成一行。
- 改了 SKILL.md 没生效:旧会话不会自动刷新技能列表,
/new开新会话或openclaw gateway restart后再试。
下一课
技能手写跑通后,下一课《Skill Workshop:让 Claw 自己学技能》让 Claw 替你起草、校验、迭代技能——OpenClaw 2.0 的「创建-校验-安装-调用」一条链就闭环了。