OpenClaw 自带一堆技能,查天气、找 GitHub、管 Discord,装上就能用。但用一阵你就会发现:真正卡脖子的,是那些「只有你的工作流才有的活」——比如把后台导出的报表整理成固定格式、每天汇总三个来源的数据发到群里。现成技能没有,你得自己写。
好消息是,OpenClaw 的自定义技能开发门槛低到离谱:不用 SDK、不用框架、不用编译,一个文件夹、一个 Markdown 文件、一个脚本,就是全部。这篇把从写 SKILL.md 到发布 ClawHub 的完整流程捋一遍。
先理解:技能的本质是什么
一个 OpenClaw 技能,就是一个文件夹里放一个 SKILL.md 文件,可选的还有配套脚本。SKILL.md 由两部分组成:YAML frontmatter 定义元信息,Markdown 正文教 Agent「这个技能怎么用、什么时候用」。
你可以把 SKILL.md 理解成一张「菜谱卡」:Agent 接到任务时,先看每张菜谱的描述,找到匹配的,就照着菜谱一步步做。所以技能开发的核心工作,不是写代码,是写清楚这张菜谱——让 Agent 一看就懂、一调就对。
第一步:建目录、写 SKILL.md
技能放在工作区的 skills/ 目录下。建好目录后,写 SKILL.md,最简结构就三行 frontmatter 加正文:
---
name: report-summary
description: 把后台导出的报表整理成固定格式的摘要
---
# 报表摘要技能
当用户要求整理报表时,用 exec 工具运行脚本:
bash {baseDir}/scripts/summarize.sh
三个要点:name 只能用小写字母、数字和连字符;目录名和 frontmatter 的 name 要一致;description 是 Agent 判断「要不要调用这个技能」的依据,要写清楚「干什么」,一句话、别超过 160 字。
第二步:把正文写成「教同事」的口吻
SKILL.md 正文的质量,直接决定 Agent 用得好不好。关键是把调用方法写到「零歧义」:
一是给完整命令。别写「运行脚本」,要写 bash {baseDir}/scripts/summarize.sh 输入文件 输出文件,路径、参数、输出格式全部写清楚。{baseDir} 是技能目录的占位符,Agent 会自动替换成真实路径,不用写死。
二是写「什么时候用、什么时候别用」。加一段 When to Use 说明触发场景,再加一段 When NOT to Use 排除掉不归它管的情况,能明显减少 Agent 的错误调用。
三是写输出格式。脚本返回什么结构、每行什么意思,都交代明白,Agent 才能把结果转成给用户看的自然语言。
第三步:配脚本,把「干活的」交给脚本
SKILL.md 教 Agent「怎么想」,脚本负责「怎么干」。脚本可以用 bash、Python 或任何能执行的程序——OpenClaw 不挑语言,只看能不能跑。脚本里要写好错误处理:输入为空、依赖缺失、请求失败,都要返回清晰的报错,让 Agent 知道怎么处理而不是干瞪眼。
需要 API 密钥的技能,密钥不要写死在脚本里,在 openclaw.json 的 skills.entries 里配置,Agent 调用时自动注入,用完即走。密钥管理的纪律,OpenClaw 怎么接 DeepSeek 等国产大模型 那篇讲模型密钥时也提过,一个道理。
第四步:调试加载,让 Agent 认识新技能
技能放好后,用 openclaw skills list 确认能被识别。OpenClaw 默认会监听技能目录,改了 SKILL.md 下次对话自动生效;如果没生效,重启一下网关,或者新开一个会话。
测试时用两条路:一是直接发一条应该触发技能的消息,看 Agent 有没有正确调用;二是用 /skill 技能名 强制调用,排除掉「Agent 没识别到」的干扰。先单独测脚本,再让 Agent 调,出问题好定位。
如果技能要接外部工具或走 MCP,配置方式和 OpenClaw 怎么接 MCP 工具 是一样的,接好后技能的能力边界会大很多。
进阶:条件门控和 ClawHub 发布
有的技能依赖特定环境(比如必须有某个命令行工具、某个 API 密钥),可以在 frontmatter 里加门控(Gating):requires.bins 要求某些命令存在、requires.env 要求某个环境变量已配置。条件不满足,技能自动不加载,避免 Agent 拿到一个跑不了的技能。
写好了想分享,可以发布到 ClawHub——OpenClaw 的公共技能市场。发布前确认 name、description、门控字段都完整,用 clawhub skill publish ./技能目录 即可。发布不等于「装完不管」,技能要随着工作流变化持续更新,这个维护节奏和 Agent 插件供应链 里说的「先审再装、定期维护」是一致的。
优缺点与适合人群
自定义技能的优点:零门槛、纯文本可版本管理、能把你重复的日常操作一次固化成 Agent 的肌肉记忆。缺点:技能质量完全取决于 SKILL.md 写得清不清楚,写糊了 Agent 就瞎调。
它适合所有「想让 Agent 干自己那摊活」的人:内容运营可以写「自动排版发稿」技能,数据分析师可以写「固定口径出报表」技能,运维可以写「巡检+告警汇总」技能。先从一个 5 步以内的小技能开始,比憋一个宏大框架实用得多。
总结
OpenClaw 自定义技能开发,核心就四步:建目录写 SKILL.md、正文教清楚怎么用、脚本负责干活、调试加载验收,进阶再加条件门控和 ClawHub 发布。记住一句话——技能不是给 Agent 加功能,是把你重复的工作流,变成 Agent 的一次调用。