作者:靓靓蒸虾最好吃
你有没有想过,让 AI Agent 拥有"自定义超能力"?
OpenClaw 的 Skill(技能) 机制,就是为此而生。它允许你将任何工具、脚本和工作流封装成可复用的插件,让 AI 在对话中自由调用。本文将从零开始,手把手教你创建一个完整的 Skill,保证小白也能看懂、跑通、上线。
一、什么是 Skill?
Skill(技能)是 OpenClaw 的插件扩展单元。你可以把它理解为一个"工具包"——里面包含了 AI 执行某个任务所需的全部信息:
• 描述(Description):告诉 AI 这个 Skill 什么时候该被调用 • 工具文件(SKILL.md):AI 的使用说明书和行为指南 • 执行脚本:实际干活的代码(Python、Shell、TypeScript 等) • 资源文件:图片、模板、数据文件等
一个 Skill 就是一个独立文件夹,复制粘贴即可迁移复用。
二、Skill 的标准目录结构
创建一个 Skill,通常遵循以下目录结构:
my-skill/├── SKILL.md # ⭐ 核心文件,AI 的使用说明├── scripts/ # 脚本目录│ ├── main.py # 主执行脚本│ └── utils.py # 辅助函数├── references/ # 参考文档(可选)│ └── guide.md├── assets/ # 资源文件(可选)│ └── icon.png└── EXTEND.md # 扩展配置(可选)其中, 是必须文件,其余均可选。
三、编写 SKILL.md:AI 的使用说明书
SKILL.md 是 Skill 的核心,OpenClaw 根据它的内容决定何时调用这个 Skill,以及 AI 应该按什么规则执行。
标准格式如下:
---name: my-first-skilldescription: 用于完成某个特定任务的技能说明---# SKILL.md - 我的第一个技能## 功能说明简要描述这个技能的作用。## 使用方法- 使用场景 1- 使用场景 2## 参数说明| 参数 | 类型 | 说明 ||------|------|------|| input | string | 输入内容 |## 示例```bash# 示例命令python scripts/main.py --input "hello"**⚠️ 注意**:description 字段是 AI 判断"该不该调用这个 Skill"的关键依据,**必须写得清晰、具体**,说明在什么场景下使用。---## 四、创建你的第一个 Skill:天气查询插件下面,我们来实际创建一个**天气查询 Skill**,感受完整流程。### 4.1 创建目录结构```bashmkdir -p weather-skill/scripts4.2 编写 SKILL.md
---name: weather-querydescription: 用于查询某个城市的当前天气、温度和预报。当用户询问"今天天气怎么样"、"XX城市热不热"、"明天要不要带伞"等天气相关问题时使用此技能。---# Weather Query Skill查询指定城市的当前天气和未来三天预报。## 使用方法直接调用 weather 技能,传入城市名称即可。## 脚本调用```bashpython scripts/weather.py --city "北京"输出格式
• 当前温度 • 天气状况(晴/雨/雪等) • 未来三天简要预报
### 4.3 编写执行脚本 weather.py```python#!/usr/bin/env python3import requestsimport sysimport argparsedef get_weather(city: str) -> str: """获取城市天气信息""" # 使用 wttr.in 免费天气 API(无需注册) url = f"https://wttr.in/{city}?format=j1" try: resp = requests.get(url, timeout=10) data = resp.json() current = data["current_condition"][0] temp_C = current["temp_C"] desc = current["weatherDesc"][0]["value"] humidity = current["humidity"] result = ( f"📍 {city} 当前天气\n" f"🌡️ 温度:{temp_C}℃\n" f"☁️ 状况:{desc}\n" f"💧 湿度:{humidity}%" ) # 添加明日预报 tomorrow = data["weather"][1] max_t = tomorrow["maxtempC"] min_t = tomorrow["mintempC"] result += f"\n📅 明日:{min_t}~{max_t}℃" return result except Exception as e: return f"查询失败:{e}"if __name__ == "__main__": parser = argparse.ArgumentParser(description="城市天气查询") parser.add_argument("--city", type=str, required=True, help="城市名称") args = parser.parse_args() print(get_weather(args.city))4.4 测试运行
python scripts/weather.py --city "上海"输出示例:
📍 上海 当前天气🌡️ 温度:18℃☁️ 状况:Partly cloudy💧 湿度:72%📅 明日:16~22℃五、Skill 的高级配置
5.1 多工具支持(Tool Calling)
如果你的 Skill 需要调用多个工具,可以在 SKILL.md 中声明:
## 工具说明本技能支持以下工具:- `read`:读取文件内容- `exec`:执行 Shell 命令- `upload_to_cdn`:上传文件到 CDN5.2 参数与输出规范
建议在 SKILL.md 中明确输入输出的数据格式,这样 AI 能更好地理解和处理:
## 输入参数| 参数名 | 类型 | 必须 | 说明 ||--------|------|------|------|| query | string | 是 | 搜索关键词 || limit | number | 否 | 返回结果数量,默认5 |## 输出格式返回 JSON 格式的搜索结果列表。六、Skill 的分享与安装
6.1 打包分享
Skill 本质是一个文件夹,直接压缩即分享。可以上传到 GitHub、ClawdHub 等平台。
6.2 安装使用
将 Skill 文件夹放入 OpenClaw 的 skills/ 目录即可:
# 假设 OpenClaw 安装在 ~/openclawcp -r my-skill ~/openclaw/skills/安装后,OpenClaw 会在启动时自动识别并加载新 Skill。
6.3 在 ClawdHub 分享
ClawdHub(clawhub.com[1])是 OpenClaw 的官方 Skill 市场。在上面发布 Skill 的步骤:
1. 将 Skill 整理为标准格式(包含 SKILL.md和脚本)2. 创建 GitHub 仓库,编写 README.md3. 在 ClawdHub 提交审核 4. 审核通过后,全世界用户即可一键安装你的 Skill
七、Skill 开发最佳实践
① 描述要具体模糊的描述会让 AI 频繁误触发。"查询天气" ✅,"查询任意内容" ❌
② 错误处理要完善脚本要能优雅地处理异常,返回有意义的错误信息,而不是直接崩溃。
③ 参数有默认值必选参数越少越好,可选参数给足默认值,降低 AI 调用门槛。
④ 测试用例要充分每个 Skill 都应有基本的测试验证,确保各种输入都能正确响应。
⑤ 文档要完整README + SKILL.md 双文档,让开发者和 AI 都能看懂怎么用。
八、总结
OpenClaw 的 Skill 机制,核心就是 + 执行脚本 两件套。只要掌握了这个规范,你就可以:
• 🌐 封装任何外部 API(天气、股票、翻译……) • 📊 调用本地脚本处理数据 • 🤖 将复杂工作流自动化 • 🧩 打包分享给全球用户
Skill 让 AI Agent 的能力变得无限可扩展。 掌握它,你就真正拥有了定制 AI 的超能力。
本文由"靓靓蒸虾最好吃"撰写,OpenClaw Skill 开发实战分享。
引用链接
[1] clawhub.com: https://clawhub.com
夜雨聆风