🦞 OpenClaw Skills开发完全指南
世界上有一种魔法叫Skills,它让AI从"智障"变成"超能战士"...
📚 什么是Skills?
Skills是OpenClaw的扩展系统,让你的Agent能够调用各种工具和功能。每个Skill是一个文件夹,包含:
- SKILL.md:技能的说明书(YAML frontmatter + 使用说明)
- 工具脚本:实现具体功能的代码
- 环境配置:检测依赖是否满足
就像是给AI配了一套工具箱,想用锤子用锤子,想用螺丝刀用螺丝刀。
⚙️ SKILL.md 结构详解
YAML Frontmatter
---
name: feishu-doc
description: Feishu文档读写操作
when_to_use: |
用户提到飞书文档、云文档、docx链接时激活
包含read/write/append/list_blocks等操作
支持Markdown格式内容
available:
tools: ["feishu_doc", "feishu_drive"]
requiresEnv: ["FEISHU_APP_ID", "FEISHU_APP_SECRET"]
allowed_operations:
- read: 读取文档内容
- write: 写入完整内容
- append: 追加内容
- list_blocks: 列出文档块结构
---
Instructions部分
## 使用规范
### 文档读取
- 先使用feishu_doc list_blocks获取文档结构
- 提取doc_token:从URL /docx/XXX 中获取XXX
### 文档写入
- 支持标准Markdown格式
- 自动创建父目录(如果配置了权限)
🛠️ 开发一个Skill的步骤
步骤1:创建目录结构
my-skill/
├── SKILL.md # 技能定义文件
├── README.md # 可选:更详细的文档
└── examples/ # 可选:使用示例
└── example1.md
步骤2:编写SKILL.md
---
name: my-custom-skill
description: 我的自定义技能
when_to_use: |
当用户需要[特定功能]时激活
包含[功能列表]等操作
available:
tools: ["tool_name_1", "tool_name_2"]
requiresEnv: ["REQUIRED_ENV_VAR"]
requiresBinary: ["optional_binary"]
---
## 功能说明
这里写详细的使用说明...
## 最佳实践
1. 第一点建议
2. 第二点建议
步骤3:配置加载路径
在~/.openclaw/config.yaml中添加:
skills:
custom_paths:
- /path/to/my-skill/
💡 最佳实践
- 清晰的when_to_use:准确描述触发条件,避免误激活
- 环境检测:使用requiresEnv声明依赖的环境变量
- 权限控制:用allowed_operations限制危险操作
- 渐进加载:大型Skill可以拆分多个子Skill
- 版本兼容:注明兼容的OpenClaw版本
🚀 实战案例:Weather Skill
---
name: weather-query
description: 查询天气信息
when_to_use: |
用户询问天气时激活
支持城市名称或坐标查询
返回当前天气和预报
available:
tools: ["web_search", "web_fetch"]
requiresEnv: ["WEATHER_API_KEY"]
---
## 使用方法
### 查询城市天气
1. 使用web_search搜索"[城市名] 天气"
2. 或调用天气API获取精确数据
### 返回格式
- 当前温度
- 天气状况
- 未来3天预报
🔗 相关资源
- Skills术语百科 - 深入理解Skills概念
- 定时任务教程 - 自动化调度
- 子Agent教程 - 多Agent协作
- 消息系统教程 - 多平台消息发送
- Skills最佳实践 - 进阶技巧
🎯 进阶技巧
条件加载
Skills可以根据环境条件动态加载:
available:
when:
env: { "PLATFORM": "linux" }
binary: ["docker"]
minVersion: "2026.3.0"
依赖其他Skills
在SKILL.md中声明依赖:
depends_on:
- feishu-doc
- openclaw-core