OpenClaw Docs CN

Skill 开发 / 文档规范

SKILL.md 写作规范

SKILL.md 是 Skill 的入口文件。你可以把它理解成“给 OpenClaw 和模型共同看的任务说明书”。这一篇不做字段百科,而是给你一条可执行路径:先写最小版,再加约束,再做发布前自检。

本章完成标准

你完成后应该能独立写出一个结构清楚、触发条件清楚、依赖说明清楚的 SKILL.md,并知道什么时候该加 metadata,什么时候不该过度复杂化。

先记住 4 条规则

  1. SKILL.md 需要 frontmatter,最少包含 namedescription
  2. 正文要写“何时用、怎么做、失败时怎么处理”,不要只写口号。
  3. 有依赖时再加 metadata.openclaw,无依赖时不要硬加。
  4. 路径引用优先用 {baseDir},避免写死绝对路径。

步骤一:先写最小可用模板

先写能跑通的版本,不要一上来就堆很多字段:

---
name: hello_world
description: 用于返回简短问候的最小示例 Skill
---

# Hello World Skill

适用场景:
- 用户需要一句简短问候
- 用于验证 Skill 是否被正确加载

执行规则:
- 返回一句简洁问候
- 不输出冗长说明

只要这个模板写对,模型基本就能判断该不该调用它。

步骤二:把必填字段写“能触发”

namedescription 是最关键的两个字段:

  • name:建议用英文小写,短横线或下划线都可以,保持稳定不频繁改名。
  • description:一句话写清楚“解决什么问题”,不要写“一个很好用的 Skill”。

好的描述示例:

description: 对长文档进行结构化总结,输出结论、行动项和风险点

不好的描述示例:

description: 一个很强的智能助手

步骤三:按需加入 metadata.openclaw

当 Skill 依赖 CLI、环境变量、配置项时,再加 metadata.openclaw。在当前版本里,官方示例使用单行 JSON,实践中也更稳:

metadata: {"openclaw":{"requires":{"bins":["summarize"],"env":["SUMMARIZE_API_KEY"]},"primaryEnv":"SUMMARIZE_API_KEY","homepage":"https://example.com"}}

最常用字段:

  • requires.bins:必须存在的命令。
  • requires.anyBins:多个命令满足其一即可。
  • requires.env:必须存在的环境变量。
  • requires.config:必须满足的配置项。
  • primaryEnv:主密钥变量名,便于定位配置入口。
  • os:限定系统加载范围。

步骤四:正文按“场景-规则-失败处理”写

正文不是写人设,而是写任务执行说明。建议固定 3 段:

  1. 适用场景:什么时候触发。
  2. 执行规则:怎么做、输出什么格式。
  3. 失败处理:缺依赖、缺权限、缺密钥时怎么反馈。

同时,把目录资源引用写成:

使用 {baseDir}/templates/summary.md 作为输出模板。

这样换机器、换 workspace、换安装位置都不容易失效。

步骤五:发布前做一次自检

发布到 ClawHub 前,至少过这份清单:

  • frontmatter 能被正常解析(分隔线、冒号、缩进无误)。
  • description 能让人一眼看懂用途。
  • 依赖项都写在 metadata.openclaw.requires 里。
  • 正文没有泄漏密钥、Token、私有地址。
  • 路径全部用 {baseDir} 或相对路径策略。
  • 至少做过一次真实触发测试。

最常见的 6 个错误

  1. description 太空,模型无法判断何时调用。
  2. metadata 写太复杂,结果 frontmatter 解析失败。
  3. 把密钥直接写进正文或脚本示例。
  4. 正文只写目标,不写边界和失败处理。
  5. 漏写依赖项,导致“能加载但不能运行”。
  6. 写死本机绝对路径,换环境就崩。

可直接复用的进阶模板

---
name: summarize_docs
description: 对长文档进行结构化总结,输出结论、行动项和风险点
metadata: {"openclaw":{"requires":{"bins":["summarize"],"env":["SUMMARIZE_API_KEY"]},"primaryEnv":"SUMMARIZE_API_KEY","homepage":"https://example.com"}}
---

# Summarize Docs

适用场景:
- 用户提交长文档、网页或说明材料
- 目标是快速产出结构化摘要

执行规则:
- 先提炼核心结论,再列行动项与风险
- 输出保持简洁,不逐段复述原文

失败处理:
- 缺少 summarize 命令或 API Key 时,直接指出缺失项并给出修复建议

资源路径:
- 使用 {baseDir}/templates/summary.md 作为输出模板

下一步建议

官方参考