OpenClaw 采用与 AgentSkills 兼容的技能文件夹,用于指导智能体如何使用工具。每一项技能均对应一个目录,其中包含一个附带 YAML 格式和操作说明的 `SKILL.md` 文件。OpenClaw 会加载内置的预装技能以及可选的本地覆盖配置,并在加载阶段根据运行环境、配置设置以及相关二元文件的存在情况对这些技能进行筛选。
位置与优先级
OpenClaw 从以下来源加载技能:
额外技能文件夹:通过 `skills.load.extraDirs` 进行配置
预装技能:随安装包一同分发(npm 包或 OpenClaw.app)
托管/本地技能:`~/.openclaw/skills`
个人代理技能:`~/.agents/skills`
项目代理技能:`<workspace>/.agents/skills`
工作区技能:`<workspace>/skills`
如果技能名称发生冲突,其优先级顺序如下:
`<workspace>/skills`(最高) → `<workspace>/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → 预装技能 → `skills.load.extraDirs`(最低)
独立代理技能与共享技能
在多代理配置中,每个代理都拥有其独立的“工作空间”(workspace)。这意味着:
独立代理技能位于 `<workspace>/skills` 目录下,仅供该特定代理使用。
项目代理技能位于 `<workspace>/.agents/skills` 目录下,其优先级高于常规的 `<workspace>/skills` 目录,适用于该工作空间内的所有代理。
个人代理技能位于 `~/.agents/skills` 目录下,适用于该机器上的所有工作空间。
共享技能位于 `~/.openclaw/skills` 目录下(包含托管及本地技能),对同一机器上的所有代理均可见。
如果您希望让多个代理共用一套技能包,也可以通过 `skills.load.extraDirs` 配置项来添加共享目录(其优先级最低)。
如果同一技能名称出现在多个位置,将遵循标准的优先级规则:工作空间级技能优先级最高,其次是项目代理技能、个人代理技能、托管/本地技能、预装(bundled)技能,最后是额外目录(extra dirs)中的技能。
创建技能
1、创建技能目录:在workspace/skills里面创建技能目录如"hello-world"

2. 编写SKILL.md
在该目录下创建 SKILL.md 文件。其中的 Frontmatter 用于定义元数据,Markdown 正文则包含针对代理的指令。
---name: hello_worlddescription: A simple skill that says hello.---# Hello World SkillWhen the user asks for a greeting, use the `echo` tool to say"Hello from your custom skill!".
3.添加工具(可选)
您可以在 Frontmatter 中定义自定义工具模式,或者指示代理使用现有的系统工具(例如 `exec` 或 `browser`)。此外,技能也可以随同其所描述的工具一同打包在插件中。
4. 加载技能:启动一个新的会话,以便 OpenClaw 能够识别该技能:
# 从聊天窗口/new# 或重启网关openclaw gateway restart
验证已加载的技能:
openclaw skills list
5.测试一下:发送一条应能触发该技能的消息:

技能元数据参考
YAML Frontmatter 支持以下字段:
字段 | ||
唯一标识符(snake_case 格式) | ||
向代理显示的单行描述 | ||
metadata.openclaw.os | 操作系统过滤器(如 ["darwin"]、["linux"] 等) | |
metadata.openclaw.requires.bins | PATH 环境变量中所需的二进制文件 | |
metadata.openclaw.requires.config | 所需的配置键 |
夜雨聆风