OpenClaw Skills 开发教程

OpenClaw 学习笔记

分类:配置与定制

核心主题:OpenClaw Skill 开发流程与语法详解

主要内容:全面介绍 OpenClaw Skills 的完整开发流程,涵盖 SKILL.md 语法规范、触发条件配置、测试调试方法、ClawHub 市场发布以及优先级管理策略。适合从零开始学习 Skill 开发的开发者。

关键词:OpenClaw, Skill开发, SKILL.md, ClawHub, AI Agent, 技能触发, 配置与定制, Claude Code

一、Skill 开发流程概述

OpenClaw 的 Skill 系统允许开发者创建可复用的专业技能,供 AI Agent 在对话中动态加载和调用。Skill 本质上是一份结构化的指令文档,它告诉 AI 如何执行特定任务。

1.1 什么是 OpenClaw Skill

OpenClaw Skill 是一组预定义的指令和配置,封装了特定领域的知识和操作流程。当用户触发某个 Skill 时,系统会将该 Skill 的指令注入到 AI 的上下文中,使 AI 能够按照预定义的流程执行任务。

Skill 的核心要素

  • 名称与标识:每个 Skill 有唯一的名称标识
  • 触发条件:定义何时自动激活该 Skill
  • 指令内容:告诉 AI 如何执行任务的具体指导
  • 依赖配置:所需的工具、权限和环境配置
  • 元数据:版本号、作者、描述等信息

1.2 开发流程概览

需求分析 编写 SKILL.md 配置触发条件 本地测试 调试优化 发布到 ClawHub

整个流程从需求分析开始,经过编写 SKILL.md 文件、配置触发条件、本地测试和调试优化,最后发布到 ClawHub 技能市场供他人使用。

1.3 环境准备

开始 Skill 开发前需要准备以下环境:

要点提示:开发 Skill 不需要掌握复杂的编程语言,核心是编写结构化的 Markdown 文档。SKILL.md 文件使用 YAML front matter 和标准 Markdown 语法,学习门槛较低。

二、SKILL.md 文件完整语法

SKILL.md 是 OpenClaw Skill 的核心文件,它使用 YAML front matter 定义元数据,使用 Markdown 正文定义指令内容。

2.1 文件结构总览

---
# YAML Front Matter:定义元数据和配置
name: skill-name
version: 1.0.0
description: Skill 描述信息
author: 作者名称
trigger:
  patterns:
    - 触发关键词模式1
    - 触发关键词模式2
dependencies:
  tools:
    - tool-name-1
    - tool-name-2
  permissions:
    - permission-name
---

## 正文部分:Skill 指令内容
// 使用 Markdown 格式编写详细的执行指令
// 这部分内容会在 Skill 被触发时注入到 AI 上下文中

2.2 Front Matter 字段详解

字段 必填 说明 示例
name Skill 唯一名称,使用小写字母和连字符 my-awesome-skill
version 语义化版本号 1.0.0
description 简短描述 Skill 功能,用于搜索和展示 自动生成学习笔记 HTML
author 作者名称或 ID jiaoi-tech
trigger 触发条件配置,定义何时自动激活 见第四章
dependencies 所需的工具和权限 tools: [bash, read]
tags 标签数组,用于分类和搜索 [学习, 自动化]

2.3 正文部分编写规范

正文部分使用标准 Markdown 语法,包含以下推荐结构:

## 概述
简要说明本 Skill 的用途和适用场景。

## 执行步骤
详细列出 AI 需要执行的操作步骤。

## 注意事项
列出执行过程中需要特别注意的事项。

## 输出规范
定义 Skill 执行结果的输出格式和要求。

编写技巧

  • 使用清晰的层级标题组织内容
  • 步骤编号要明确,方便 AI 按顺序执行
  • 关键术语首次出现时给出解释
  • 避免歧义性描述,指令要具体可操作
  • 善用列表和表格结构化信息

2.4 完整的 SKILL.md 示例

---
name: generate-learning-note
version: 1.0.0
description: 从原始文本生成结构化学习笔记 HTML 文件
author: jiaoi-tech
trigger:
  patterns:
    - 生成学习笔记
    - 学习笔记
    - 创建笔记
dependencies:
  tools:
    - Read
    - Write
    - Bash
  permissions:
    - files:read
    - files:write
---

## 概述
本 Skill 用于从原始文本文件生成结构化的学习笔记 HTML 文件。
适用于中医药、编程教程、读书笔记等多种学习场景。

## 执行步骤
1. 读取原始文本文件
2. 分析内容结构,提取标题、日期和正文
3. 读取模板 HTML 文件
4. 替换模板中的占位符
5. 输出最终 HTML 文件

## 注意事项
- 确保输出目录存在
- 使用正确的时间戳生成文件名
- 保留模板中的所有交互功能

三、从零编写第一个 Skill

本节手把手带你创建第一个 OpenClaw Skill,从项目初始化到完成一个可用的技能。

3.1 创建 Skill 项目目录

每个 Skill 应该放在独立的目录中,推荐的项目结构如下:

my-skill/
├── SKILL.md          # Skill 主文件(必需)
├── assets/           # 资源文件目录(可选)
│   ├── icon.png      # Skill 图标
│   └── samples/      # 示例文件
└── tests/            # 测试目录(可选)
    └── test-cases.md # 测试用例

3.2 编写 TIL.md 技能:将学习转化为技能

我们以一个实用的 "TIL(Today I Learned)记录 Skill" 为例,完整演示创建过程。

步骤一:创建项目目录

mkdir -p ~/openclaw-skills/til-recorder/assets
cd ~/openclaw-skills/til-recorder

步骤二:编写 SKILL.md

---
name: til-recorder
version: 1.0.0
description: 记录日常学习收获,生成结构化的 TIL 笔记
author: your-name
tags:
  - 学习
  - 笔记
  - 知识管理
trigger:
  patterns:
    - 记录今天学到的
    - TIL
    - 今天学到了
---

## 概述
TIL Recorder 帮助你快速记录每天学到的知识点,形成结构化的个人知识库。
每天记录一个小知识点,一年后你将拥有 365 条知识沉淀。

## 执行流程
当你收到用户的 TIL 请求时,按照以下流程执行:

### 1. 信息收集
- 询问用户今天学到了什么
- 确认知识点所属的分类(技术、生活、健康等)
- 了解知识点的来源(书籍、课程、实践等)

### 2. 内容结构化
将用户提供的信息组织为:
- 标题:简洁概括知识点
- 分类:所属领域标签
- 核心内容:1-3句话概括
- 详细说明:展开阐述
- 来源:学习来源
- 思考:个人理解和感悟

### 3. 文件生成
- 使用当前日期作为文件名,格式为 til-yyyy-mm-dd.md
- 将结构化内容写入 TIL 目录
- 更新索引文件

## 输出格式
```markdown
# TIL: [标题]

**日期**:yyyy-mm-dd
**分类**:[分类标签]
**来源**:[来源]

## 核心内容
[1-3句话概括]

## 详细说明
[展开阐述]

## 思考
[个人理解和感悟]
```

步骤三:验证 SKILL.md

openclaw skill validate ~/openclaw-skills/til-recorder
验证命令说明:openclaw skill validate 会检查 SKILL.md 的语法正确性、字段完整性和依赖配置的可用性。如果验证通过,会输出绿色提示;如果存在错误,会明确指示问题位置和修改建议。

四、Skill 触发条件配置

触发条件是 Skill 的"开关",决定了在什么情况下 AI 会自动加载并激活该 Skill。合理的触发配置能大幅提升用户体验。

4.1 触发机制原理

当用户发送消息时,OpenClaw 会将消息内容与所有已安装 Skill 的触发模式进行匹配。一旦匹配成功,对应的 Skill 指令就会被注入到 AI 的上下文窗口中。

匹配流程

  1. 用户输入消息
  2. 系统提取消息中的关键词和模式
  3. 与所有 Skill 的 trigger.patterns 逐一匹配
  4. 命中后加载匹配 Skill 的指令到上下文
  5. 如果命中多个 Skill,按优先级排序加载

4.2 触发模式类型

类型 语法 说明 示例
关键词匹配 纯文本 消息中包含指定关键词即触发 生成学习笔记
通配符匹配 glob 模式 使用 * 和 ? 通配符匹配模式 生成*笔记
正则匹配 /regex/ 使用正则表达式匹配消息 /笔记|note|learn/i
命令匹配 /命令名 匹配以斜杠开头的命令 /til

4.3 触发条件配置示例

示例一:简单关键词触发

trigger:
patterns:
  - 生成学习笔记
  - 学习笔记
  - 创建笔记
matchType: any       # 任意模式匹配即触发

示例二:精准命令触发

trigger:
patterns:
  - /til
  - /til-record
matchType: exact     # 需要完全匹配

示例三:高级组合触发

trigger:
patterns:
  - 部署*项目            # 通配符:部署任何项目
  - /deploy              # 命令:/deploy
  - /(上线|发布|推送)到.*服务器/  # 正则
matchType: any
contextRequired: true  # 需要确认上下文后才触发

注意事项

  • 避免设置过于宽泛的触发模式,防止误触发
  • 正则表达式注意性能,避免复杂的回溯
  • 命令模式(/开头)最适合精确触发的场景
  • 生产环境中建议先从关键词模式开始,逐步优化

五、Skill 测试与调试

测试是确保 Skill 质量的关键步骤。OpenClaw 提供了本地测试和调试工具,帮助开发者在发布前验证 Skill 的行为。

5.1 本地测试环境

在开发阶段,可以通过以下方式在本地测试 Skill:

# 验证 SKILL.md 语法
openclaw skill validate ./my-skill

# 在本地模拟环境中运行 Skill
openclaw skill run ./my-skill --input "测试输入内容"

# 查看 Skill 的完整渲染输出
openclaw skill render ./my-skill

5.2 测试用例编写

编写全面的测试用例是保证 Skill 质量的重要手段。建议覆盖以下场景:

## test-cases.md

### 测试用例 1:正常触发
- 用户输入:"帮我生成学习笔记"
- 预期结果:Skill 被触发,开始询问笔记内容
- 实际结果:[测试后填写]

### 测试用例 2:边缘情况
- 用户输入:"笔记"(极短输入)
- 预期结果:Skill 不被触发(或触发后引导用户提供详细信息)
- 实际结果:[测试后填写]

### 测试用例 3:特殊字符
- 用户输入:"生成/*笔记"(含特殊字符)
- 预期结果:正常处理,不报错
- 实际结果:[测试后填写]

5.3 调试技巧

调试建议

  • 启用详细日志:使用 --verbose--debug 标志查看完整执行日志
  • 逐步执行:复杂 Skill 应拆分为多个步骤,逐步骤测试
  • 检查上下文注入:确认 Skill 指令正确注入到 AI 上下文
  • 验证依赖可用:运行前确保所有依赖的工具和权限可用
  • 回滚测试:确认 Skill 在出错时能优雅降级

5.4 常见测试问题

问题 可能原因 解决方案
Skill 未被触发 触发模式不匹配或权限不足 检查触发模式配置和 dependencies
指令执行不完整 上下文窗口不足或指令过长 精简指令内容,分拆为多个 Skill
工具调用失败 缺少权限或工具未配置 在 dependencies 中添加缺失的权限
输出格式异常 指令中输出规范不明确 在 SKILL.md 中明确定义输出格式
测试黄金法则:每次修改 SKILL.md 后都要重新运行验证命令。一个语法错误就可能导致 Skill 完全不可用。建议将验证步骤集成到 CI/CD 流程中。

六、发布到 ClawHub 技能市场

ClawHub 是 OpenClaw 官方的技能市场,开发者可以在上面发布、分享和发现 Skill。发布后的 Skill 可以被其他用户搜索、安装和使用。

6.1 发布前准备

在发布之前,请确保你的 Skill 满足以下要求:

6.2 发布流程

# 1. 登录 ClawHub
openclaw hub login

# 2. 打包 Skill
openclaw hub pack ./my-skill -o ./dist

# 3. 发布到 ClawHub
openclaw hub publish ./dist/my-skill-1.0.0.osk

# 4. 验证发布成功
openclaw hub search my-skill

6.3 版本管理与更新

发布后的 Skill 需要遵循版本管理规范:

版本号变更 适用场景 示例
主版本号 不兼容的 API 修改或重大重构 1.0.0 → 2.0.0
次版本号 新增功能,向后兼容 1.0.0 → 1.1.0
修订号 问题修复,行为不变 1.0.0 → 1.0.1
# 更新已发布的 Skill
openclaw hub update ./my-skill --version 1.1.0

# 查看已发布的 Skill
openclaw hub list

# 下架 Skill(不再维护时)
openclaw hub unpublish my-skill

6.4 Skill 文档编写

好的文档能帮助用户理解和使用你的 Skill:

发布技巧

  • 选择合适的上架分类,方便用户发现
  • description 控制在 50-100 字为宜,包含关键词利于搜索
  • 首次发布前邀请同事或朋友进行 Beta 测试
  • 关注用户反馈,定期更新优化

七、Skill 优先级管理

当用户安装多个 Skill 时,可能会出现多个 Skill 同时匹配同一输入的情况。优先级管理解决了这一冲突问题,确保最相关的 Skill 被优先加载。

7.1 优先级机制

每个 Skill 可以设置一个优先级数值,优先级高的 Skill 在匹配时会被优先考虑和执行。当多个 Skill 同时匹配时,系统会按优先级从高到低排序加载。

优先级规则

  • 优先级范围:1(最低)到 100(最高)
  • 默认优先级:50
  • 相同优先级时,按安装时间排序(后安装的优先)
  • 优先级可以设置为小数,实现精细控制(如 50.5)

7.2 配置优先级

---
name: critical-operation-skill
version: 1.0.0
priority: 90         # 高优先级,确保优先执行
description: 关键操作 Skill,需要优先响应
trigger:
  patterns:
    - 紧急
    - 立刻
---
---
name: background-helper
version: 1.0.0
priority: 20         # 低优先级,仅当高优先级不匹配时使用
description: 后台辅助 Skill,默认情况下使用
trigger:
  patterns:
    - 帮助
    - 辅助
---

7.3 优先级管理策略

场景 推荐优先级 说明
安全相关 Skill 90-100 涉及系统安全、数据保护的操作
核心功能 Skill 70-89 用户日常使用的主要技能
普通工具 Skill 30-69 常规辅助性技能
后台/备选 Skill 1-29 兜底处理、备选方案

优先级冲突风险

当多个高优先级 Skill(80 以上)设置相同的触发模式时,可能会导致优先级 "战争",即多个 Skill 反复争夺控制权。建议:

  • 为高优先级 Skill 使用精确的触发模式
  • 避免多个 Skill 使用完全相同的触发关键词
  • 定期检查和调整已安装 Skill 的优先级

7.4 动态优先级调整

OpenClaw 支持在运行时动态调整 Skill 优先级,适用于需要根据上下文临时提升或降低优先级的场景:

# 临时提升 Skill 优先级
openclaw skill prioritize my-skill --set 85

# 查看当前所有 Skill 的优先级
openclaw skill list --sort priority

# 将 Skill 优先级重置为默认值
openclaw skill prioritize my-skill --reset

八、常见问题与最佳实践

基于社区经验和官方文档,本章总结了 Skill 开发中的常见问题、解决方案和最佳实践。

8.1 常见问题

问题一:Skill 触发不准确

现象:用户输入明显相关的内容,但 Skill 没有被触发。

排查步骤

  1. 检查 trigger.patterns 是否正确配置
  2. 确认 matchType 是否设置正确(any/exact/all)
  3. 验证是否有其他 Skill 的优先级更高并拦截了匹配
  4. 使用 openclaw skill debug --match "测试文本" 测试匹配

问题二:Skill 指令未生效

现象:Skill 成功触发,但 AI 没有按照指令执行。

可能原因

解决方案:精简指令、使用明确的步骤编号、确保所有依赖可用。

问题三:Skill 安装失败

现象:从 ClawHub 安装 Skill 时出错。

排查步骤

8.2 最佳实践

设计原则
  • 单一职责:一个 Skill 只做一件事,做好一件事
  • 指令明确:使用肯定句、祈使句,避免模棱两可的表述
  • 渐进式引导:复杂任务拆分为多个步骤,逐步引导用户
  • 优雅降级:当依赖不可用时,Skill 应能提供替代方案
  • 用户可控:重要操作前询问用户确认

编写建议

  • SKILL.md 的正文部分使用中文编写,确保 AI 能准确理解
  • 步骤之间使用空行分隔,提高可读性
  • 关键术语在首次出现时解释定义
  • 使用具体示例说明期望的输出格式
  • 定期更新 SKILL.md 以适配 OpenClaw 的新版本特性

8.3 性能优化

优化方向 建议 预期效果
指令长度 控制在 500 字以内 减少上下文占用,提升响应速度
触发模式 使用精确的关键词而非宽泛的正则 降低误触发率,提升匹配准确性
依赖管理 只声明必需的依赖 减少权限请求,加快加载速度
版本迭代 小步快跑,频繁发布小版本更新 降低单次更新的风险

8.4 安全注意事项

九、核心要点总结

技能开发核心要点

  1. SKILL.md 是核心:所有的 Skill 逻辑都定义在 SKILL.md 文件中,掌握 YAML front matter 和 Markdown 语法是基础中的基础。
  2. 触发条件至关重要:合理的触发模式能让 Skill 在正确的时间被激活。从关键词匹配开始,逐步优化到更精确的模式。
  3. 测试不可跳过:使用 openclaw skill validate 和本地测试环境验证 Skill 行为,确保发布前质量达标。
  4. 优先级管理:合理设置优先级避免 Skill 冲突,核心功能 Skill 设置为 70-89,后台辅助 Skill 保持在 1-29。
  5. 发布流程规范:遵循语义化版本规范,编写完善的文档,首次发布前进行 Beta 测试。
  6. 单一职责原则:每个 Skill 专注于一个特定领域,避免创建"全能型"Skill。
  7. 持续优化:关注用户反馈,定期更新迭代,适配 OpenClaw 的新版本特性。

Skill 开发关键命令速查

命令 用途
openclaw skill validate ./path 验证 SKILL.md 语法
openclaw skill run ./path --input "..." 本地运行测试
openclaw skill render ./path 查看渲染后的完整指令
openclaw hub publish ./file.osk 发布到 ClawHub
openclaw hub search keyword 搜索 ClawHub 上的 Skill
openclaw skill prioritize name --set N 设置 Skill 优先级
openclaw skill list --sort priority 按优先级列出所有 Skill
结语:OpenClaw Skills 为 AI Agent 提供了强大的可扩展能力。掌握 Skill 开发不仅能提升个人工作效率,还能通过 ClawHub 社区与全球开发者分享你的专业技能。从今天开始,创建你的第一个 Skill 吧!