一文帶你掌握openclaw skill開發(fā)的詳細(xì)教程
OpenClaw 的 Skill 本質(zhì)上是給 AI Agent 看的“任務(wù)說明書 + 工具包”,核心是一個(gè)包含 SKILL.md的目錄。它不需要復(fù)雜的編譯,主要靠 Markdown 指令引導(dǎo) Agent 調(diào)用系統(tǒng)工具(如 exec、browser、web_fetch)或自定義腳本。
以下是詳細(xì)的開發(fā)教程:
前置準(zhǔn)備
- 已安裝并運(yùn)行 OpenClaw(Gateway 正常啟動(dòng))。
- 熟悉基礎(chǔ)命令行與 YAML/Markdown 語法。
- 知道你的技能目錄位置,通常是
~/.openclaw/workspace/skills/。
Skill 標(biāo)準(zhǔn)結(jié)構(gòu)
一個(gè)典型的 Skill 目錄如下,SKILL.md是唯一必需的文件:
my-custom-skill/
├── SKILL.md # 核心指令(元數(shù)據(jù)+YAML frontmatter+Markdown正文)
├── scripts/ # 可選:Shell/Python/Node.js 執(zhí)行腳本
│ └── run.sh
├── references/ # 可選:API文檔、詳細(xì)參考,按需加載節(jié)省 Token
└── assets/ # 可選:靜態(tài)資源
編寫核心文件 SKILL.md
這是 Skill 的靈魂,分為 **Frontmatter(元數(shù)據(jù))**? 和 **Markdown 正文(指令)**? 兩部分。
YAML Frontmatter(頭部元數(shù)據(jù))
放在文件頂部,用 ---包裹,定義技能的“身份”與“觸發(fā)條件”:
---
name: hello-world # 技能名,小寫kebab-case,與文件夾名一致
description: 當(dāng)用戶需要打招呼或說hello時(shí)使用的簡(jiǎn)單演示技能
trigger: "打招呼|hello|hi|問好" # 觸發(fā)詞(關(guān)鍵詞或正則),AI據(jù)此激活技能
tools: [exec, browser] # 聲明本技能需要用到的系統(tǒng)工具
version: 1.0.0
author: yourname
config: # 可選:需要的配置項(xiàng)(如API Key)
API_KEY:
type: string
required: true
---- name:必須唯一,僅含小寫字母、數(shù)字、短橫線。
- trigger:不寫則需用戶顯式指定;寫
"*"表示全局常駐;也可寫正則/^deploy .+ to (staging|prod)$/i。
Markdown 正文(給 AI 的指令)
Frontmatter 之后寫具體內(nèi)容,像給同事下達(dá)任務(wù)一樣清晰:
# Hello World 技能 ## 何時(shí)使用 當(dāng)用戶請(qǐng)求問候、說“你好”、“hello”或需要測(cè)試連接時(shí)使用此技能。 ## 執(zhí)行步驟 1. 使用 `echo` 工具(或 exec 運(yùn)行 `echo`)輸出:"Hello from your custom skill! ??" 2. 如果是中文語境,額外輸出當(dāng)前日期。 ## 輸入/輸出 - 輸入:無特定參數(shù) - 輸出:一段友好的問候語字符串 ## 注意事項(xiàng) - 不要執(zhí)行任意用戶輸入的代碼,僅輸出固定問候。 - 保持輸出簡(jiǎn)潔。
(可選)編寫執(zhí)行腳本
如果邏輯復(fù)雜,可在 scripts/下放腳本,在 SKILL.md 里指示 Agent 調(diào)用:
#!/bin/bash # scripts/fetch_news.sh CATEGORY=$1 curl -s "https://news.example.com/api/$CATEGORY" | jq '.[].title'
在 SKILL.md 正文中寫明:運(yùn)行 node scripts/fetch_news.js tech 獲取科技新聞。確保腳本有執(zhí)行權(quán)限 (chmod +x)。
加載與測(cè)試
放置目錄:將 my-custom-skill放入 ~/.openclaw/workspace/skills/。
刷新/重啟:讓 Agent 發(fā)現(xiàn)新技能,執(zhí)行 openclaw gateway restart或在聊天中說“刷新技能”。
驗(yàn)證列表:運(yùn)行 openclaw skills list確認(rèn)狀態(tài)為 ready。
測(cè)試觸發(fā):
- 發(fā)送消息:“跟我打個(gè)招呼”
- 或用命令行測(cè)試:
openclaw agent --message "give me a greeting"。
本地調(diào)試(SDK 模式):若用 TypeScript/JS SDK 開發(fā),可用 clawhub dev模擬調(diào)用。
進(jìn)階與發(fā)布
Workshop 提案:可用 openclaw skills workshop propose-create讓 AI 輔助審查再落地。
發(fā)布到 ClawHub:登錄 clawhub login后執(zhí)行 clawhub publish,需確保 SKILL.md完整且無硬編碼密鑰。
安全建議:使用 exec工具時(shí)嚴(yán)防命令注入;敏感信息(API Key)通過 env或 openclaw.json5的 config注入,勿寫死在文件里。
最佳實(shí)踐總結(jié)
- 描述精準(zhǔn):
description和trigger決定 AI 會(huì)不會(huì)用,關(guān)鍵詞要覆蓋全。 - 指令明確:寫“做什么、按什么順序、輸出什么格式”,減少歧義。
- Token 優(yōu)化:重內(nèi)容放
references/,SKILL.md只留核心流程。 - 單一職責(zé):一個(gè) Skill 專注一件事(如“查天氣”而非“查天氣+發(fā)郵件”)。
OpenClaw 查天氣 Skill 完整示例
下面我寫一個(gè)簡(jiǎn)單的例子:
下面給你一個(gè)可直接用的 OpenClaw 查天氣 Skill 完整示例,包含 SKILL.md+ 腳本 + 配置說明,適合新手直接復(fù)制跑通。
Skill 目錄結(jié)構(gòu)
weather/
├── SKILL.md
├── scripts/
│ └── get_weather.sh
└── references/
└── open-meteo-api.md
只需要 SKILL.md+ scripts/get_weather.sh就能運(yùn)行
references/僅用于給 AI 查閱 API 文檔,節(jié)省 Token
SKILL.md(核心文件)
路徑:~/.openclaw/workspace/skills/weather/SKILL.md
---
name: weather
description: 查詢城市當(dāng)前天氣和未來預(yù)報(bào),支持中文城市名自動(dòng)解析經(jīng)緯度
trigger: "天氣|氣溫|下雨|forecast|weather|查天氣"
tools: [exec]
version: 1.0.0
author: you
config:
UNITS:
type: string
default: "metric"
description: "metric(攝氏度) 或 imperial(華氏度)"
---
# Weather 天氣查詢技能
## 何時(shí)使用
當(dāng)用戶詢問某個(gè)城市的天氣、氣溫、是否下雨、未來幾天天氣時(shí)使用本技能。
## 執(zhí)行流程
1. **解析城市**
- 如果用戶給出的是中文城市名(如“北京”),先使用 geocoding API 轉(zhuǎn)換為經(jīng)緯度。
- 接口示例:
geocoding-api.open-meteo.com/v1/search?n…北京&count=1
2. **調(diào)用天氣 API**
- 使用 Open-Meteo(無需 API Key)
- 基礎(chǔ) URL:
api.open-meteo.com/v1/forecast
- 必須參數(shù):
- latitude
- longitude
- current_weather=true
- hourly=temperature_2m,precipitation_probability
- timezone=auto
3. **運(yùn)行腳本**
- 調(diào)用本地腳本獲取天氣數(shù)據(jù):
bash scripts/get_weather.sh "城市名"
- 示例:
bash scripts/get_weather.sh "Beijing"
bash scripts/get_weather.sh "東京"
4. **輸出規(guī)范**
- 使用自然語言總結(jié),不要直接輸出 JSON
- 至少包含:
- 城市名
- 當(dāng)前氣溫
- 天氣狀況(晴 / 雨 / 陰等)
- 降水概率
- 風(fēng)速
- 示例輸出:
> 北京當(dāng)前氣溫 22°C,晴朗,降水概率 10%,風(fēng)速 12 km/h。
## 錯(cuò)誤處理
- 若城市無法解析:提示用戶檢查城市名稱拼寫
- 若 API 超時(shí):提示“暫時(shí)無法獲取天氣數(shù)據(jù),請(qǐng)稍后重試”
## 參考
- API 詳細(xì)字段說明見 `references/open-meteo-api.md`scripts/get_weather.sh(執(zhí)行腳本)
路徑:~/.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¤t_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} 當(dāng)前氣溫 ${TEMP}°C,${COND},降水概率 ${RAIN}%,風(fēng)速 ${WIND} km/h。"
賦予執(zhí)行權(quán)限:
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 ## 天氣預(yù)報(bào) GET https://api.open-meteo.com/v1/forecast 常用參數(shù): - 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+: 雷暴
加載 & 測(cè)試
重啟 Gateway
openclaw gateway restart
查看技能狀態(tài)
openclaw skills list
聊天中測(cè)試
查一下上海的天氣
預(yù)期輸出示例:
上海 當(dāng)前氣溫 26°C,多云,降水概率 20%,風(fēng)速 14 km/h。
常見增強(qiáng)方向(進(jìn)階)
你可以繼續(xù)擴(kuò)展這個(gè) Skill:
- 支持未來 3~7 天預(yù)報(bào)(
daily=) - 自動(dòng)識(shí)別用戶所在城市(IP → 經(jīng)緯度)
- 多語言輸出(中 / 英)
- 封裝為 HTTP skill(OpenClaw 的
http工具) - 發(fā)布到 ClawHub:
clawhub publish
調(diào)試小技巧
手動(dòng)測(cè)試腳本:
./scripts/get_weather.sh "Beijing"
查看 Agent 實(shí)際調(diào)用命令(Gateway 日志)
若 AI 不觸發(fā) Skill,檢查:
trigger是否覆蓋用戶說法- Skill 是否在
skills list中顯示為ready
到此這篇關(guān)于一文帶你掌握openclaw skill開發(fā)的詳細(xì)教程的文章就介紹到這了,更多相關(guān)openclaw skill開發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
很多人第一次聽到 OpenClaw Skill,會(huì)把它理解成“插件”, 這個(gè)理解只對(duì)了一半, 插件通常給 Agent 增加新的能力,比如新的工具、新的消息渠道、新的模型 Provider,下面我2026-06-23
OpenClaw開發(fā)自定義Skills的實(shí)戰(zhàn)指南
為 OpenClaw開發(fā)自定義 Skills,就像是給它裝上能按你心意干活的新“手腳”,這個(gè)過程比你想象的要簡(jiǎn)單,只要遵循一定的規(guī)范和流程,即便是新手也能在短時(shí)間內(nèi)開發(fā)出第一個(gè)2026-05-20
本文介紹了OpenClawSkills的概念、獲取途徑、安裝方式、推薦Skills及配置方法,通過ClawHub官網(wǎng)、GitHub倉庫等獲取Skills,使用ClawHubCLI或OpenClawCLI安裝,文章還提供了安2026-05-18
OpenClaw實(shí)操指南之6個(gè)最值得優(yōu)先安裝的基礎(chǔ)元技能Skill
本文介紹了OpenClaw系統(tǒng)中6個(gè)最值得優(yōu)先安裝的基礎(chǔ)元技能,這些技能專注于管理和擴(kuò)展OpenClaw本身的功能,包括find-skills,skill-creator,mcp-builder,skill-vetter,web2026-05-14
OpenClaw到底能做什么?有什么用?推薦你先裝這幾個(gè)實(shí)用的Skills
Skills其本質(zhì)是一種更高層次的模塊化能力封裝,核心作用是擴(kuò)展智能體(如 OpenClaw)的功能邊界、提升任務(wù)執(zhí)行的專業(yè)性和效率,這篇文章主要介紹了OpenClaw到底能做什么以及有2026-05-11
Skill 是 OpenClaw 的核心擴(kuò)展機(jī)制,通過編寫一個(gè) SKILL.md 文件,你就能教會(huì) AI Agent 新的能力,本文將和大家分享8個(gè)常用的openclaw Skill,感興趣的小伙伴可以跟隨小編一2026-04-22
OpenClaw Skill開發(fā)與發(fā)布全流程解析
本文介紹了OpenClaw技能(Skill)的開發(fā)、部署、和ClawHub發(fā)布流程,包括Skill目錄結(jié)構(gòu)、frontmatter規(guī)范、本地開發(fā)與測(cè)試、打包進(jìn)應(yīng)用、以及上傳ClawHub的方法,感興趣的可以2026-04-17
OpenClaw Skills安裝與實(shí)戰(zhàn):打造你的AI技能工具箱
這篇文章主要為大家詳細(xì)介紹了如何使用 ClawHub 安裝和管理 OpenClaw 技能包,并通過實(shí)戰(zhàn)案例演示多個(gè)技能的協(xié)同使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下2026-04-07
OpenClaw開發(fā)Agent Skills最常見的12種錯(cuò)誤和對(duì)應(yīng)的解決方案
作者記錄了使用 OpenClaw 開發(fā) Agent Skills 時(shí)踩過的 12 個(gè)常見報(bào)錯(cuò)坑,并整理了完整解決方案,適合正在使用 OpenClaw 遇到問題的開發(fā)者參考2026-04-07
OpenClaw(龍蝦)Skills從零到發(fā)布的實(shí)戰(zhàn)指南
本文詳細(xì)介紹了OpenClaw的Skill機(jī)制,包括什么是Skill、Skill的目錄結(jié)構(gòu)、SKILL.md的核心格式、以及五種不同類型的Skill,還提供了開發(fā)最佳實(shí)踐、安全檢查清單和本地測(cè)試指南2026-04-02











