← 返回
未分类

Publish npm + ClawHub

Publish OpenClaw skills or plugins to npm and ClawHub with a guarded workflow. Use this whenever the user asks to release, publish, ship, or republish a skil...
将 OpenClaw 技能或插件发布至 npm 与 ClawHub,使用受保护的工作流,适用于用户请求发布、上线或重新发布的场景。
humanlike2026 humanlike2026 来源
未分类 clawhub v1.0.6 1 版本 100000 Key: 无需
★ 0
Stars
📥 394
下载
💾 0
安装
1
版本
#latest

概述

Publish npm + ClawHub

> Version: 1.0.6 · License: Apache-2.0 · Author: jianghaibo

>

> Required tools: Read, Write, Bash · Requires: python3, git, clawhub, curl

这个 skill 用来把“容易出错的发布流程”变成固定动作。

先读:

  • references/workflow.md
  • references/scanner-playbook.md

如果仓库里存在 scripts/release_guard.py,发布前优先运行它。

这个脚本只做本地文件、Git 和发布目录检查;真正的联网发布发生在后续显式执行 clawhub / npm 命令时。

核心原则

  1. 发布账号、handle、slug、npm 用户名统一放在本地配置文件,不写进仓库,不上传。
  2. ClawHub 发布不要直接拿仓库根目录上传,先生成临时发布目录。
  3. 对 skill / plugin 分别判断是否需要 npm:
    • package.json 的 plugin 才走 npm
    • 纯 skill 通常只走 ClawHub
  4. ClawHub 每次发布前固定执行:
    • clawhub logout
    • clawhub login
    • clawhub whoami
  5. 发布完成后一定复核线上状态,不能只看命令退出码。

本地配置

默认使用:

config/publish.accounts.local.json

如果文件不存在:

  • 先从 config/publish.accounts.example.json 复制一份
  • 填真实账号
  • git check-ignore 确认它被忽略

如果该文件已被 Git 跟踪,先停止发布,先修复仓库。

建议流程

1. 识别发布对象

判断当前对象属于哪类:

  • skill
  • plugin
  • skill + plugin 组合

检查这些文件:

  • SKILL.md
  • skill.json
  • package.json
  • openclaw.plugin.json
  • .codex-plugin/plugin.json

2. 对齐版本和元数据

发布前确认:

  • 所有 manifest 里的版本一致
  • 代码里硬编码的版本号和 manifest 一致
  • ClawHub 所需的 config / primaryEnv / 联网说明存在
  • 不把真实账号写进 README / SKILL / JSON

3. 运行发布前守门检查

优先执行:

python3 scripts/release_guard.py . \
  --config config/publish.accounts.local.json \
  --prepare-release-dir /tmp/publish-release

如果脚本报错:

  • FAIL 必须先修
  • WARN 需要人工判断,尤其是可疑扫描相关 warning

4. npm 发布

仅在下面条件成立时执行:

  • 存在 package.json
  • 本地配置里 npm.enabled = true

发布前确认:

  • npm whoami
  • 包名正确
  • 版本号已递增
  • npm pack --dry-run 结果干净

5. ClawHub 发布

使用临时发布目录,不要直接发仓库根目录。

发布命令结构:

clawhub publish /tmp/publish-release \
  --slug <slug> \
  --name "<display-name>" \
  --version <semver> \
  --changelog "<changelog>"

6. ClawHub 闭环复核

发布后必须进入闭环,不要只做一次检查。

固定动作:

  1. 先确认 clawhub inspect 已经指向最新版本。
  2. 再确认页面版本也已经更新。
  3. 再看扫描结果是不是已经 clean / benign。

如果最新版本还在 pending

  • 可以等待并复核
  • 但每一轮等待都必须以“扫描状态变化”为目标

如果最新版本仍然是 suspicious / flagged

  • 不要只重复执行同一组检查
  • 不要在没有代码、文档或 manifest 变化的前提下反复重看页面
  • 必须立即进入修复动作
  • 修复后必须递增版本并重新发布

停止条件:

  • clawhub inspect 指向最新版本
  • 最新页面或页面内嵌数据不再显示 suspicious / flagged
  • staticScan.status = clean
  • OpenClaw = Benign 或更好

可疑扫描复核

如果页面出现 suspicious / flagged

  1. 同时看:
    • clawhub inspect
    • ClawHub 页面
    • curl 抓页面 HTML
  2. 区分是页面缓存,还是最新版本真的还没过扫描。
  3. 如果静态规则命中,优先看:
    • 同文件 env 读取 + 网络发送
    • 同文件 文件读取 + 网络发送
    • 提到 ~/.openclaw/secrets.json
    • 提到私有 config.json
  4. 修复后递增版本重新发,不要原地重发同版本。
  5. 如果已经确认“同一个版本仍然可疑”,下一步必须是修复,不是继续重复检查。

真实踩坑:为什么改了很多次还是会继续可疑

follow-builders-sidecar 为例,反复命中可疑标签,通常不是因为“功能本身不该存在”,而是因为下面几件事没有一起处理:

  1. 只改了功能,没有改触发扫描的代码结构。
    • 例如把“读取本地 OpenClaw/Feishu 配置”和“调用 Feishu API 发网络请求”继续放在同一个文件里。
    • 从功能视角看只是正常发消息;从扫描器视角看,这仍然像“读取本地敏感信息后外发”。
  2. 只改了代码,没有改文档和元数据里的敏感表述。
    • 如果 SKILL.md / README 里继续高频出现“私有 config / 本地 credentials / secret 路径”等字眼,扫描和 LLM 审核仍可能持续提高风险判断。
  3. 把能力标签误当成可疑标签。
    • 页面里的 Credentials / Persistence & Privilege 经常只是 capability note,不等于 suspicious / flagged
    • 真正要看的是最新版本的 staticScan.status、summary、页面内嵌数据,而不是看到 capability note 就误判“还没修好”。
  4. 没有区分“扫描 pending / 页面缓存 / 真正仍然 flagged”。
    • 刚发布完时,inspect 可能还看不到,页面也可能还是旧内容。
    • 如果不先确认“最新版本是不是已经切过去”,就很容易把旧结果当成新结果。

最终真正起作用的修复

follow-builders-sidecar 这次案例里,最终让标签消失的不是单点文案修改,而是一组结构性修复:

  1. 发布时只上传白名单临时目录,不直接发仓库根目录。
  2. 把“凭证/本地配置读取”和“网络调用”拆到不同文件:
    • credential resolver
    • local credential storage
    • Feishu API client
    • sender main flow
  3. 本地直连凭证保留在用户本机路径,且不上传仓库、不进入发布目录。
  4. 文档里明确说明:
    • 会联网到哪些端点
    • 哪些配置是本地存储
    • 为什么需要这些本地权限
    • 不会读取哪些无关 secrets
  5. 发布后以“最新版本页面内嵌扫描结果”为最终准绳,而不是凭页面顶部零散文案判断。

优先修复策略

命中可疑时,优先按这个顺序改:

  1. 把配置读取拆到单独文件
  2. 把网络 client 拆到单独文件
  3. 显式限制只读取白名单环境变量
  4. 删除代码和文档里对 secrets.json / 私有 config.json 的依赖
  5. SKILL.md / README / SECURITY 中补清楚联网说明和发送字段
  6. 如果文档里必须提到这些敏感路径,明确写成“不会读取 / 已移除依赖 / 高风险关键词示例”,避免歧义
  7. 如果业务确实需要“本地凭证 + 外部发送”,优先做职责拆分,不要把“读取本地凭证”和“发网络请求”继续放在同一个实现文件里
  8. 如果页面只剩 Credentials / Persistence note,但最新版本 staticScan.status = clean,不要把 note 误判成仍然 suspicious

结果汇报格式

最终汇报时至少覆盖:

  • 发布对象
  • npm 版本和 dist-tag
  • ClawHub slug 和最新版本
  • 扫描状态是否 clean / benign / pending
  • 是否还存在可疑标签
  • 若还有问题,下一步阻塞点是什么

版本历史

共 1 个版本

  • v1.0.6 当前
    2026-05-07 06:59 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

it-ops-security

OpenClaw Backup

alex3alex
备份与恢复 OpenClaw 数据。适用于创建备份、设置自动备份计划、从备份恢复或管理备份轮转。处理 ~/.openclaw 目录归档并包含适当的排除规则。
★ 90 📥 31,034
it-ops-security

Free Ride - Unlimited free AI

shaivpidadi
管理OpenClaw的OpenRouter免费AI模型,自动按质量排名模型,配置速率限制备用方案,并更新opencla...
★ 471 📥 78,358
ai-agent

Human-Like Memory

humanlike2026
HumanLike Memory / Human‑Like Memory 是一个持久的 AI 代理记忆系统,用于长期记忆的搜索、回忆和保存。它帮助代理存储事实、偏好及其他相关信息,以便后续检索。
★ 23 📥 734