$ ssh clawdbot.space --loading...
$ ssh clawdbot.space --loading...
构建、测试、发布你自己的 OpenClaw 技能 — 从本地脚本到 ClawHub 包。
技能是 OpenClaw 自动化的构建块。虽然 ClawHub 提供数千个社区技能,但构建自己的技能可以创建完美定制的自动化。本指南覆盖完整生命周期:脚手架、开发、测试和发布。
| File | Purpose | Status |
|---|---|---|
| SKILL.md | 技能的全部。YAML frontmatter 承载 name 和 description(两个都必填),下面是告诉模型何时、如何行动的 Markdown。 | 必需 |
| 同目录下的附属文件 | 指令里会引用到的脚本、模板或参考文件。可选——很多好用的技能就只有一个 SKILL.md,别的什么都没有。 | 可选 |
| scripts/ | 辅助脚本(Python、Bash、Node),技能通过工具调用执行。 | 可选 |
| templates/ | 代码生成、配置脚手架或文档创建的模板文件。 | 可选 |
| tests/ | 发布前验证技能行为的测试场景。 | 推荐 |
技能就是工作区 skills 根目录下的文件夹。没有脚手架命令——一个文件夹加一个文件就是全部结构。
mkdir -p ~/.openclaw/workspace/skills/my-skill
一个文件,两个必填的 frontmatter 字段。description 是模型在判断这个技能相不相关时唯一会读的东西,所以要把它写成对「我什么时候该用这个」的回答。
# ~/.openclaw/workspace/skills/my-skill/SKILL.md
---
name: my-skill
description: Generates a standup report from yesterday's commits and completed tasks.
---
# Daily Standup Generator
Use this when the user asks for a standup, a daily summary, or
"what did I do yesterday".
## Steps
1. Read memory for tasks completed in the last 24 hours.
2. Run `git log --since="24 hours ago" --oneline` in each active repo.
3. Format as Done / Doing / Blockers.
4. Write to reports/standup-{date}.md.像教新团队成员一样编写指令。避免歧义。列出确切步骤、预期格式和错误处理。
没有可以锁定的依赖声明块。如果技能依赖某个工具的特定版本,就在 Markdown 正文里写明,让模型把它说出来,而不是跑到一半失败。
只请求技能实际需要的工具。更少工具 = 更小攻击面。
告诉代理失败时怎么办:重试逻辑、回退行为、给用户的错误消息。
用真实用户会打出来的说法试一遍。一个只有在 /skill 直接调用时才触发的技能,问题出在 description——而这恰恰是大多数人不会去测的那一半。
用一句本该触发这个技能的话去跑 Agent。这同时在测 description,而不只是正文。
openclaw agent --message "生成我的站会记录"在对话里按名字直接调用。如果这样能跑、自然语言不行,说明技能本身没问题,问题在 description。
/skill my-skill并没有 dry-run 参数。想让技能在测试期间没有副作用,用工具策略限制它能碰到什么——deny 优先于 allow。
openclaw config get tools确认网关确实加载了这个技能。技能是在会话开始时读取的,刚写完文件的话先 /new。
openclaw skills list发布是一个独立的、需要登录的工具。`openclaw skills` 没有 publish 子命令。
clawhub login路径指向包含 SKILL.md 的文件夹。可用 --version、--changelog、--tags。
clawhub skill publish ./my-skill --slug my-skill从注册表装回来,是检查你发布出去的包是不是你想发的那个的方式。
openclaw skills install @you/my-skill