一文带你掌握openclaw skill开发的详细教程

  发布时间:2026-07-15 08:56:20   作者:每日技术   我要评论
OpenClaw 的 Skill 本质上是给 AI Agent 看的“任务说明书 + 工具包”,核心是一个包含 SKILL.md的目录,下面我们就来看看如何打造一个能自主查询天气、管理任务的OpenClaw Skill吧

OpenClaw 的 Skill 本质上是给 AI Agent 看的“任务说明书 + 工具包”,核心是一个包含 SKILL.md的目录。它不需要复杂的编译,主要靠 Markdown 指令引导 Agent 调用系统工具(如 execbrowserweb_fetch)或自定义脚本。

以下是详细的开发教程:

前置准备

  • 已安装并运行 OpenClaw(Gateway 正常启动)。
  • 熟悉基础命令行与 YAML/Markdown 语法。
  • 知道你的技能目录位置,通常是 ~/.openclaw/workspace/skills/

Skill 标准结构

一个典型的 Skill 目录如下,SKILL.md唯一必需的文件:

my-custom-skill/
├── SKILL.md        # 核心指令(元数据+YAML frontmatter+Markdown正文)
├── scripts/        # 可选:Shell/Python/Node.js 执行脚本
│   └── run.sh
├── references/     # 可选:API文档、详细参考,按需加载节省 Token
└── assets/         # 可选:静态资源

编写核心文件 SKILL.md

这是 Skill 的灵魂,分为 **Frontmatter(元数据)**​ 和 **Markdown 正文(指令)**​ 两部分。

YAML Frontmatter(头部元数据)

放在文件顶部,用 ---包裹,定义技能的“身份”与“触发条件”:

---
name: hello-world          # 技能名,小写kebab-case,与文件夹名一致
description: 当用户需要打招呼或说hello时使用的简单演示技能
trigger: "打招呼|hello|hi|问好"  # 触发词(关键词或正则),AI据此激活技能
tools: [exec, browser]     # 声明本技能需要用到的系统工具
version: 1.0.0
author: yourname
config:                    # 可选:需要的配置项(如API Key)
  API_KEY:
    type: string
    required: true
---
  • name:必须唯一,仅含小写字母、数字、短横线。
  • trigger:不写则需用户显式指定;写 "*"表示全局常驻;也可写正则 /^deploy .+ to (staging|prod)$/i

Markdown 正文(给 AI 的指令)

Frontmatter 之后写具体内容,像给同事下达任务一样清晰:

# Hello World 技能

## 何时使用
当用户请求问候、说“你好”、“hello”或需要测试连接时使用此技能。

## 执行步骤
1. 使用 `echo` 工具(或 exec 运行 `echo`)输出:"Hello from your custom skill! 🚀"
2. 如果是中文语境,额外输出当前日期。

## 输入/输出
- 输入:无特定参数
- 输出:一段友好的问候语字符串

## 注意事项
- 不要执行任意用户输入的代码,仅输出固定问候。
- 保持输出简洁。

(可选)编写执行脚本

如果逻辑复杂,可在 scripts/下放脚本,在 SKILL.md 里指示 Agent 调用:

#!/bin/bash
# scripts/fetch_news.sh
CATEGORY=$1
curl -s "https://news.example.com/api/$CATEGORY" | jq '.[].title'

在 SKILL.md 正文中写明:运行 node scripts/fetch_news.js tech 获取科技新闻。确保脚本有执行权限 (chmod +x)。

加载与测试

放置目录:将 my-custom-skill放入 ~/.openclaw/workspace/skills/

刷新/重启:让 Agent 发现新技能,执行 openclaw gateway restart或在聊天中说“刷新技能”。

验证列表:运行 openclaw skills list确认状态为 ready。

测试触发

  • 发送消息:“跟我打个招呼”
  • 或用命令行测试:openclaw agent --message "give me a greeting"

本地调试(SDK 模式):若用 TypeScript/JS SDK 开发,可用 clawhub dev模拟调用。

进阶与发布

Workshop 提案:可用 openclaw skills workshop propose-create让 AI 辅助审查再落地。

发布到 ClawHub:登录 clawhub login后执行 clawhub publish,需确保 SKILL.md完整且无硬编码密钥。

安全建议:使用 exec工具时严防命令注入;敏感信息(API Key)通过 envopenclaw.json5config注入,勿写死在文件里。

最佳实践总结

  • 描述精准descriptiontrigger决定 AI 会不会用,关键词要覆盖全。
  • 指令明确:写“做什么、按什么顺序、输出什么格式”,减少歧义。
  • Token 优化:重内容放 references/SKILL.md只留核心流程。
  • 单一职责:一个 Skill 专注一件事(如“查天气”而非“查天气+发邮件”)。

OpenClaw 查天气 Skill 完整示例

下面我写一个简单的例子:

下面给你一个可直接用的 OpenClaw 查天气 Skill 完整示例,包含 SKILL.md+ 脚本 + 配置说明,适合新手直接复制跑通。

Skill 目录结构

weather/
├── SKILL.md
├── scripts/
│   └── get_weather.sh
└── references/
    └── open-meteo-api.md

只需要 SKILL.md+ scripts/get_weather.sh就能运行

references/仅用于给 AI 查阅 API 文档,节省 Token

SKILL.md(核心文件)

路径:~/.openclaw/workspace/skills/weather/SKILL.md

---
name: weather
description: 查询城市当前天气和未来预报,支持中文城市名自动解析经纬度
trigger: "天气|气温|下雨|forecast|weather|查天气"
tools: [exec]
version: 1.0.0
author: you
config:
  UNITS:
    type: string
    default: "metric"
    description: "metric(摄氏度) 或 imperial(华氏度)"
---
# Weather 天气查询技能
## 何时使用
当用户询问某个城市的天气、气温、是否下雨、未来几天天气时使用本技能。
## 执行流程
1. **解析城市**
   - 如果用户给出的是中文城市名(如“北京”),先使用 geocoding API 转换为经纬度。
   - 接口示例:
geocoding-api.open-meteo.com/v1/search?n…北京&count=1
2. **调用天气 API**
- 使用 Open-Meteo(无需 API Key)
- 基础 URL:
api.open-meteo.com/v1/forecast
- 必须参数:
- latitude
- longitude
- current_weather=true
- hourly=temperature_2m,precipitation_probability
- timezone=auto
3. **运行脚本**
- 调用本地脚本获取天气数据:
bash scripts/get_weather.sh "城市名"
- 示例:
bash scripts/get_weather.sh "Beijing"
bash scripts/get_weather.sh "东京"
4. **输出规范**
- 使用自然语言总结,不要直接输出 JSON
- 至少包含:
- 城市名
- 当前气温
- 天气状况(晴 / 雨 / 阴等)
- 降水概率
- 风速
- 示例输出:
> 北京当前气温 22°C,晴朗,降水概率 10%,风速 12 km/h。
## 错误处理
- 若城市无法解析:提示用户检查城市名称拼写
- 若 API 超时:提示“暂时无法获取天气数据,请稍后重试”
## 参考
- API 详细字段说明见 `references/open-meteo-api.md`

scripts/get_weather.sh(执行脚本)

路径:~/.openclaw/workspace/skills/weather/scripts/get_weather.sh

#!/bin/bash

set -euo pipefail

CITY="$1"

# 1. 地理编码
GEO=$(curl -s "https://geocoding-api.open-meteo.com/v1/search?name=${CITY}&count=1")
LAT=$(echo "$GEO" | jq -r '.results[0].latitude // empty')
LON=$(echo "$GEO" | jq -r '.results[0].longitude // empty')
NAME=$(echo "$GEO" | jq -r '.results[0].name // empty')

if [[ -z "$LAT" || -z "$LON" ]]; then
  echo "❌ 无法找到城市:$CITY"
  exit 1
fi

# 2. 获取天气
WEATHER=$(curl -s "https://api.open-meteo.com/v1/forecast?latitude=$LAT&longitude=$LON&current_weather=true&hourly=temperature_2m,precipitation_probability&timezone=auto")

TEMP=$(echo "$WEATHER" | jq -r '.current_weather.temperature')
WIND=$(echo "$WEATHER" | jq -r '.current_weather.windspeed')
CODE=$(echo "$WEATHER" | jq -r '.current_weather.weathercode')
RAIN=$(echo "$WEATHER" | jq -r '.hourly.precipitation_probability[0]')

# 3. 天气代码映射
case $CODE in
  0) COND="晴朗" ;;
  1|2|3) COND="多云" ;;
  45|48) COND="雾" ;;
  51|53|55) COND="小雨" ;;
  61|63|65) COND="雨" ;;
  71|73|75) COND="雪" ;;
  95|96|99) COND="雷暴" ;;
  *) COND="未知" ;;
esac

# 4. 输出
echo "${NAME} 当前气温 ${TEMP}°C,${COND},降水概率 ${RAIN}%,风速 ${WIND} km/h。"

赋予执行权限:

chmod +x ~/.openclaw/workspace/skills/weather/scripts/get_weather.sh

references/open-meteo-api.md(可选)

# Open-Meteo API 说明

## 地理编码
GET https://geocoding-api.open-meteo.com/v1/search?name=城市名

返回字段:
- results[0].latitude
- results[0].longitude
- results[0].name

## 天气预报
GET https://api.open-meteo.com/v1/forecast

常用参数:
- latitude
- longitude
- current_weather=true
- hourly=temperature_2m,precipitation_probability
- timezone=auto

天气代码(weathercode):
- 0: 晴朗
- 1–3: 多云
- 45,48: 雾
- 51–55: 小雨
- 61–65: 雨
- 71–75: 雪
- 95+: 雷暴

加载 & 测试

重启 Gateway

openclaw gateway restart

查看技能状态

openclaw skills list

聊天中测试

查一下上海的天气

预期输出示例:

上海 当前气温 26°C,多云,降水概率 20%,风速 14 km/h。

常见增强方向(进阶)

你可以继续扩展这个 Skill:

  • 支持未来 3~7 天预报(daily=
  • 自动识别用户所在城市(IP → 经纬度)
  • 多语言输出(中 / 英)
  • 封装为 HTTP skill(OpenClaw 的 http工具)
  • 发布到 ClawHub:clawhub publish

调试小技巧

手动测试脚本:

./scripts/get_weather.sh "Beijing"

查看 Agent 实际调用命令(Gateway 日志)

若 AI 不触发 Skill,检查:

  • trigger是否覆盖用户说法
  • Skill 是否在 skills list中显示为 ready

到此这篇关于一文带你掌握openclaw skill开发的详细教程的文章就介绍到这了,更多相关openclaw skill开发内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

相关文章

  • 一文教你如何轻松使用OpenClaw Skill

    很多人第一次听到 OpenClaw Skill,会把它理解成“插件”, 这个理解只对了一半, 插件通常给 Agent 增加新的能力,比如新的工具、新的消息渠道、新的模型 Provider,下面我
    2026-06-23
  • OpenClaw开发自定义Skills的实战指南

    为 OpenClaw开发自定义 Skills,就像是给它装上能按你心意干活的新“手脚”,这个过程比你想象的要简单,只要遵循一定的规范和流程,即便是新手也能在短时间内开发出第一个
    2026-05-20
  • OpenClaw Skills 安装与配置指南

    本文介绍了OpenClawSkills的概念、获取途径、安装方式、推荐Skills及配置方法,通过ClawHub官网、GitHub仓库等获取Skills,使用ClawHubCLI或OpenClawCLI安装,文章还提供了安
    2026-05-18
  • OpenClaw实操指南之6个最值得优先安装的基础元技能Skill

    本文介绍了OpenClaw系统中6个最值得优先安装的基础元技能,这些技能专注于管理和扩展OpenClaw本身的功能,包括find-skills,skill-creator,mcp-builder,skill-vetter,web
    2026-05-14
  • OpenClaw到底能做什么?有什么用?推荐你先装这几个实用的Skills

    Skills其本质是一种更高层次的模块化能力封装,核心作用是扩展智能体(如 OpenClaw)的功能边界、提升任务执行的专业性和效率,这篇文章主要介绍了OpenClaw到底能做什么以及有
    2026-05-11
  • 一文分享8个openclaw的常用Skill

    Skill 是 OpenClaw 的核心扩展机制,通过编写一个 SKILL.md 文件,你就能教会 AI Agent 新的能力,本文将和大家分享8个常用的openclaw Skill,感兴趣的小伙伴可以跟随小编一
    2026-04-22
  • OpenClaw Skill开发与发布全流程解析

    本文介绍了OpenClaw技能(Skill)的开发、部署、和ClawHub发布流程,包括Skill目录结构、frontmatter规范、本地开发与测试、打包进应用、以及上传ClawHub的方法,感兴趣的可以
    2026-04-17
  • OpenClaw Skills安装与实战:打造你的AI技能工具箱

    这篇文章主要为大家详细介绍了如何使用 ClawHub 安装和管理 OpenClaw 技能包,并通过实战案例演示多个技能的协同使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下
    2026-04-07
  • OpenClaw开发Agent Skills最常见的12种错误和对应的解决方案

    作者记录了使用 OpenClaw 开发 Agent Skills 时踩过的 12 个常见报错坑,并整理了完整解决方案,适合正在使用 OpenClaw 遇到问题的开发者参考
    2026-04-07
  • OpenClaw(龙虾)Skills从零到发布的实战指南

    本文详细介绍了OpenClaw的Skill机制,包括什么是Skill、Skill的目录结构、SKILL.md的核心格式、以及五种不同类型的Skill,还提供了开发最佳实践、安全检查清单和本地测试指南
    2026-04-02

最新评论