返回教程中心
工具与 Skills

OpenClaw 创建第一个 Skill 教程,从小能力开始最容易成功

O
OpenClaw AI
2026-03-25

官方创建 Skills 文档给出的路线非常清晰:先做一个最小可用 Skill,让 OpenClaw 能发现它、理解它、调用它,再考虑复杂逻辑。

很多人第一次做 Skill 时,脑子里会直接冒出“接 API”“做完整工作流”“搞成半个平台”这些想法。热情没问题,但成功率往往不高。更稳的方式,是先做一个能被发现、能被选中、能稳定返回结果的最小能力。

官方对 Skill 的定义

根据官方文档,一个 Skill 本质上是一个目录,其中至少包含:

  • 一个 SKILL.md

可选还可以包含:

  • 脚本
  • 资源文件
  • 辅助配置
  • 示例输入输出

也就是说,Skill 不是一句提示词,也不是一段散落在别处的说明文档,而是一个有明确边界、可被系统索引和调用的能力目录。

第一步:先决定你的第一个 Skill 做什么

在创建目录之前,建议先给自己定一个非常小的目标。理想的第一个 Skill 最好满足:

  • 单一输入
  • 单一输出
  • 没有复杂副作用
  • 不依赖过多外部状态
  • 成功与失败都容易判断

适合新手的题目通常像这样:

  • 读取某个固定格式文件并总结
  • 根据输入生成一段固定结构文本
  • 调一个简单 API 并整理结果
  • 执行一条低风险、可重复的本地命令

不太适合第一篇就做的,反而是:

  • 需要多步状态管理的 Skill
  • 依赖大量隐式环境变量的 Skill
  • 一失败就可能改坏真实数据的 Skill

第二步:创建 Skill 目录

官方示例:

bash
mkdir -p ~/.openclaw/workspace/skills/hello-world

这条路径说明了两个关键点:

  • Skill 默认属于当前工作区
  • 它不是随便丢一个 Markdown 到别处就能自动生效

如果你已经有自己的工作区结构,核心原则也是一样的:让 Skill 处在系统会扫描、会索引的位置。

第三步:写 SKILL.md

官方给出的最小示例是:

md
---
name: hello_world
description: A simple skill that says hello.
---

# Hello World Skill

When the user asks for a greeting, use the `echo` tool to say "Hello from your custom skill!".

这个例子看起来很简单,但它已经包含了 Skill 的核心:

  • 元数据
  • 用途描述
  • 触发场景
  • 对模型的明确指令

SKILL.md 到底在告诉模型什么

可以把 SKILL.md 理解成“给模型看的使用说明书”。它至少要回答这几个问题:

  • 这个 Skill 是干什么的
  • 什么时候应该用
  • 不该在什么情况下用
  • 需要什么输入
  • 应该产出什么结果

如果这些信息写得太模糊,模型就算发现了你的 Skill,也未必会稳定选中它。

第一个 Skill 的文案该怎么写更稳

写说明时,建议尽量做到:

  • 任务边界清楚
  • 触发条件明确
  • 动作步骤简洁
  • 输出预期可判断

比如不要只写“这个 Skill 用来处理文件”,而应该更具体一点:

  • 处理哪类文件
  • 做什么处理
  • 输出成什么形式
  • 遇到缺文件或格式不对时怎么办

描述越接近“一个可执行说明”,模型的调用稳定性通常越高。

一个更实用的最小模板

如果你不想只照抄 hello world,可以从下面这种结构开始:

md
---
name: summarize_notes
description: Read a notes file and return a concise summary.
---

# Summarize Notes

Use this skill when the user asks to summarize a local notes file.

Requirements:
- The target file must exist in the workspace.
- If the file is missing, explain the problem clearly.

Expected output:
- A short summary
- Key bullet points
- Any obvious action items

这个模板的好处是,已经把“什么时候用”“前提是什么”“输出长什么样”都写进去了。

为什么不要一上来做“大 Skill”

因为你最先要验证的其实不是功能多不多,而是:

  • 能不能被发现
  • 能不能被调用
  • 输入输出稳不稳定
  • 是否容易调试
  • 失败时能不能看懂问题

如果一开始就做很复杂的 Skill,你很容易分不清到底是索引有问题、描述有问题,还是执行逻辑本身有问题。

第四步:给 Skill 配最少的依赖

第一个 Skill 最好尽量少依赖外部环境。尤其要避免这种情况:

  • 只有你自己电脑上能跑
  • 依赖没写出来
  • 需要额外登录状态却没说明
  • 需要某个命令行工具却没注明

如果确实需要依赖,至少要在 SKILL.md 或配套文档里写明:

  • 需要哪些环境变量
  • 需要哪些命令或脚本
  • 预期在哪个目录运行

这样后面调试时会轻松很多。

第五步:让新 Skill 生效

官方文档建议:

  • 让智能体“刷新 skills”
  • 或重启 Gateway

只要索引更新成功,新的 Skill 就会被发现。

如果刷新后依然看不到,优先排查:

  • 目录位置对不对
  • SKILL.md 是否存在
  • 元数据有没有明显格式错误
  • 当前工作区是不是系统正在使用的那个工作区

第六步:用最小问题去测试它

不要一上来就把第一个 Skill 扔进复杂任务里。更好的做法是只问一个最小问题,例如:

  • “请使用这个 Skill 总结我的笔记”
  • “请调用这个 Skill 生成问候语”
  • “请用这个 Skill 读取并整理这个文件”

测试时重点看三件事:

  1. 模型有没有选中它
  2. 结果是否符合你写的预期
  3. 出错时信息是否可读

第一个 Skill 常见失败原因

很多第一次失败,其实都不是“写错代码”,而是下面这些基础问题:

  • SKILL.md 描述太空泛,模型不知道什么时候该用
  • 依赖没写,运行环境不完整
  • 输出预期不明确,导致结果忽左忽右
  • Skill 做得太大,一次调试信息太多

只要把这些基础项收紧,成功率会明显提升。

一个推荐节奏

如果你准备开始做自己的第一个 Skill,我建议按这个顺序:

  1. 先定一个单一目标
  2. 再创建目录和 SKILL.md
  3. 再把触发条件和输出写清楚
  4. 再做最小测试
  5. 最后才慢慢加复杂逻辑

一个最实用的建议

第一个 Skill 不要追求“强大”,先追求“可重复、可验证、可调试”。只要第一个成功闭环跑通,后面的扩展会顺很多;反过来,如果第一步就做成半个平台,往往会在最基础的发现、调用和调试环节卡很久。

继续阅读

相关阅读与站内入口

准备好开始了吗?

继续探索更多教程,或者去技能市场看看有哪些现成的插件。