DEV Community

Cover image for Build Custom OpenClaw Skills: My实战经验分享
D2758695161
D2758695161

Posted on

Build Custom OpenClaw Skills: My实战经验分享

OpenClaw Challenge Submission 🦞

This is a submission for the OpenClaw Challenge

What I Learned

我花了几周深度使用OpenClaw,构建了多个自定义技能(Skills),踩了不少坑,也发现了一些官方文档没写清楚的实战技巧。这篇文章是我的实战总结——从原理到实现,从调试到发布。

How I Used OpenClaw

OpenClaw Skills 是什么?

OpenClaw的技能(Skill)是一个文件夹,里面有一个SKILL.md文件,告诉AI助手如何使用特定工具或执行特定工作流。技能可以被复用、组合、发布到ClawHub共享给其他人。

技能和工具的区别:

  • 工具(Tool):内置能力,如execweb_search
  • 技能(Skill):教AI如何使用工具和工作流的指令集合

创建你的第一个Skill

目录结构:

skills/
  my-first-skill/
    SKILL.md
    (可选) scripts/
      helper.sh
Enter fullscreen mode Exit fullscreen mode

SKILL.md 基础格式:

---
name: my-first-skill
description: "这是一个示例技能"
---

# My First Skill

这个技能帮助AI完成XXX任务。

## 使用方法

当用户说"xxx"时,使用这个技能。
Enter fullscreen mode Exit fullscreen mode

实战:构建一个天气速查技能

---
name: weather-quick
description: 快速获取当前天气和预报
---

# Weather Quick Skill

快速回答天气问题。

## 使用条件

当用户询问当前天气时使用。

## 使用方式

使用`weather`工具,参数:
- location: 用户提到的地点
Enter fullscreen mode Exit fullscreen mode

高级技能:带二进制依赖的技能

---
name: image-lab
description: 使用 Gemini 生成图片
metadata:
  {"openclaw": {"requires": {"bins": ["uv"]}}}
---

# Image Lab

通过 uv 和 Gemini API 生成图片。

## 前置要求

- 安装 `uv`: `curl -fsSL https://astral.sh/uv/install.sh | bash`
- 设置 `GEMINI_API_KEY` 环境变量
Enter fullscreen mode Exit fullscreen mode

技能加载优先级

OpenClaw从多个位置加载技能(优先级从高到低):

  1. <workspace>/skills (最高)
  2. <workspace>/.agents/skills
  3. ~/.agents/skills
  4. ~/.openclaw/skills
  5. bundled skills(内置)
  6. skills.load.extraDirs (最低)

发布到 ClawHub

# 安装 clawhub CLI
npm install -g clawhub

# 登录
clawhub login

# 发布技能
clawhub publish ./skills/my-first-skill

# 或更新已发布的技能
clawhub sync
Enter fullscreen mode Exit fullscreen mode

调试技巧

1. 查看技能是否加载:

openclaw gateway logs | grep skill
Enter fullscreen mode Exit fullscreen mode

2. 强制重新加载:

openclaw gateway restart
Enter fullscreen mode Exit fullscreen mode

3. 技能不生效的常见原因:

  • metadata.openclaw.requires 条件不满足
  • 技能名冲突被低优先级覆盖
  • YAML格式错误

技能组合:Chain式工作流

skills/
  article-summary/      # 提取文章要点
  translate/           # 翻译
  tweet-format/        # 转换为推文格式
Enter fullscreen mode Exit fullscreen mode

What I Learned

1. 技能设计核心是清晰边界

  • 每个技能只做一件事
  • 输入输出要明确
  • 失败模式要可预测

2. metadata比技能内容更重要

  • 很多人忽略了metadata.openclaw.requires
  • 这个字段决定技能何时被激活

3. 技能的生命周期

  • 本地调试 → 提交PR到社区 → ClawHub发布
  • 好的技能会被内置到OpenClaw发行版

4. 踩的坑

  • Windows路径分隔符问题
  • Node版本过旧导致某些skill不兼容
  • 环境变量在Windows下需要用set而不是export

感谢阅读!如果你觉得有帮助,欢迎在评论区分享你构建的OpenClaw技能。

Top comments (0)