Install
openclaw skills install skill-editor编辑、完善或审查 AgentSkills。当需要创建新技能、对现有 SKILL.md 进行修改、清理/审计/整理技能文件时激活此技能。触发词:编辑技能, skill 注意事项, metadata 检查, 完善技能, 清理技能, 审计技能, skill 规范, 编写 skill, 新建技能
openclaw skills install skill-editor编辑和完善 AgentSkills 的指南。创建或修改技能时参考此指南。
skills/<skill-name>/
├── SKILL.md # 必须:技能定义文件
├── package.json # 必须(publish 时需要 displayName 等元信息)
├── scripts/ # 可选:脚本文件
└── references/ # 可选:参考文档
不要创建额外的文档文件(README.md、CHANGELOG.md 等)。
每次编辑 SKILL.md 时,必须检查以下字段是否正确:
| 字段 | 要求 | 常见错误 |
|---|---|---|
name | kebab-case,与目录名一致 | 写成驼峰、大小写不匹配目录名 |
description | 触发条件描述,含中英文关键词,100 字左右 | 太短(无触发词)、太长(超过 200 字) |
metadata | 顶级字段,与 name、description 平级 | 缺失、缩进错误、嵌套在 description 下 |
requires.env.vars | 脚本依赖的环境变量必须声明,不能只写在正文 | 脚本用了变量但 requires.env.vars 为空或漏填 |
结构:
metadata:
version: 1.0.0
author: <作者名>
homepage: <技能主页 URL>
tags:
- <标签1>
- <标签2>
openclaw:
requires:
env.vars: {} # 无依赖时必须写空对象,不能省略
关键规则:
metadata 是顶级字段,与 name、description 平级openclaw.requires.env.vars 填写脚本依赖的环境变量(如 API Token)requires.env.vars 写空对象 {},不能省略 openclaw.requires 块发布到 ClawHub 需要 package.json 中的 displayName 等元信息。
典型结构:
{
"name": "skill-name",
"version": "1.0.0",
"displayName": "技能显示名称",
"description": "技能一句话描述"
}
编辑时注意事项:
⚠️ clawhub publish 不会自动读取 package.json 的 displayName,必须通过
--name显式传入。如果只传--version不传--name,clawhub 会使用 package.json 中的name字段而非displayName,导致发布后显示的名称不正确。
无环境变量依赖:
---
name: my-skill
description: "我的技能描述"
metadata:
version: 1.0.0
author: lejian
homepage: https://clawhub.ai/skills/my-skill
tags:
- my-skill
openclaw:
requires:
env.vars: {}
---
有环境变量依赖:
---
name: my-api-skill
description: "调用外部 API 的技能"
metadata:
version: 1.0.0
author: lejian
homepage: https://clawhub.ai/skills/my-api-skill
tags:
- api
openclaw:
requires:
env.vars:
MY_API_TOKEN: "API Token,说明配置方式"
LEJIAN_AUTH_TOKEN: "乐荐 API Token,配置方式:openclaw config set env.vars.LEJIAN_AUTH_TOKEN <token>"
---
❌ metadata 缩进错误(嵌套在 description 下面)或字段缺失
❌ requires.env.vars 写成空对象 {},但实际脚本有环境变量依赖
❌ requires 写成 require 或其他拼写
❌ 只在正文写"需要配置 API Token",但 requires.env.vars 为空
❌ 环境变量名与脚本中实际使用的名字不一致
❌ 编辑 SKILL.md 时覆盖/删除了 package.json(publish 时丢 displayName)
❌ description 缺少触发词,导致 skill 无法被正确激活
💡 建议先加载
skill-creator技能了解编辑流程,但这不是强制要求,可以直接编辑 skill 文件。
description — 确认触发词仍然准确,保留中英文关键词name — 同时修改目录名,保持一致metadata.openclaw.requires.env.vars 中声明requires.env.vars 中移除对应条目--version 参数也必须与上述两处版本号保持一致,三者缺一不可在 description 行之后、--- 行之前插入 metadata 块:
pattern = r'(description: [^\n]+\n)(\n---\n# )'
replacement = r'\1metadata:\n version: 1.0.0\n author: lejian\n homepage: ...\n tags:\n - xxx\n openclaw:\n requires:\n env.vars: {}\n\2'
find ~/workspace/agent/skills -name "SKILL.md" | while read f; do
if grep -q "^metadata:" "$f"; then
echo "✅ $f"
else
echo "❌ $f (missing metadata)"
fi
done
~/workspace/agent/skills/ # 用户安装的 skill
~/workspace/agent/extensions/*/skills/ # 扩展自带的 skill
~/.npm-global/lib/node_modules/openclaw/skills/ # 内置 skill