SkillHub 装发一体(skillhub-sync)
把两个底层技能统一编排成一个闭环:
- 📥 装 → 委托
skillhub-install-nokey:免密钥从 SkillHub 取第三方技能(搜 apikey=false 公开镜像 → curl -L 下载 → 安全审计 → 装入~/.workbuddy/skills/)。 - 📤 发 → 委托
skillhub-publish:把本地~/.workbuddy/skills/<slug>/上架到 SkillHub 社区源(frontmatter 校验 → dry-run → publish → 持久化登录)。
何时用
- 用户要在 SkillHub 上同时做"装"和"发"。
- 用户想把本地技能发到社区,或从社区取等价公开版(避免重复造轮子)。
- 作为 SkillHub 相关请求的总入口:先判断用户意图是装还是发,再路由到对应子技能。
前置条件:
- skillhub CLI 已装:~/.local/bin/skillhub(curl ...install.sh | bash -s -- --cli-only --no-self-upgrade)。
- 装:无需密钥(走公开镜像)。
- 发:需 SkillHub 社区令牌 skh_...(网页「个人设置 → API Token」生成),首次发完用 skillhub login --key 持久化。
路由决策
用户意图?
├─ 装 / install / @ns/skill 装不上 / 百通榜 ──► 调用 skillhub-install-nokey
├─ 发 / publish / 上架 / 把技能传到社区 ──► 调用 skillhub-publish
└─ 既要装又要发 / 同步 / 闭环 ──► 先装(验证可用)后发(对外共享)
装(委托 skillhub-install-nokey)
- 确认卡点:直接
skillhub install @ns/skill --dir ~/.workbuddy/skills/若报Not logged in to @ns→ 走公开镜像。 - 搜公开镜像(apikey=false 的
clawhub_*/user_*同名同作者版):
bash python3 ~/.workbuddy/skills/skillhub-install-nokey/scripts/download_skill.py <slug>
或手动搜索 API(见skillhub-install-nokey技能)。 curl -fsSL -L跟随 302 重定向下载到暂存目录并解压。- 逐文件安全审计(无 rm -rf / curl|bash / 凭据外传 / 提权 / 混淆),🟢 后才装入
~/.workbuddy/skills/<slug>/。
> 关键坑:CLI 自带下载对 SkillHub 下载端点会 404(未跟随 302),必须手动 curl -L。
发(委托 skillhub-publish)
- 确认 SKILL.md frontmatter 含
slug(kebab 3–128) /version(SemVer) /displayName(缺一会报_validate_metadata拒绝)。 - 预检:
skillhub publish --dry-run ~/.workbuddy/skills/<slug>。 - 发布:
- 已登录:skillhub publish ~/.workbuddy/skills/<slug> --changelog "..."
- 未登录:skillhub publish ... --token skh_令牌 - 持久化:
skillhub login --key skh_令牌(今后免贴令牌)。 - 返回
ok:true+skillId即成功,社区源默认进入待审核(pending 属正常)。
闭环示例(先装后发)
> 场景:本地写好一个新技能,想让它既能自己用、也能被社区装回。
- 在
~/.workbuddy/skills/<slug>/写好 SKILL.md(含 slug/version/displayName)。 skillhub publish --dry-run通过。skillhub publish ... --changelog "..."→ 上架(待审核)。- 想验证公开可装:等审核过 →
skillhub install <slug> --dir /tmp/verify/确认他人能拉取。
注意
- 两个子技能已各自上架 SkillHub 社区源并驻留本地用户级技能库,本技能是它们的编排层,不重复实现细节。
- 版本递增:同一
version重复发会冲突。 - CLI 路径
~/.local/bin/skillhub因环境而异,找不到先which skillhub。 - 完整字段要求与报错对照见
skillhub-publish的references/publish.md。