自定义 Skill 是把你的团队经验写进 Agent 的方式。它可以是一套工具说明、一个固定操作流程、一组安全规则,或者某个内部系统的使用指南。
一个 Skill 最少需要什么?
一个 Skill 是一个文件夹,里面至少有 SKILL.md:
markdown
---
name: hello_world
category: tools
summary: Say hello with a simple workflow
---
# Hello World Skill
当用户要求打招呼时,使用指定方式返回问候语。最重要的是 frontmatter 中的 name 和描述字段。描述要写清楚触发场景,因为 Agent 会根据它判断什么时候加载技能。
技能目录放哪里?
常见位置:
- workspace 的
skills/:当前 Agent 专用 ~/.openclaw/skills/:本机共享~/.agents/skills/:个人通用技能
如果是项目专用流程,放 workspace;如果是通用工具说明,放共享目录。
description 怎么写?
description 不是广告语,而是触发条件。
不好的写法:
text
一个很棒的工具技能更好的写法:
text
Use when the user asks to publish translated technical articles through the claudecode.xyz article API.写清“什么时候用”,比写“这个技能很强”重要得多。
metadata 依赖
如果技能需要某个命令或环境变量,应写进 metadata:
markdown
metadata:
{ "openclaw": { "requires": { "bins": ["jq"], "env": ["API_KEY"] } } }这样依赖不满足时技能不会加载,减少运行时失败。
本地测试流程
- 创建 skill 文件夹
- 编写
SKILL.md - 开新会话或重启 gateway
- 用
openclaw skills list确认加载 - 发送一个应该触发该技能的测试请求
- 根据结果修改 description 和步骤说明
测试重点不是“能不能加载”,而是“是否在正确场景加载,是否不会误触发”。
编写最佳实践
- 保持短小,避免写成百科全书
- 只写任务流程和工具约束
- 不要把密钥写进 Skill
- 不要让 Skill 接收任意用户输入拼 shell 命令
- 对危险操作要求确认
- 把复杂脚本放到
scripts/,在SKILL.md中引用
适合做成 Skill 的内容
- 固定 API 发布流程
- 内部运维 runbook
- 某个 CLI 的安全使用方法
- 内容审核标准
- 特定代码库的测试和发布流程
- 某个平台的认证/配置步骤
来源:OpenClaw 官方文档 - Creating Skills | 整理:ClaudeEagle