📦 Publish Skill Publisher — 发布技能发布者
v1.1.0Claude Code 技能的通用发布工具。验证、打包并发布到 ClawHub、Hermes Agent 和 anthropics/skills,支持双语 README。
运行时依赖
安装命令
点击复制技能文档
技能发布者 一个用于任何 Claude Code 技能的通用发布工作流程。打包、验证并发布到 ClawHub(OpenClaw)、Hermes Agent 和 anthropics/skills(Claude Code)。
何时使用 用户想要将他们构建的技能发布到一个或多个市场 用户需要为他们的技能创建一个双语(EN/ZH)的 README 用户想要在发布之前验证 SKILL.md 格式 用户需要帮助完成 clawhub 发布或 GitHub PR 提交
先决条件 在使用此技能之前,请检查环境中以下内容(或询问用户): 身份验证 这些令牌预先配置在 ~/.env 和 shell 环境中。自动读取它们——不要询问用户: 令牌 环境变量 源 GitHub PAT GITHUB_TOKEN ~/.env 或 env GitHub 用户 GITHUB_USER ~/.env 或 env ClawHub 令牌 CLAWHUB_TOKEN ~/.env 或 env 如果变量缺失,请先读取 ~/.env,然后询问用户。 网络连接 在任何 GitHub API 调用之前,请先测试连接: curl -s -m 5 https://api.github.com/repos/NousResearch/hermes-agent > /dev/null 2>&1 && echo "直接 OK" || echo "直接 FAIL" 如果直接访问失败(在受限网络中很常见),请从 ~/.env 加载代理: source ~/.env # ~/.env 可能包含(可能被注释掉): # https_proxy=http://192.168.28.92:7897 # http_proxy=http://192.168.28.92:7897 # 仅当直接访问失败时导出代理: export https_proxy=http://192.168.28.92:7897 export http_proxy=http://192.168.28.92:7897 # 使用代理重新测试: https_proxy=$https_proxy curl -s -m 10 https://api.github.com/ > /dev/null 2>&1 && echo "代理 OK" || echo "代理 FAIL" 回退策略(按优先顺序): 直接 HTTPS 访问 —— 在无限制网络中有效 从 ~/.env 加载代理 —— 读取 https_proxy/http_proxy 值;如果被注释掉,请取消注释并导出它们 SSH 端口 22 —— git@github.com:... 在大多数环境中无需代理;用于 git 克隆/推送,但不用于 GitHub REST API(curl/gh api) 当代理也宕机时:跳过 GitHub API PR 创建。通过 SSH 推送分支并指示用户通过浏览器手动创建 PR。
工作流 步骤 1:验证源技能 python3 ~/.skills/skill-publisher/scripts/validate_skill.py <技能路径> 检查:SKILL.md 存在,有效的 YAML 前置内容,必需字段(名称,描述),名称格式(小写,连字符),描述 <= 1024 个字符,无硬编码的秘密,文件大小 <= 100,000 个字符。
步骤 2:生成发布包 python3 ~/.skills/skill-publisher/scripts/generate_package.py \ --source ~/.skills/<技能名称> \ --output /tmp/publish-<技能名称> \ --platforms clawhub hermes anthropics 产生: /tmp/publish-<技能名称>/ ├── SKILL.md # 从源复制 ├── README.md # 双语(EN/ZH)README,包含示例 ├── examples/ # 从源技能复制 └── .clawhub.json # ClawHub 清单
步骤 3:特定平台的发布 ClawHub(OpenClaw) CRITICAL:始终传递 --slug <技能名称> 以防止 ClawHub 使用目录名称作为 slug。 没有 --slug,/tmp/publish-my-skill/ 的发布将创建一个名为 publish-my-skill 的副本,而不是 my-skill。 clawhub publish /tmp/publish-<技能名称> --version <版本> --slug <技能名称> 如果 CLI 不可用:安装 npm i -g clawhub 或通过 clawhub.ai 上传。
Hermes Agent(GitHub PR) 目标:NousResearch/hermes-agent → skills/creative/<技能名称>/SKILL.md 在 GitHub 上分叉存储库 克隆分叉,复制 SKILL.md 到 skills/creative/<技能名称>/ 提交,推送,创建 PR
anthropics/skills(GitHub PR) 目标:anthropics/skills → skills/<技能名称>/SKILL.md 与 Hermes 相同的过程,不同的存储库。
步骤 4:验证 # ClawHub curl -s "https://clawhub.ai/api/v1/skills?slug=<技能名称>" # Hermes / anthropics —— 检查原始 GitHub URL
帮助脚本 脚本 目的 scripts/validate_skill.py 验证 SKILL.md 格式 scripts/generate_package.py 生成带有双语 README 的发布包 scripts/gen_clawhub_manifest.py 生成 .clawhub.json scripts/create_pr.py 通过 API 创建 GitHub PR
常见陷阱 SKILL.md 的第一个字节必须是 --- —— 无 BOM,无空白行 ClawHub 拒绝硬编码的秘密 —— 扫描脚本/ 之前发布 Hermes 需要元数据 —— metadata.hermes.tags 和相关技能 网络问题 —— 总是先测试连接。如果直接 HTTPS 失败,请从 ~/.env 加载代理并重新测试。如果代理也失败,请使用 SSH(git@github.com:...)进行 git 操作,并告诉用户通过浏览器手动创建 PR ClawHub slug 不匹配 —— 总是传递 --slug <技能名称> 时发布;否则,目录名称将成为 slug,创建一个错误/副本条目(例如 publish-my-skill 而不是 my-skill)