openclaw

关注公众号 jb51net

关闭
AI > openclaw >

OpenClaw Skill开发与发布全流程解析

Ts-Drunk

本文面向在本仓库中开发、调试、打包进应用、发布到 ClawHub 的 OpenClaw Skill。

官方参考:

1. Skill 是什么、装在哪里

2.SKILL.mdfrontmatter(openclaw 会解析的部分)

TsClaw 会从 SKILL.md 里读出 namedescriptionversion(可选) 以及 metadata.openclaw,用于:

2.1metadata.openclaw常见字段

与仓库内实现一致(见 src-tauri/src/commands/skills.rsOpenClawMetaRaw / SkillMetadata):

字段含义
primaryEnv与 skills.entries[slug].apiKey 对应的主环境变量名(可为空字符串表示不绑单一 Key)
requires.env必填环境变量列表
optional.env可选环境变量列表
requires.bins必须在 PATH 中的可执行文件名列表
install可选,SkillInstallSpec 数组(id / kind / formula / bins / label / os 等)

2.2 示例(摘自本仓库bundled-skills)

需要 API Key 的 Skill:

---
name: openclaw-translate
description: >
  多语言翻译…… Use when: … NOT for: …
metadata:
  openclaw:
    primaryEnv: BAIDU_TRANSLATE_APPID
    requires:
      env:
        - BAIDU_TRANSLATE_APPID
        - BAIDU_TRANSLATE_SECRET
---

纯本地、无 Key 的 Skill:

---
name: tianshu-xhs-note
description: >
  … Use when: … NOT for: …
metadata:
  openclaw:
    primaryEnv: ""
---

2.3description怎么写(给模型「何时调用」用)

本仓库内 Skill 的惯例(可与 OpenClaw 文档一起对照):

  1. 一句话能力 + Use when: 典型用户说法/场景。
  2. 可选 NOT for: 写清不要误用的边界,减少错误触发。
  3. 正文里再写 When to Run、Workflow、参数表、示例命令,与 frontmatter 呼应。

3. 本地开发流程

3.1 目录放哪

3.2 脚本与依赖

3.3 自检清单

4. 打进 OpenClaw 安装包(bundled-skills)

4.1 同步到src-tauri/bundled-skills/

  1. 将 slug 加入 scripts/download-bundled-skills.mjs 里的 SKILLS 数组(若需要随发行版打包)。
  2. 运行(需网络拉 ClawHub 时):npm run skills:bundlednode scripts/download-bundled-skills.mjs
  3. 本地优先:脚本会优先从 ~/.openclaw/skills/<slug> 复制,其次 仓库/skills/<slug>,都没有再请求 ClawHub。适合你先本地改好再一键拷进 bundled-skills

4.2 静默更新已安装用户的内置副本

应用启动时会对比:

仅当你希望已安装用户在不升应用 semver 的情况下覆盖内置 Skill 时:递增 BUNDLED_SKILLS_REVISION(当前实现见 skills.rsschedule_auto_install_bundled_skills 注释)。

5. 发布到 ClawHub(上传 Skill)

5.1 CLI

  1. 安装并登录:npm install -g clawhub,执行 clawhub login
  2. 在 Skill 目录或仓库路径执行发布,例如本仓库脚本中的形式:
clawhub publish "skills/${slug}" \
  --slug "$slug" \
  --name "显示名称" \
  --version 1.0.0 \
  --changelog "说明本次变更"

或使用 npx(见 scripts/publish-aiznt-skills.mjs):

npx --yes clawhub@latest publish <目录> --slug ... --name ... --version ... --changelog ... --tags ...

部分 Skill 使用目录内 clawhub.json 维护 name / version / tags 等,再被发布脚本读取(aiznt-* 系列)。

5.2 网页上传

ClawHub 支持在浏览器上传压缩包:https://clawhub.ai/upload(需按站点要求登录,如 GitHub)。

5.3 与本仓库相关的限制与坑

问题说明与处理
新 slug 限流仓库内注释:每小时最多约 5 个新 slug;批量发布用 publish-student-skills-clawhub.sh / publish-aiznt-skills.mjs 时已说明失败时隔一段时间再跑或 --from 跳过已成功的。
HTTP 429download-bundled-skills.mjs 对下载有重试;发布端若遇限流同样需等待 Retry-After 或错峰。
版本已存在提高 --version 或 clawhub.json 里的 version 后再发。
ZIP 目录结构ClawHub 下载解压后若只有一层子目录(名为 slug 或 skill),应用侧会上移一层;本地打包时避免多嵌套导致 SKILL.md 不在根目录。
metadata 格式TsClaw 用 YAML 解析 frontmatter;metadata 可为嵌套 YAML 或部分场景下的 JSON 字符串(见 read_skill_metadata)。若解析失败,设置页可能看不到 Key/bin 提示;可参考已上架 Skill 或 tianshu-qiniu-upload README 中的说明。

6. 与本仓库其他脚本的关系(按需)

脚本作用
scripts/publish-student-skills-clawhub.sh一批 tianshu-* 学生向 Skill 发布到 ClawHub(未写进默认 bundled 列表时可单独发)。
scripts/publish-aiznt-skills.mjs发布 aiznt-* 系列,支持 --dry-run、--from slug。
npm run skills:baoyu从 JimLiu/baoyu-skills 同步 baoyu-* 到 bundled-skills(另一路技能源)。
npm run bundles:sync同步 bundled skills、钉钉插件、openclaw tgz 等(发布前整包准备时常用)。

7. 小结检查清单

开发

进包

上架 ClawHub

到此这篇关于OpenClaw Skill开发与发布全流程解析的文章就介绍到这了,更多相关OpenClaw Skill开发与发布内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!