作者:mpoll.top 发布时间:2026-04-15 0 次浏览
SKILL.md 是 OpenClaw 技能的核心配置文件,决定了技能如何被理解、调用和执行。本文总结编写高质量 SKILL.md 的最佳实践,帮助你创建清晰、易用、健壮的技能。
---
# Skill 名称
描述
一句话描述技能的核心功能。
触发条件
描述什么情况下应该使用这个技能。
参数
参数名 | 类型 | 必填 | 默认值 | 描述
|--------|------|------|--------|------|
param1 | string | 是 | - | 参数描述
param2 | number | 否 | 10 | 参数描述
执行步骤
- 第一步做什么
- 第二步做什么
- ...
输出格式
描述技能的输出内容和格式。
错误处理
描述可能的错误和应对方式。
示例
示例 1
输入:...
输出:...
示例 2
输入:...
输出:...
注意事项
- 注意点 1
- 注意点 2
相关文件
- `script.js` - 主脚本
- `config.json` - 配置文件
好的命名:
避免的命名:
命名原则:
好的描述:
> "查询指定城市的当前天气和未来 3 天预报"
避免的描述:
> "这是一个很有用的技能,可以帮你获取天气信息,非常好用"
描述原则:
好的触发条件:
## 触发条件
当用户询问以下内容时使用此技能:
- 某地的天气情况
- 未来几天的天气预报
- 是否适合出门(基于天气)
避免的触发条件:
## 触发条件
当用户需要天气信息时
触发条件原则:
好的参数定义:
## 参数
参数名 | 类型 | 必填 | 默认值 | 描述
|--------|------|------|--------|------|
location | string | 是 | - | 城市名称,支持中文和英文
days | number | 否 | 3 | 预报天数,范围 1-7
| unit | string | 否 | celsius | 温度单位:celsius 或 fahrenheit |
参数定义原则:
好的执行步骤:
## 执行步骤
- 验证参数:检查 location 是否有效
- 调用 API:使用 wttr.in API 获取天气数据
- 解析数据:提取温度、湿度、风速等信息
- 格式化输出:生成易读的天气报告
- 返回结果:将结果返回给用户
执行步骤原则:
好的输出格式:
## 输出格式
📍 北京天气
当前:23°C,晴,湿度 45%
今天:23°C/15°C,晴转多云
明天:25°C/17°C,多云
后天:22°C/14°C,小雨
输出格式原则:
好的错误处理:
## 错误处理
错误情况 | 处理方式 | 用户提示
|---------|---------|---------|
城市不存在 | 返回错误 | "未找到城市'{location}',请检查拼写"
API 超时 | 重试 2 次 | "天气服务暂时不可用,请稍后重试"
| 参数无效 | 拒绝执行 | "天数必须在 1-7 之间" |
错误处理原则:
好的示例:
## 示例
示例 1:查询当前天气
输入:
北京天气怎么样?
输出:
📍 北京天气
当前:23°C,晴,湿度 45%
### 示例 2:查询多日预报
输入:
上海未来 5 天天气
输出:
📍 上海天气(5 天预报)
今天:28°C/22°C,多云
明天:30°C/24°C,晴
后天:29°C/23°C,晴转多云
...
### 示例 3:带参数的查询
输入:
纽约天气,要华氏度
输出:
📍 纽约天气
当前:73°F,晴,湿度 50%
示例原则:
复杂任务可以拆分为多个技能:
## 相关技能
- `weather-alert` - 天气预警
- `outfit-suggest` - 穿衣建议
- `travel-plan` - 出行规划
允许用户自定义行为:
## 配置选项
在 `TOOLS.md` 中添加:
markdown
说明技能的性能特征:
## 性能特征
- 平均响应时间:2-3 秒
- API 调用次数:1 次/查询
- 缓存策略:10 分钟内复用数据
对于敏感操作,说明安全措施:
## 安全考虑
- 不存储用户位置信息
- API 密钥加密存储
- 限制查询频率(10 次/分钟)
❌ 不好:
> "这个技能可以帮你做很多事情"
✅ 好:
> "查询指定城市的当前天气和未来 3 天预报"
❌ 不好:
| 参数 | 描述 |
|------|------|
| city | 城市 |
✅ 好:
| 参数名 | 类型 | 必填 | 默认值 | 描述 |
|--------|------|------|--------|------|
| location | string | 是 | - | 城市名称,支持中文和英文 |
❌ 不好:
(没有错误处理部分)
✅ 好:
## 错误处理
- 城市不存在:提示用户检查拼写
- API 超时:重试后返回友好错误
- 参数无效:说明有效范围
❌ 不好:
只有一个示例
✅ 好:
提供 3-5 个示例,覆盖不同场景
在发布技能前,检查以下项目:
完整的 SKILL.md 模板:
# {技能名称}
描述
{一句话描述核心功能}
触发条件
{列举具体使用场景}
参数
参数名 | 类型 | 必填 | 默认值 | 描述
|--------|------|------|--------|------|
{param1} | {type} | {是/否} | {default} | {描述}
执行步骤
- {步骤 1}
- {步骤 2}
- ...
输出格式
{输出示例和说明}
错误处理
错误情况 | 处理方式 | 用户提示
|---------|---------|---------|
{error1} | {handling1} | {message1}
示例
示例 1
输入:{input1}
输出:{output1}
示例 2
输入:{input2}
输出:{output2}
注意事项
- {note1}
- {note2}
相关文件
- `{file1}` - {描述}
- `{file2}` - {描述}
延伸阅读
编写高质量的 SKILL.md 是创建优秀 OpenClaw 技能的关键。遵循本文的最佳实践,你可以创建:
记住:好的文档不是一次性完成的,而是随着技能的使用不断迭代完善的。收集用户反馈,持续优化你的 SKILL.md。
本文属于「OpenClaw」系列专题
最后更新:2026 年 4 月
上一篇: OpenAI o3 推理架构详解:系统 2 思维如何实现
没有了,已经是最新文章