OpenClaw
使用场景高级20 min

如何构建和审核 OpenClaw Skills

学习如何创建自定义 OpenClaw Skills,审核社区 Skill 的质量和安全性,以及将复杂任务拆解为可复用的 Skill 链。

最近更新: 2026-03-31

你将搭建什么

一套 Skill 开发和审核工作流:

  1. 构建自定义 Skill — 创建满足特定需求的 OpenClaw Skill
  2. 审核社区 Skill — 检查 ClawHub 上的 Skill 的质量、安全性和可靠性
  3. 拆解复杂任务 — 将多步骤工作流分解为可复用的 Skill 链
  4. 迭代改进 — 通过 AI 辅助反馈来测试、调试和优化 Skill

完成本教程后,你可以创建生产级质量的 Skill,并自信地评估任何 Skill 的可用性。

为什么要构建自定义 Skill

ClawHub 上有几百个社区 Skill,但有时你需要更针对性的方案:

  • 内部工具 — 你公司的 API、看板和工作流不在公开 Skill 覆盖范围内
  • 定制集成 — 使用小众工具或私有系统,需要自定义连接器
  • 工作流优化 — 将多个 Skill 合并为一个精简的 Skill,节省时间
  • 质量控制 — 自己构建的 Skill,你完全清楚它做了什么
  • 竞争优势 — 独特的自动化工作流,竞争对手没有

为什么安装前要审核 Skill

并非 ClawHub 上的每个 Skill 都是生产级的。安装社区 Skill 前需要注意:

  • 安全性 — Skill 可能以你意想不到的方式访问文件系统、网络或凭据
  • 质量 — 有些 Skill 是原型或概念验证,不适合生产使用
  • 维护 — 废弃的 Skill 可能无法适配新版 OpenClaw
  • 依赖 — Skill 可能需要你没有的外部服务或 API 密钥
  • 权限 — 在授予访问之前,了解 Skill 请求了哪些权限

前置条件

  • OpenClaw 已安装并配置好(快速上手指南
  • 熟悉 YAML 和基础脚本编写
  • Node.js 18+

第 1 步:安装 Skill 开发工具

bash
# 1. Skill Builder — 引导你创建结构良好的 Skill
npx clawhub@latest install skill-builder

# 2. Skill Reviewer — 质量和结构分析
npx clawhub@latest install skill-reviewer

# 3. Task Decomposer — 将复杂任务拆解为 Skill 链
npx clawhub@latest install task-decomposer

第 2 步:创建你的第一个自定义 Skill

理解 Skill 结构

OpenClaw Skill 以 SKILL.md 文件为核心——这是告诉 AI Agent 如何执行任务的指令文档。Skill Builder 会引导你按照最佳实践创建结构良好的 Skill。

典型的 Skill 结构如下:

my-custom-skill/
  ├── SKILL.md             # Agent 的核心指令
  ├── [topic].md           # 按需加载的详细文件
  ├── references/          # 重量级文档和示例
  └── scripts/             # 可选的自动化脚本

编写 SKILL.md

SKILL.md 是 Skill 的核心。安装 Skill Builder 后,让 OpenClaw 帮你编写:

Help me create a skill that searches a custom API for products.
The API is at https://api.example.com/search and requires an API key.

Skill Builder 会引导你完成:

  • 模块化结构 — 保持主 SKILL.md 聚焦,详细内容放到独立文件
  • 渐进式加载 — 只在 Agent 需要时加载详细文件
  • Token 效率 — 最小化上下文窗口占用
  • 明确的输入/输出 — 定义 Skill 期望什么、返回什么

SKILL.md 示例

markdown
# Product Search Skill

Search the product catalog API for items matching a query.

## Configuration
- `API_URL`: Base URL of the product API
- `API_KEY`: API key for authentication (set as environment variable)

## Usage
When the user asks to search for products, use the API:

GET {API_URL}/search?q={query}
Authorization: Bearer {API_KEY}

## Response Format
Return results as a structured list with name, price, and URL for each product.

测试 Skill

在本地安装并测试:

bash
clawhub install ./my-custom-skill

然后在 OpenClaw 中使用它,验证是否按预期工作。

第 3 步:审核社区 Skill

安装任何 ClawHub 上的 Skill 之前,先审核:

bash
clawhub run skill-reviewer --skill "clawhub-username/skill-name"

审核器分析 Skill 的 SKILL.md 和支持文件,检查:

=== Skill 审核:awesome-slack-bot ===

## 结构评估
✓ SKILL.md 组织清晰,分节合理
✓ 描述具体且可操作
✓ 输入/输出预期已文档化
✓ 包含使用示例
⚠ 缺少按需加载的详细文件——所有内容集中在一个大 SKILL.md 中

## 质量评分
✓ Frontmatter 完整(名称、描述、版本)
✓ 指令 Token 效率高——使用了渐进式加载
✓ 包含错误处理指导
⚠ 缺少限流指导——高负载下可能触发 API 限制

## 描述质量:8.5/10
建议:结构良好的 Skill,可以使用

审核要点

危险信号

  • Skill 请求了不该需要的权限(比如搜索类 Skill 请求文件写入权限)
  • 没有测试或文档
  • 超过 6 个月没有更新
  • 源码中硬编码了 URL 或凭据
  • 混淆或压缩的代码

良好信号

  • 权限声明与实际使用一致
  • 全面的测试覆盖
  • 积极维护和社区互动
  • 透明的源代码
  • 完善的配置文档

第 4 步:拆解复杂任务

Task Decomposer Skill 帮助将复杂请求拆解为可执行的步骤。让 OpenClaw:

Decompose this task: Monitor competitor pricing pages daily and alert me when prices change

输出示例:

=== 任务拆解 ===

任务:每日监控竞品定价页面,价格变化时告警

## Skill 链

1. **browser-use** — 访问每个竞品的定价页面
   输入:竞品 URL 列表
   输出:页面内容 / 截图

2. **web-scraper** — 从每个页面提取定价数据
   输入:页面内容
   输出:结构化定价数据 (JSON)

3. **file_read** — 加载昨天的定价数据用于对比
   输入:存储数据的文件路径
   输出:历史定价数据

4. **summarize** — 对比当前和历史定价,识别变化
   输入:当前数据 + 历史数据
   输出:变化报告

5. **telegram**(或 email)— 检测到变化时发送告警
   输入:变化报告
   输出:通知已发送

## 所需 Skills
- browser-use (已安装: yes)
- web-scraper (已安装: yes)
- summarize (已安装: yes)
- telegram (已安装: no — 安装命令: npx clawhub@latest install telegram)

## 预计搭建时间:20 分钟

从拆解到工作流

将拆解结果转化为可复用的工作流:

yaml
# .openclaw/price-monitor.yml
name: competitor-price-monitor
schedule: "0 9 * * *"
steps:
  - skill: browser-use
    action: navigate
    urls:
      - "https://competitor1.com/pricing"
      - "https://competitor2.com/pricing"

  - skill: web-scraper
    action: extract
    format: json
    target: "pricing tables"

  - skill: summarize
    action: compare
    current: "{{step_2.output}}"
    previous: "./data/last-pricing.json"

  - skill: telegram
    action: send
    condition: "changes_detected"
    message: "{{step_3.output}}"

  - action: save
    data: "{{step_2.output}}"
    path: "./data/last-pricing.json"

第 5 步:发布你的 Skill

Skill 准备好后,发布到 ClawHub:

bash
clawhub publish my-custom-skill

发布前确保:

  • SKILL.md 完整且结构良好
  • 描述具体且可操作
  • 没有硬编码的密钥
  • 版本号遵循 semver 规范

常见问题排查

Skill 行为不符合预期

  • 检查 SKILL.md 指令是否清晰具体
  • 用不同的提示测试,看 Agent 是否正确理解 Skill
  • 参考 Skill Builder 的指南了解常见的指令编写陷阱

执行时提示权限不足

  • 审查 Skill 访问了哪些资源——文件、网络、凭据
  • 确保安装时授予了所需权限
  • 某些权限需要在首次运行时明确用户批准

Skill Reviewer 误报

  • 审核器偏保守——有疑虑的地方都会标记
  • 查看具体的警告,判断是否适用于你的场景
  • 不是每个警告都是真正的问题——用你的判断力

发布的 Skill 没有出现在 ClawHub

  • 发布后可能需要几分钟同步
  • 确认你的 ClawHub 账号已验证
  • 检查 Skill 名称是否与已有 Skill 冲突

常见问题

不需要。大多数 OpenClaw Skill 围绕 `SKILL.md` 文件构建——一份 Markdown 文档,指导 AI Agent 如何执行任务。只需写清楚指令和 API 文档就能创建有效的 Skill。如果需要更复杂的自动化,可以在 SKILL.md 旁边放脚本(Python、Bash 等),但这是可选的。

可以。Skill 可以在本地安装而不发布。把 Skill 目录放在项目中或私有仓库里,用本地路径安装:`clawhub install ./my-custom-skill`。这在公司内部集成中很常见——这些 Skill 不应该公开。

在 Skill 元数据中升版本号,更新 README 中的变更日志,然后再次运行 `clawhub publish`。ClawHub 管理版本——旧版本的用户不会自动更新,除非他们运行 `clawhub update`。

遵循最小权限原则。只请求 Skill 实际需要的权限。常见的权限组合:仅网络(API 集成)、网络 + 文件读取(数据处理)、网络 + 凭据(需认证的 API)。除非 Skill 需要把输出保存到磁盘,否则避免请求文件写入权限。

在 SKILL.md 中包含限流指导——指导 Agent 在调用 API 时实现指数退避。对于和限流 API 交互的 Skill,在 README 中记录限流上限让用户知情,并在附带的脚本中包含重试逻辑。

可以——这是最强大的模式之一。用 YAML 工作流定义把 Skill 串联起来,或者用 Task Decomposer 识别合适的 Skill 链。产出的工作流可以保存为一个新 Skill,内部委托给其他 Skill。这是构建高级自动化的典型方式。

相关场景