🦞 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可以根据环境条件动态加载:

available:
  when:
    env: { "PLATFORM": "linux" }
    binary: ["docker"]
    minVersion: "2026.3.0"

依赖其他Skills

在SKILL.md中声明依赖:

depends_on:
  - feishu-doc
  - openclaw-core