Skill 格式
磁碟上
Skill 是一個資料夾。 必要項目:SKILL.md(或skill.md;也接受舊版的skills.md)
- 任何支援用的一般檔案(請參閱「Skill 檔案」)
.clawhubignore(發布時的忽略模式,舊版為.clawdhubignore).gitignore(也會套用)
GitHub 匯入
網頁版 GitHub 匯入工具的限制比本機發布/同步更嚴格。它只會探索已登入 GitHub 帳號擁有的公開、非分支儲存庫中的SKILL.md 或舊版 skills.md 檔案。它不會匯入私人儲存庫、分支、
已封存/停用的儲存庫或第三方公開儲存庫。
本機安裝中繼資料(由命令列介面寫入):
<skill>/.clawhub/origin.json(舊版為.clawdhub)
<workdir>/.clawhub/lock.json(舊版為.clawdhub)
SKILL.md
- 含選用 YAML frontmatter 的 Markdown。
- 伺服器會在發布期間從 frontmatter 擷取中繼資料。
description會用作 UI/搜尋中的 Skill 摘要。
name 應與父目錄相符,並使用
1–64 個小寫字母、數字或連字號。ClawHub 會將可路由的 slug 與
目錄顯示名稱分開保存,因此其他用戶端的既有名稱仍可發布,
且不會遭到靜默改寫。目錄清單在視覺上可能會縮短過長的名稱,
但不會變更儲存的名稱。
Frontmatter 中繼資料
Skill 中繼資料是在SKILL.md 頂端的 YAML frontmatter 中宣告。這會告知登錄檔(以及安全分析)你的 Skill 執行時需要什麼。
基本 frontmatter
執行階段中繼資料(metadata.openclaw)
在 metadata.openclaw 下宣告 Skill 的執行階段需求(別名:metadata.clawdbot、metadata.clawdis)。
requires.env。需要各變數的中繼資料時,請使用 envVars,包括使用 required: false 的選用變數。
完整欄位參考
安裝規格
若 Skill 需要安裝相依性,請在install 陣列中宣告:
brew、node、go、uv。
選用環境變數
在metadata.openclaw.envVars 下宣告選用環境變數,並設定 required: false。請勿將選用項目新增至 requires.env,因為 requires.env 表示缺少這些變數時 Skill 無法執行。
這為何重要
ClawHub 的安全分析會檢查 Skill 宣告的內容是否與其實際行為相符。如果程式碼參照TODOIST_API_KEY,但 frontmatter 未在 requires.env、primaryEnv 或 envVars 下宣告,分析便會標記中繼資料不符。保持宣告準確有助於 Skill 通過審查,也能協助使用者瞭解他們正在安裝什麼。
範例:完整 frontmatter
Skill 檔案
發布接受 Skill 資料夾中的所有一般檔案,不限副檔名。忽略檔案、 隱藏路徑、符號連結、macOS 中繼資料及伺服器端大小限制仍然適用。- 大小受限且包含有效 UTF-8 的檔案,可以逸出的純文字形式預覽,並納入 有限文字分析。
- 其他檔案會保留其確切位元組,並可供下載。
- 安全掃描器會收到完整的已儲存成品;文字偵測是呈現與 分析方面的考量,而不是上傳允許清單。
- 套件組合總大小:50MB。
- 嵌入文字包含
SKILL.md+ 最多約 40 個大小受限的 UTF-8 檔案(盡力而為的上限)。
Slug
- 預設衍生自資料夾名稱。
- 套件範圍必須與 ClawHub 發布者代號完全相符。發布者代號可使用小寫字母、數字、連字號、句點和底線;開頭與結尾必須是小寫字母或數字。
- 套件 slug 必須為小寫且符合 npm 安全格式,例如
@example.tools/demo-plugin或demo-plugin。
版本管理與標籤
- 每次發布都會建立新版本(semver)。
- 標籤是指向版本的字串指標;通常使用
latest。
授權條款
- 所有發布至 ClawHub 的 Skill 均依
MIT-0授權。 - 任何人皆可使用、修改及重新散布已發布的 Skill,包括商業用途。
- 不要求標示出處。
- 請勿在
SKILL.md中新增衝突的授權條款;ClawHub 不支援針對個別 Skill 覆寫授權條款。
付費 Skill
- ClawHub 不支援付費 Skill、個別 Skill 定價、付費牆或收益分潤。
- 請勿將定價中繼資料新增至
SKILL.md;該資料不屬於 Skill 格式,且不會使已發布的 Skill 成為付費項目。 - 如果 Skill 整合付費第三方服務,請在 Skill 指示與環境變數宣告中清楚記載外部費用和必要帳號(必要變數使用
requires.env,選用變數則使用envVars搭配required: false)。