如何构建和审核 OpenClaw Skills
学习如何创建自定义 OpenClaw Skills,审核社区 Skill 的质量和安全性,以及将复杂任务拆解为可复用的 Skill 链。
最近更新: 2026-03-31
你将搭建什么
一套 Skill 开发和审核工作流:
- 构建自定义 Skill — 创建满足特定需求的 OpenClaw Skill
- 审核社区 Skill — 检查 ClawHub 上的 Skill 的质量、安全性和可靠性
- 拆解复杂任务 — 将多步骤工作流分解为可复用的 Skill 链
- 迭代改进 — 通过 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 开发工具
# 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 示例
# 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
在本地安装并测试:
clawhub install ./my-custom-skill
然后在 OpenClaw 中使用它,验证是否按预期工作。
第 3 步:审核社区 Skill
安装任何 ClawHub 上的 Skill 之前,先审核:
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 分钟
从拆解到工作流
将拆解结果转化为可复用的工作流:
# .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:
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。这是构建高级自动化的典型方式。