实战

OpenClaw 自定义 Skill 编写指南:SKILL.md 结构、元数据和本地测试流程

OpenClaw Creating Skills 官方文档中文整理:如何创建技能目录、编写 SKILL.md、设置 name/description/metadata、测试加载、使用 openclaw skills list 验证,以及安全和可维护性最佳实践。

2026/6/43分钟 阅读ClaudeEagle

自定义 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"] } } }

这样依赖不满足时技能不会加载,减少运行时失败。


本地测试流程

  1. 创建 skill 文件夹
  2. 编写 SKILL.md
  3. 开新会话或重启 gateway
  4. 用 openclaw skills list 确认加载
  5. 发送一个应该触发该技能的测试请求
  6. 根据结果修改 description 和步骤说明

测试重点不是“能不能加载”,而是“是否在正确场景加载,是否不会误触发”。


编写最佳实践

  • 保持短小,避免写成百科全书
  • 只写任务流程和工具约束
  • 不要把密钥写进 Skill
  • 不要让 Skill 接收任意用户输入拼 shell 命令
  • 对危险操作要求确认
  • 把复杂脚本放到 scripts/,在 SKILL.md 中引用

适合做成 Skill 的内容

  • 固定 API 发布流程
  • 内部运维 runbook
  • 某个 CLI 的安全使用方法
  • 内容审核标准
  • 特定代码库的测试和发布流程
  • 某个平台的认证/配置步骤

来源:OpenClaw 官方文档 - Creating Skills | 整理:ClaudeEagle