Skill = 一个文件夹 + 一份 SKILL.md,就这么简单。它不是插件、不是二进制、不需要编译——只是一段提示词 + 元数据,告诉 Agent “遇到什么场景、该怎么做”。
🔨 如果 MCP 工具是锤子,那 Skill 就是使用说明书——锤子只知道敲,说明书告诉你敲哪里、用多大力、什么顺序敲。

10.1 Skills 是什么?
Skill 是一个纯文本指令包——一个文件夹里放一个 SKILL.md 文件。Agent 在对话开始时读取它,就像员工上班前先看工作手册。没有代码执行,没有二进制,只有提示词。
| 维度 | Skills | Tools (MCP) |
|---|---|---|
| 本质 | 提示词 + 元数据 | 可执行函数/API |
| 存在形式 | SKILL.md 文本文件 | 运行中的服务进程 |
| 安装方式 | clawhub install 或手动放文件 |
配置 MCP Server 地址 |
| 谁写 | 任何人(只需写 Markdown) | 开发者(需写代码) |
| 运行时角色 | 注入系统提示词,指导 Agent 行为 | 提供可调用的函数接口 |
| 类比 | 📖 使用说明书 / SOP | 🔨 锤子 / 螺丝刀 |

- 工作区 Skills(最高优先级) — 放在项目的
.openclaw/skills/目录下,只对当前项目生效。适合项目专属的编码规范、部署流程 - 用户 Skills(中等优先级) — 放在
~/.openclaw/skills/目录下,对所有项目生效。适合个人通用习惯,如 Git 工作流、代码风格 - 内置 Skills(最低优先级) — OpenClaw 自带的技能(如 summarize、apple-reminders),开箱即用
requires 字段可以声明前置条件:requires.bins:需要哪些 CLI 工具(如 docker, git)——没装就跳过requires.env:需要哪些环境变量(如 API Key)——没配就跳过requires.os:限定操作系统(darwin / linux / win32)
10.3 Skill 的结构
| 字段 | 必填 | 说明 |
|---|---|---|
| name | ✅ | Skill 唯一标识,小写 + 连字符(如 weather-check) |
| description | ✅ | ⚡ 最关键字段!Agent 根据它决定是否触发。写得太保守 = 永远不会被调用 |
| version | 否 | 语义化版本号(semver),ClawHub 发布时必填 |
| tags | 否 | 分类标签,帮助 ClawHub 搜索和推荐 |
| requires.bins | 否 | 依赖的 CLI 工具列表,缺失则 Skill 不加载 |
| requires.env | 否 | 依赖的环境变量列表,缺失则 Skill 不加载 |
| requires.os | 否 | 限定操作系统(darwin / linux / win32) |
| metadata.openclaw | 否 | OpenClaw 特定配置,如 min_version、always: true |
description 决定 Skill 的生死。Agent 看到用户消息后,用 description 做模糊匹配决定是否触发。
经验法则:宁可多触发、再在正文里细化,也不要写得太窄导致永远不被调用。

10.4 ClawHub 技能市场
clawhub install user/skill@1.2.0
10.5 自己写一个 Skill
- 创建目录
mkdir -p ~/.openclaw/skills/my-greeting/
- 编写 SKILL.md
cat > ~/.openclaw/skills/my-greeting/SKILL.md << ‘EOF’ — name: my-greeting description: “Greet the user in a fun, creative way when they say hello or hi” version: 0.1.0 — # My Greeting Skill When the user greets you (hello, hi, hey, 你好, etc.): 1. Respond with a creative, themed greeting 2. Include a random fun fact about today’s date 3. Keep it under 3 sentences EOF
- 重启 Gateway
openclaw gateway restart
- 验证加载
openclaw skills list | grep my-greeting
- 测试触发 — 打开 OpenClaw 对话,输入 “hello”,观察是否触发了你的 Skill
最常见的原因是 description 不够激进。试试把 description 写得更宽泛:与其写 “greet when user says hello”,不如写 “respond to any greeting, salutation, or casual opening message in any language”。
10.6 进阶用法
references/ 文件夹,放入参考文档、示例代码等。SKILL.md 中可以引用这些文件。scripts/ 文件夹,放入辅助脚本。Agent 可以在 Skill 指导下执行这些脚本。dependencies,安装时自动拉取依赖的其他 Skill。10.7 常见问题 FAQ
三步排查:① openclaw skills list --eligible 确认已加载 ② 检查 description 是否足够宽泛 ③ 检查 requires 门控是否通过。90% 的问题出在 description 太窄。
互补关系。MCP Server 提供”能力”(函数接口),Skill 提供”智慧”(什么时候用、怎么用)。一个管手,一个管脑。最佳实践:MCP 提供工具 + Skill 编排工作流。
description 中包含冒号时必须加引号:description: "Check weather: current and forecast"。不加引号 YAML 会把冒号后的内容当成嵌套 key。
按三级加载顺序:工作区 > 用户 > 内置。高优先级的同名 Skill 会覆盖低优先级的。可以利用这个机制在项目级别覆盖全局行为。
目前 OpenClaw 没有内置统计。可以在 Skill 正文中加一行”每次触发时在 ~/.openclaw/logs/skill-name.log 追加一条记录”,让 Agent 自己记。社区也有 skill-analytics 技能可用。
设置 metadata.openclaw.always: true 后,Skill 每次对话都会加载(不需要 description 匹配)。注意:会占用上下文窗口,建议只对核心 Skill 使用(如安全审计、代码规范),否则会拖慢响应。


评论(0)