Install
openclaw skills install @humanlike2026/publish-npm-clawhubPublish 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 skill/plugin, investigate ClawHub suspicious or flagged results, prepare a sanitized release directory, or verify release metadata, versions, accounts, slugs, and scanner status. Always use this skill when publish accounts must come from a local config file and must not be uploaded.
openclaw skills install @humanlike2026/publish-npm-clawhubVersion: 1.0.6 · License: Apache-2.0 · Author: jianghaibo
Required tools: Read, Write, Bash · Requires: python3, git, clawhub, curl
这个 skill 用来把“容易出错的发布流程”变成固定动作。
先读:
references/workflow.mdreferences/scanner-playbook.md如果仓库里存在 scripts/release_guard.py,发布前优先运行它。
这个脚本只做本地文件、Git 和发布目录检查;真正的联网发布发生在后续显式执行 clawhub / npm 命令时。
package.json 的 plugin 才走 npmclawhub logoutclawhub loginclawhub whoami默认使用:
config/publish.accounts.local.json
如果文件不存在:
config/publish.accounts.example.json 复制一份git check-ignore 确认它被忽略如果该文件已被 Git 跟踪,先停止发布,先修复仓库。
判断当前对象属于哪类:
检查这些文件:
SKILL.mdskill.jsonpackage.jsonopenclaw.plugin.json.codex-plugin/plugin.json发布前确认:
config / primaryEnv / 联网说明存在优先执行:
python3 scripts/release_guard.py . \
--config config/publish.accounts.local.json \
--prepare-release-dir /tmp/publish-release
如果脚本报错:
FAIL 必须先修WARN 需要人工判断,尤其是可疑扫描相关 warning仅在下面条件成立时执行:
package.jsonnpm.enabled = true发布前确认:
npm whoaminpm pack --dry-run 结果干净使用临时发布目录,不要直接发仓库根目录。
发布命令结构:
clawhub publish /tmp/publish-release \
--slug <slug> \
--name "<display-name>" \
--version <semver> \
--changelog "<changelog>"
发布后必须进入闭环,不要只做一次检查。
固定动作:
clawhub inspect <slug> 已经指向最新版本。如果最新版本还在 pending:
如果最新版本仍然是 suspicious / flagged:
停止条件:
clawhub inspect <slug> 指向最新版本suspicious / flaggedstaticScan.status = cleanOpenClaw = Benign 或更好如果页面出现 suspicious / flagged:
clawhub inspect <slug>curl 抓页面 HTMLenv 读取 + 网络发送~/.openclaw/secrets.jsonconfig.json以 follow-builders-sidecar 为例,反复命中可疑标签,通常不是因为“功能本身不该存在”,而是因为下面几件事没有一起处理:
SKILL.md / README 里继续高频出现“私有 config / 本地 credentials / secret 路径”等字眼,扫描和 LLM 审核仍可能持续提高风险判断。Credentials / Persistence & Privilege 经常只是 capability note,不等于 suspicious / flagged。staticScan.status、summary、页面内嵌数据,而不是看到 capability note 就误判“还没修好”。inspect 可能还看不到,页面也可能还是旧内容。在 follow-builders-sidecar 这次案例里,最终让标签消失的不是单点文案修改,而是一组结构性修复:
命中可疑时,优先按这个顺序改:
secrets.json / 私有 config.json 的依赖SKILL.md / README / SECURITY 中补清楚联网说明和发送字段Credentials / Persistence note,但最新版本 staticScan.status = clean,不要把 note 误判成仍然 suspicious最终汇报时至少覆盖: