OpenClaw Skill 开发从零开始配置教程

OpenClaw Skill 开发从零开始配置教程

OpenClaw Skill 开发从零开始配置教程

实验目标

本教程主要讲解如何在 OpenClaw 中创建自定义 Skill,从基础概念到完整实践,完成一个 WordPress 文章发布 Skill 的系统搭建。

实验内容

  • 了解 Skill 的本质和设计原则
  • 掌握 Skill 的标准结构
  • 使用 init_skill.py 初始化技能
  • 编写 SKILL.md 和脚本工具
  • 打包和分发技能

简介

根据 OpenClaw 的设计理念,Skill 是「特定领域的入职指南」—— 把通用 AI 变成专家。通过 Skill,你可以让 AI 掌握专业工作流、工具集成和领域知识。

Skill 开发方式对比

方式 优点 缺点
直接修改内置 Skill 立即可用,无需配置 更新时会被覆盖,不推荐
在 workspace 创建 Skill 安全,可版本控制,推荐 需要手动加载
打包成 .skill 文件 便于分发和分享 需要解压安装

我们在综合考虑了安全性、可维护性、可分享性等方面后,选择了在 workspace 创建 Skill + 打包分发作为开发方式。

Skill 是什么

Skill 是模块化、自包含的包,通过提供专业化知识、工作流和工具来扩展 AI 的能力。可以把它们想象成「特定领域的入职指南」—— 将通用 AI 转变为具备专业程序性知识的专家。

Skill 提供什么

  1. 专业化工作流 – 特定领域的多步骤流程
  2. 工具集成 – 操作特定文件格式或 API 的说明
  3. 领域知识 – 公司特定知识、Schema、业务逻辑
  4. 捆绑资源 – 脚本、参考文档和复杂任务的资产

核心设计原则

简洁至上

上下文窗口是公共资源。Skill 与 AI 需要的所有其他内容共享上下文窗口:系统提示、对话历史、其他 Skill 的元数据,以及实际的用户请求。

默认假设:AI 已经很聪明了。 只添加 AI 还不知道的上下文。挑战每一条信息:”AI 真的需要这个解释吗?”和”这段内容值得它的 token 成本吗?”

优先使用简洁的示例,而不是冗长的解释。

自由度匹配

根据任务的脆弱性和可变性匹配合适的 specificity 级别:

高自由度(文字指导):当多种方法都有效、决策依赖上下文或启发式方法指导时使用。

中自由度(伪代码或带参数的脚本):当存在推荐模式、可接受一定变化或配置影响行为时使用。

低自由度(具体脚本,少量参数):当操作脆弱易错、一致性至关重要或必须遵循特定顺序时使用。

把 AI 想象成在探索一条路:狭窄的桥(有悬崖)需要具体的护栏(低自由度),而开阔的田野允许多条路线(高自由度)。

渐进式披露设计

Skill 使用三级加载系统来高效管理上下文:

  1. 元数据(name + description) – 始终在上下文中(约 100 词)
  2. SKILL.md 正文 – Skill 触发后加载(<5k 词)
  3. 捆绑资源 – AI 按需读取(无限制)

手动逐步创建 Skill

安装条件

查看 OpenClaw 版本

openclaw --version

确认 workspace 位置

# 默认 workspace 位置
~/.openclaw/workspace/skills/

创建步骤

本教程讲解在 OpenClaw 中创建 Skill 的完整步骤。

初始化 Skill

使用 init_skill.py 脚本可以快速生成 Skill 模板:

python3 /opt/openclaw/skills/skill-creator/scripts/init_skill.py \
  <skill-name> \
  --path <output-directory> \
  [--resources scripts,references,assets] \
  [--examples]

示例:

# 创建基础 Skill
python3 /opt/openclaw/skills/skill-creator/scripts/init_skill.py \
  my-skill \
  --path ~/.openclaw/workspace/skills

# 创建带资源目录的 Skill
python3 /opt/openclaw/skills/skill-creator/scripts/init_skill.py \
  sys-info \
  --path ~/.openclaw/workspace/skills \
  --resources scripts,references

# 创建带示例文件的 Skill
python3 /opt/openclaw/skill-creator/scripts/init_skill.py \
  my-skill \
  --path ~/.openclaw/workspace/skills \
  --resources scripts \
  --examples

该脚本会:

  • 在指定路径创建 Skill 目录
  • 生成带有正确 frontmatter 和 TODO 占位符的 SKILL.md 模板
  • 根据 --resources 参数创建资源目录
  • 如果设置了 --examples,添加示例文件

Skill 结构

每个 Skill 由必需的 SKILL.md 文件和可选的捆绑资源组成:

skill-name/
├── SKILL.md (必需)
│   ├── YAML frontmatter metadata (必需)
│   │   ├── name: (必需)
│   │   └── description: (必需)
│   └── Markdown instructions (必需)
└── Bundled Resources (可选)
    ├── scripts/          - 可执行代码(Python/Bash 等)
    ├── references/       - 文档参考
    └── assets/           - 输出中使用的文件(模板、图标等)

SKILL.md(必需)

每个 SKILL.md 包含:

  • Frontmatter(YAML):包含 namedescription 字段。这是 AI 判断何时使用 Skill 的唯一依据,因此清晰全面地描述 Skill 是什么以及何时使用它非常重要。
  • 正文(Markdown):使用 Skill 的说明和指导。仅在 Skill 触发后加载。

Frontmatter 示例

---
name: wordpress-publish
description: "WordPress 文章发布和管理技能。通过 wp-cli 或 REST API 发布文章、管理分类、上传媒体。当用户需要发布博客文章、更新内容、管理 WordPress 站点时使用。不适用于:复杂页面布局设计、主题开发、插件开发。"
metadata:
  {
    "openclaw":
      {
        "emoji": "📝",
        "requires": { "bins": ["wp", "curl"] },
        "install":
          [
            {
              "id": "brew",
              "kind": "brew",
              "formula": "wp-cli",
              "bins": ["wp"],
              "label": "Install WP-CLI (brew)",
            },
            {
              "id": "apt",
              "kind": "apt",
              "package": "wp-cli",
              "bins": ["wp"],
              "label": "Install WP-CLI (apt)",
            },
          ],
      }
  }
---

正文结构

# Skill 名称

## 何时使用

✅ **使用此技能的情况:**

- 使用场景 1
- 使用场景 2
- 使用场景 3

## 何时不使用

❌ **不要使用此技能的情况:**

- 不适用场景 1 → 使用 X 替代
- 不适用场景 2 → 使用 Y 替代

## 设置

```bash
# 一次性配置命令

常用命令

分类 1

# 命令示例 1
command arg1 arg2

# 命令示例 2
command --flag value

分类 2

# 命令示例

模板

模板 1

#!/bin/bash
# 可复用脚本模板

注意事项

  • 重要提示 1
  • 重要提示 2

相关资源

  • 详细命令参考: 见 references/commands.md
  • API 参考: 见 references/api.md

捆绑资源(可选)

scripts/

用于需要确定性可靠性或重复编写相同代码的任务的可执行代码(Python/Bash 等)。

  • 何时包含:当重复编写相同代码或需要确定性可靠性时
  • 示例scripts/rotate_pdf.py 用于 PDF 旋转任务
  • 好处:Token 高效、确定性、可在不加载到上下文的情况下执行

references/

用于加载到上下文中以告知 AI 流程和思维的文档和参考材料。

  • 何时包含:用于 AI 工作时需要参考的文档
  • 示例references/finance.md 用于财务 Schema,references/api_docs.md 用于 API 规范
  • 用例:数据库 Schema、API 文档、领域知识、公司政策、详细工作流指南
  • 好处:保持 SKILL.md 精简,仅在 AI 确定需要时加载

assets/

不打算加载到上下文中,而是在 AI 生成的输出中使用的文件。

  • 何时包含:当 Skill 需要在最终输出中使用的文件时
  • 示例assets/logo.png 用于品牌资产,assets/slides.pptx 用于 PowerPoint 模板
  • 用例:模板、图像、图标、样板代码、字体、示例文档

打包 Skill

Skill 开发完成后,需要打包成可分发的 .skill 文件:

# 方法 1:使用 package_skill.py(推荐)
python3 /opt/openclaw/skills/skill-creator/scripts/package_skill.py \
  ~/.openclaw/workspace/skills/my-skill

# 方法 2:手动打包(zip 格式)
cd ~/.openclaw/workspace/skills
zip -r my-skill.skill my-skill/ -x "*.git*" "*.pyc" "__pycache__/*"

打包脚本会:

  1. 自动验证 Skill,检查:

    • YAML frontmatter 格式和必需字段
    • Skill 命名约定和目录结构
    • 描述完整性和质量
    • 文件组织和资源引用
  2. 打包 Skill(如果验证通过),创建名为 my-skill.skill 的 .skill 文件

.skill 文件格式:带 .skill 扩展名的 zip 文件

安全限制:符号链接会被拒绝,打包失败

如何使用 Skill

安装 Skill

# 方法 1:复制到 workspace
cp -r my-skill ~/.openclaw/workspace/skills/

# 方法 2:解压 .skill 文件
unzip my-skill.skill -d ~/.openclaw/workspace/skills/

使用 Skill

Skill 安装后,OpenClaw 会自动加载。直接向 AI 提问即可触发 Skill:

用户:"发布一篇 WordPress 文章"
AI:[自动匹配 wordpress-publish Skill]
AI:"我来帮你发布文章。请提供:
1. 文章标题
2. 文章内容
3. 分类和标签"

Skill 开发最佳实践

命名规范

  • 仅使用小写字母、数字和连字符
  • 将用户提供的标题规范化为连字符格式(例如:”Plan Mode” → plan-mode
  • 生成不超过 64 个字符的名称
  • 优先使用简短的动词引导短语
  • 按工具命名以提高清晰度(例如:gh-address-commentslinear-address-issue
  • Skill 文件夹名称与 Skill 名称完全一致

编写指南

Frontmatter

  • name:Skill 名称
  • description:这是 Skill 的主要触发机制,帮助 AI 理解何时使用 Skill
    • 包含 Skill 做什么以及何时使用的具体触发器/上下文
    • 将所有”何时使用”信息放在这里——而不是正文中
    • 示例:description: "全面的文档创建、编辑和分析,支持修订模式、评论、格式保留和文本提取。当需要处理专业文档 (.docx 文件) 时用于:(1) 创建新文档,(2) 修改内容,(3) 处理修订模式,(4) 添加评论"

正文

  • 始终使用命令式/不定式形式
  • 保持简洁(<500 行)
  • 使用表格和代码块提高可读性
  • 包含具体示例

不要包含的内容

Skill 只应包含直接支持其功能的基本文件。不要创建额外的文档或辅助文件,包括:

  • README.md
  • INSTALLATION_GUIDE.md
  • QUICK_REFERENCE.md
  • CHANGELOG.md

Skill 只应包含 AI 执行工作所需的信息。它不应包含关于创建过程的辅助上下文、设置和测试程序、面向用户的文档等。

迭代优化

Skill 创建后,根据实际使用进行迭代:

迭代工作流:

  1. 在真实任务上使用 Skill
  2. 注意困难或低效之处
  3. 确定如何更新 SKILL.md 或捆绑资源
  4. 实施更改并再次测试

参考资料

常见问题

Skill 不生效怎么办?

  1. 检查 Skill 是否在正确的目录(~/.openclaw/workspace/skills/
  2. 检查 SKILL.md 的 frontmatter 格式是否正确
  3. 重启 OpenClaw Gateway
  4. 检查 description 是否清晰描述了使用场景

如何调试 Skill?

  1. 查看 Gateway 日志
  2. 使用 openclaw skills list 查看已加载的 Skill
  3. 检查 AI 是否正确匹配到 Skill

Skill 可以分享吗?

可以!打包成 .skill 文件后,可以:

  • 通过邮件/聊天分享给其他人
  • 上传到 ClawHub 社区
  • 发布到 GitHub

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注