OpenClaw 自定义 Skill 开发指南

把你的独特工作流封装成 Skill,让 AI 真正替你干活。

⚖️
OpenClaw 的 Skill 系统是它最强大的扩展机制。你可以把任何重复性工作封装成 Skill,让 AI 一键调用。不需要深厚的编程功底,跟着这篇指南就能上手。

为什么要自己写 Skill?

OpenClaw 内置了很多通用 Skill,但每个人的工作流都不一样。自定义 Skill 让你可以:

  • 🎯 封装独特工作流:你公司内部的审批流程、报表格式、数据源,别人的 Skill 不可能覆盖
  • 🔗 对接内部工具:连接公司的 CRM、ERP、OA 系统,让 AI 直接操作你的业务系统
  • 提高执行效率:把 10 步手动操作压缩成一个 Skill 调用,AI 一句话就能完成
  • 🔄 标准化团队协作:团队成员共享同一套 Skill,确保 AI 输出的格式和质量一致
💡举个例子:你每天要从 3 个数据源拉数据、合并、生成 Excel、发邮件给老板。写一个 Skill,以后只需要说「生成今日日报」,全部自动完成。

Skill 架构概览

一个 Skill 的核心结构非常简单,由三个部分组成:

1

声明层(Manifest)

告诉 OpenClaw 这个 Skill 是什么需要什么输入产生什么输出。包括名称、描述、参数定义、权限要求等元信息。

2

执行层(Handler)

Skill 的核心逻辑。接收输入参数,执行具体操作(调 API、读写文件、处理数据),返回结果。支持同步和异步两种模式。

3

生命周期钩子(Hooks)

可选的扩展点:初始化(加载配置、建立连接)、校验(检查输入合法性)、清理(释放资源、关闭连接)。不写也没关系,系统有默认行为。

⚙️输入/输出约定:Skill 的输入是结构化参数(类似函数参数),输出是标准化的结果对象。AI 根据 Manifest 中的描述自动决定何时调用、传什么参数。

实战:构建一个「客户跟进提醒」Skill

我们用一个真实场景来走一遍完整的开发流程:

1

明确需求

场景:销售团队需要 AI 每天检查 CRM 中超过 7 天未联系的客户,生成跟进清单,发送到企业微信群。

  • 输入:天数阈值(默认 7 天)、目标群组 ID
  • 输出:跟进清单(客户名、上次联系时间、建议动作)
  • 权限:需要 CRM API 访问权限、企业微信发送权限
2

编写 Manifest

定义 Skill 的元信息:名称叫 customer-followup,描述清楚功能,声明两个输入参数和它们的类型、默认值。这一步决定了 AI 什么时候会调用你的 Skill。

3

实现 Handler

核心逻辑分三步:① 调用 CRM API 查询超期客户 → ② 用 AI 生成每个客户的跟进建议 → ③ 格式化成消息发送到企业微信。每一步都可以调用 OpenClaw 的内置工具。

4

本地测试

用 OpenClaw 的开发模式加载 Skill,对 AI 说「检查一下超过 3 天没联系的客户」。观察 AI 是否正确识别意图、传入正确参数、返回预期结果。

5

部署上线

测试通过后,将 Skill 安装到生产环境。团队中的任何人都可以通过自然语言触发它。

常见开发模式

大多数自定义 Skill 都属于以下几类:

🌐 API 集成类

对接外部服务的 API,让 AI 可以操作第三方系统。

  • 连接企业微信 / 钉钉 / 飞书,发送消息和通知
  • 对接 Jira / Notion / 飞书多维表格,管理项目和任务
  • 调用支付网关查询订单状态
  • 连接自建的内部 API 服务

📄 文件处理类

批量处理文件、转换格式、提取信息。

  • 批量将 Word 转 PDF 并添加水印
  • 从发票图片中提取金额和日期(结合 OCR)
  • 合并多个 Excel 并生成汇总报表
  • 扫描目录中的文件并按规则整理归档

🔔 通知和报告类

定时生成报告或在特定条件下发出通知。

  • 每日站会摘要:汇总昨天的 Git 提交和 Jira 变更
  • 异常告警:监控指标超阈值时自动通知
  • 周报生成:从多个数据源拉取数据并格式化

🔄 数据处理类

ETL、数据清洗、格式转换等数据密集型任务。

  • 从数据库导出 → 清洗 → 写入另一个系统
  • CSV/JSON 格式互转并做数据校验
  • 多源数据合并去重

测试和调试技巧

⚠️黄金法则:先让 Skill 在最简单的场景下跑通,再逐步加功能。不要一上来就写复杂逻辑。
  • 🐛 开发模式运行:加载 Skill 时开启 debug 模式,可以看到 AI 传入的完整参数和 Skill 返回的完整结果
  • 🧪 模拟输入测试:准备几组典型输入(正常值、边界值、异常值),逐个验证 Skill 的行为
  • 📋 检查 Manifest 描述:如果 AI 不调用你的 Skill,通常是 Manifest 中的描述不够清晰。试着用更自然的语言描述功能
  • 🔍 日志追踪:在 Handler 中添加日志输出,追踪每一步的执行情况
  • ⏱️ 超时处理:外部 API 调用一定要设置超时,避免 Skill 卡死
  • 🛡️ 错误处理:返回清晰的错误信息,而不是让 Skill 直接崩溃。AI 需要错误信息来决定下一步怎么做

发布和分享

写好的 Skill 不要藏着,分享给社区让更多人受益:

  • 📦 打包:按照标准目录结构组织文件,包含 Manifest、Handler、README、示例配置
  • 审核:提交到 OpenClaw Skill 仓库前,确保代码无硬编码密钥、有基本的错误处理、描述清晰
  • 🌍 发布:通过 PR 提交到官方 Skill 仓库,审核通过后所有用户可以一键安装
  • 🏢 企业内部分享:也可以搭建私有 Skill 仓库,仅在团队内部使用
💡好的 Skill 名字很重要:名字应该让人一眼就知道它干什么。daily-report-generatortool-v2-final 好一万倍。AI 也靠名字和描述来决定是否调用。

开发最佳实践清单

  • 单一职责:一个 Skill 只做一件事。「发邮件」和「生成报表」应该是两个 Skill,而不是一个
  • 参数有默认值:尽量给参数设默认值,减少 AI 需要确认的信息
  • 描述写给 AI 看:Manifest 中的描述是写给 AI 的,要让 AI 能判断什么场景下该调用
  • 幂等设计:同样的输入执行多次,结果应该一样。避免重复发邮件、重复创建记录
  • 敏感信息用环境变量:API Key、密码等绝对不要硬编码在 Skill 里
  • 返回有意义的结果:不要只返回「成功」,返回具体做了什么(如「已发送 3 封邮件给 张三、李四、王五」)

相关搜索

OpenClaw Skill 开发 · 自定义 AI 技能 · OpenClaw 插件开发 · AI Agent 扩展开发 · OpenClaw Skill 发布 · 企业 AI 自动化

🔗相关阅读:Skill 使用指南 · vs Dify · vs Coze · vs Claude Code