创建技能
技能(Skills)教会智能体如何使用工具以及何时使用工具。每个技能都是一个目录,其中包含一个带有 YAML frontmatter 和 Markdown 指令的 SKILL.md 文件。OpenClaw 会按照定义的优先级顺序从多个根目录加载技能。
创建你的第一个技能¶
1. 创建技能目录
技能位于工作区的 skills/ 文件夹中:
你可以将技能分组到子文件夹中以便于组织——技能仍然由 SKILL.md 的 frontmatter 命名,而不是文件夹路径:
mkdir -p ~/.openclaw/workspace/skills/personal/hello-world
# skill name is still "hello-world", invoked as /hello-world
2. 编写 SKILL.md
frontmatter 定义元数据;正文为智能体提供指令。
---
name: hello-world
description: A simple skill that prints a greeting.
---
# Hello World
When the user asks for a greeting, use the `exec` tool to run:
```bash
echo "Hello from your custom skill!"
```
命名规则:
- 对于
name,使用小写字母、数字和连字符。 - 保持目录名称与 frontmatter 中的
name一致。 description会展示给智能体,并用于斜杠命令发现——请保持在一行内,且不超过 160 个字符。
3. 验证技能已加载
默认情况下,OpenClaw 会监视技能根目录下的 SKILL.md 文件。如果监视器已禁用,或者你正在继续一个已有会话,请启动一个新会话,以便智能体收到刷新后的列表:
# From chat — archive current session and start fresh
/new
# Or restart the gateway
openclaw gateway restart
4. 测试
或者打开聊天并直接询问智能体。使用 /skill hello-world 按名称显式调用它。
在共享 Gateway 上创建个人技能¶
对于应跟随你已登录 profile 而非归属于某个智能体工作区的技能,请使用 Plugins → Skills → My skills。在那里创建或导入 SKILL.md 包,然后查看已保存的修订版本和激活结果。你不需要宿主机 shell 访问权限,也不需要编辑共享 Gateway 设置的权限。
你也可以让智能体创建或改进个人技能。它的 skill_workshop 工具使用 Gateway 的授权库服务;它不会直接写入受管理的修订目录。结果会区分已发布的技能和待处理的提案,并说明会话何时可以使用它。如果你希望在当前会话中使用新修订版,或将其分享给团队,请明确提出。
单管理员(single-admin)默认设置仍然是上述工作区工作流。同一操作者(operator)的额外渠道身份不会将个人安装变成团队配置。关于所有权、共享、存储和会话行为,请参阅个人技能与修订。
SKILL.md 参考¶
必填字段¶
| 字段 | 说明 |
|---|---|
name |
唯一 slug,使用小写字母、数字和连字符 |
description |
单行描述,展示给智能体并出现在发现输出中 |
可选 frontmatter 键¶
| 字段 | 默认值 | 说明 |
|---|---|---|
user-invocable |
true |
将技能作为用户斜杠命令公开 |
disable-model-invocation |
false |
将技能排除在智能体的系统提示词之外(仍可通过 /skill 运行) |
command-dispatch |
— | 设置为 tool 可将斜杠命令直接路由到工具,绕过模型 |
command-tool |
— | 当设置了 command-dispatch: tool 时要调用的工具名称 |
command-arg-mode |
raw |
用于工具分发,将原始参数字符串转发给工具 |
homepage |
— | 在 macOS Skills UI 中显示为“Website”的 URL |
关于门控字段(requires.bins、requires.env 等),请参阅技能——门控。
使用 {baseDir}¶
引用技能目录内的文件,无需硬编码路径——智能体会将 {baseDir} 解析为技能自身的目录:
添加条件激活¶
对你的技能进行门控,使其仅在依赖项可用时才加载:
---
name: gemini-search
description: Search using Gemini CLI.
metadata: { "openclaw": { "requires": { "bins": ["gemini"] }, "primaryEnv": "GEMINI_API_KEY" } }
---
门控选项
| 键 | 说明 |
|---|---|
requires.bins |
所有二进制文件都必须存在于 PATH 中 |
requires.anyBins |
PATH 中必须至少存在一个二进制文件 |
requires.env |
每个环境变量都必须存在于进程或配置中 |
requires.config |
每个 openclaw.json 路径都必须为真值(truthy) |
os |
平台过滤条件:["darwin"]、["linux"]、["win32"] |
always |
即使在 requires.* 检查失败时,也包含在兼容的操作系统上 |
完整参考:技能——门控。
环境与 API 密钥
在 openclaw.json 中为某个技能条目接入 API 密钥:
{
skills: {
entries: {
"gemini-search": {
enabled: true,
apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" },
},
},
},
}
该密钥仅在该次智能体轮次期间注入宿主进程。它不会进入沙箱——请参阅沙箱环境变量。
通过 Skill Workshop 提案¶
对于由 agent 起草的技能,或者在技能上线前希望操作员审核时,请使用 Skill Workshop 提案,而不是直接编写 SKILL.md。
# Propose a brand-new skill
openclaw skills workshop propose-create \
--name "hello-world" \
--description "A simple skill that prints a greeting." \
--proposal ./PROPOSAL.md
# Propose an update to an existing skill
openclaw skills workshop propose-update hello-world \
--proposal ./PROPOSAL.md \
--description "Updated greeting skill"
当提案包含支持文件时,使用 --proposal-dir:
openclaw skills workshop propose-create \
--name "hello-world" \
--description "A simple skill that prints a greeting." \
--proposal-dir ./hello-world-proposal/
该目录的根目录下必须包含 PROPOSAL.md。支持文件应放在 assets/、examples/、references/、scripts/ 或 templates/ 下。
审核之后:
openclaw skills workshop inspect <proposal-id>
openclaw skills workshop evaluate <proposal-id>
openclaw skills workshop apply <proposal-id>
有关完整的提案生命周期,请参阅 Skill Workshop。
发布到 ClawHub¶
所有者是 ClawHub 发布者句柄,例如 @alice 或 @your-org。
你的账户拥有一个个人所有者。组织所有者可以拥有具有 owner、admin 或 publisher 角色的成员;这三种角色都可以发布。请选择你的个人所有者,或选择你具有发布者访问权限的组织。
1. 确保你的 SKILL.md 完整
确保已设置 name、description 以及任何 metadata.openclaw 门控字段。如果你有项目页面,请添加 homepage URL。
2. 安装独立的 ClawHub CLI 并登录
3. 发布
添加 --version <version> 或 --owner <owner> 以覆盖推断的版本,或在特定所有者下发布。有关完整流程、所有者范围以及其他维护命令(clawhub sync、clawhub skill rename 等),请参阅 ClawHub — 发布 和 ClawHub CLI。
最佳实践¶
Tip
- 保持简洁 — 指示模型做什么,而不是如何成为 AI。
- 安全第一 — 如果你的技能使用
exec,请确保提示词不允许来自不可信输入的任意命令注入。 - 本地测试 — 在共享之前使用
openclaw agent --message "..."。 - 使用 ClawHub — 在从零开始构建之前,先在 clawhub.ai 浏览社区技能。
相关¶
加载顺序、门控、允许列表以及 SKILL.md 格式。
用于 agent 起草技能的提案队列。
完整的 skills.* 配置架构。
在公共注册表中浏览和发布技能。
插件可以随其文档化的工具一起发布技能。
技能注册的命令如何被调用和门控。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw