ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

SkillHub CLI 操作全指南:安装、升级、命名空间同步、发布与修复的安全实操手册

SkillHub CLI 操作全指南:安装、升级、命名空间同步、发布与修复的安全实操手册
  • 人工智能
  • AI Agent
  • AI 技能
  • 后端
  • 前端

【免费下载链接】skillhub

Self-hosted, open-source agent skill registry for enterprises. Publish & version skill packages, govern with RBAC and audit logs, deploy on-premise with Docker or Kubernetes.

项目地址:https://gitcode.com/gh_mirrors/sk/skillhub
点击查看免费下载

本篇指南以 skillhub-cli 技能 的配套参考文档 cli-operations.md 为核心,面向已经通过第一方@astron-team/skillhubCLI 连接 SkillHub 注册表、需要执行写操作(安装、升级、同步、发布、移除)的 Agent 与开发者。读完本文,你将掌握 SkillHub CLI 的「先只读检查、后显式写入」安全纪律、四种坐标写法、命名空间工作区的状态/差异/拉取/推送全流程,以及故障排查与结果上报的规范;文中每一条规则都对照了 CLI 源码 中的实际实现,可直接在真实注册表上安全复现。

使用前提:先解析注册表,再确认第一方 CLI

cli-operations.md是skillhub-cli技能的实操参考,使用前提是先完成 SKILL.md 中的两步准备:

  1. 解析<registry>:对已安装的 Skill,其同级目录.skillhub/metadata.json中的registry字段是后续搜索与升级的权威来源;否则按--registry参数 →SKILLHUB_REGISTRY环境变量 →~/.skillhub/config.json的registry字段 → 默认值https://skill.xfyun.cn的优先级解析。该优先级与 registry-service.ts 的实现完全一致,默认值定义在 constants.ts 中。
  2. 确认命令身份:skillhub必须存在且可证明是第一方实现(安装包为@astron-team/skillhub、版本输出为SkillHub CLI <version>)。缺失时全局安装:npm install --global @astron-team/skillhub,之后skillhub version验证。

在本文开始任何操作之前,请对当前 CLI 执行两个 live help 面(文档未列出的参数一律以实际 CLI 为准):

skillhub help <command> skillhub <command> --help

本指南中的<registry>只是一个待替换的值,不是 shell 语法或环境变量。整个操作过程必须始终使用同一个全局安装的、身份已验证的skillhub命令,不要切换到某个按次运行的包执行器。

写安全(Write Safety):所有写操作的前置纪律

SkillHub CLI 操作文档反复强调一条核心纪律:在命令写入本地或注册表状态之前,必须先建立精确的注册表、坐标(及可选版本)、Agent 与作用域或目录、现有安装归属、本地变更状态。用户提供的每个坐标、版本、查询、路径都必须视为不可信输入——作为单个引号包裹的参数传递,绝不作为 shell 代码求值。

先只读检查,再写

每一次写操作前都要先跑对应的只读检查,得到用户明确批准后再执行:

任务先检查(Inspect first)再写入(Write)
安装(Install)search、listinstall
升级(Upgrade)list、upgrade --checkupgrade
命名空间同步(Namespace sync)sync status、sync diff、sync pull --check选定的sync pull或sync push
发布(Publish)检查包、publish --dry-runpublish
移除(Remove)list精确的remove

需要额外批准的操作

如果用户当前请求没有明确指名该动作与目标,以下操作必须先获得批准:--force、--prune、remove --all、远程移除(remove --remote)、--hard、logout、doctor。反之,一个指名了精确动作与目标的请求本身即视为对该动作的批准。

当本地变更阻塞操作时,不要自行替用户选择提交(commit)、备份、删除或丢弃策略——比如升级遇到本地改动时不能擅自决定"丢弃改动"或"提交改动"。

坐标与目标:如何精确定位一次安装

四种坐标写法

写法解析出的命名空间解析出的 slug
slugglobalslug
namespace/slugnamespaceslug
@namespace/slugnamespaceslug
namespace--slugnamespaceslug

裸 slug 默认解析到global命名空间,除非用--namespace指定了另一个命名空间;坐标内的命名空间与命令行--namespace冲突时会被拒绝而不是静默覆盖。这套解析逻辑在 skill-name-parser.ts 中实现:@前缀要求存在/分隔符,--双短横线是另一种分隔,二者都不会出现在 slug 中(slug 内含/直接判为非法坐标)。已知坐标时优先使用完整坐标,避免裸 slug 因多命名空间歧义而匹配到错误安装。

Agent 目标与目录

  • 使用 live help 报告的 Agent profile(如codex、claude-code),多个目标重复传--agent。
  • 对不支持的 Agent,使用用户选择的绝对--dir。
  • --dir不能与--scope或--agent组合(该互斥约束同样体现在 install.ts 与 sync.ts 的参数校验中)。

安装后的验证

安装完成后,用同一注册表与同一 Agent 过滤条件运行skillhub list,确认:已安装版本正确,且目录下同时存在SKILL.md与.skillhub/metadata.json。list --json输出中会包含每个目标的namespace/slug@version、agent、installDir、installedAt与status(目录缺失时标记为missing),见 list.ts。

升级已安装的技能

升级只针对显式点名、且由 SkillHub 管理的安装;没有隐式的 upgrade-all 模式。标准流程:

skillhub list --registry <registry> --json skillhub upgrade '@team/code-review' --registry <registry> --check --json skillhub upgrade '@team/code-review' --registry <registry>

要点:

  • 先展示 check 计划,再写入。--check只生成计划不写文件。
  • 没有批准的--force时,本地变更会阻止替换。
  • 以下情况绝不绕过(即使有--force):降级(远端版本更旧)、来源冲突(非同一 SkillHub 来源)、非托管目录、指纹不匹配、以及无法保持单一共享版本的部分目标选择。

源码层面,这些规则落在 upgrade-service.ts 中:planSkillUpgrades会对每个目标做inspectTargets检查,发现 legacy 相对路径、目标缺失、metadata 无效、来源冲突、本地变更(指纹差异)、缺文件基线、远端版本更旧、版本不可比较、同版本但远端内容变化等情况,一律记为blocked(upgrade-service.ts)。版本比较基于 semver(skill-version-order.ts),文件指纹基于 SHA-256 逐文件哈希聚合(skill-fingerprint.ts)。单次升级最多接受 50 个坐标(MAX_UPGRADE_SELECTION,upgrade-service.ts);部分目标被拒绝是因为一条 inventory 记录对所有 target 共享同一个版本(upgrade-service.ts)。执行阶段某个升级提交后若后续失败,执行即停止,已提交的不回滚,剩余记为not-attempted(upgrade-service.ts)。

同步命名空间工作区

sync系列只用于已认证的非global命名空间(global没有成员关系概念,sync.ts 会直接拒绝)。拉取前先做只读检查:

skillhub sync status --namespace team-a --dir <skills-dir> --registry <registry> --json skillhub sync diff --namespace team-a --dir <skills-dir> --registry <registry> skillhub sync pull --namespace team-a --dir <skills-dir> --registry <registry> --check
  • sync status报告每个 Skill 的状态:up-to-date、update-available、local-changed、blocked、orphaned、not-installed(类型定义见 sync-service.ts)。
  • sync diff只列出有差异的条目及其变更文件路径。
  • sync pull --check检查整个命名空间且不写任何本地文件。

在非交互终端外,写入式 pull 必须显式选择每一个 Skill:

skillhub sync pull --namespace team-a \ --skill code-review \ --dir <skills-dir> \ --registry <registry>

交互式终端下 pull 会弹出多选列表,空选择不变更任何内容。--force不能用于覆盖本地变更、--prune不能用于清理孤儿 Skill,除非已经为确切受影响的路径获得批准;--force只作用于显式选中的 Skill,且永远无法绕过blocked类的发布安全检查(远端版本更旧、版本顺序不可判定、同版本内容变化)——这些场景需要核实发布后改用显式skillhub install(sync-service.ts)。孤儿(远端已不存在)默认保留,只有同时给出--prune与对应的--skill才会移除,且带本地变更的孤儿仍需--force。

上传前先验证而不创建版本:

skillhub sync push --all \ --namespace team-a \ --dir <skills-dir> \ --registry <registry> \ --dry-run

只有验证通过并确认后才追加--submit-review。一次提交可能返回SCANNING、UPLOADED、PENDING_REVIEW或PUBLISHED,只有PUBLISHED能证明立即可安装;--submit-review要求可见性为public或namespace-only,private会被拒绝(sync.ts)。push对已存在的namespace/slug/version(含仍处于 uploaded/pending review 的版本)报告冲突但不会覆盖,同一--all批次中的其他 Skill 继续处理。

发布技能

发布前先检查包,并要求根级SKILL.md存在,然后对选定注册表做校验:

skillhub publish ./my-skill \ --namespace team-a \ --visibility public \ --registry <registry> \ --dry-run
  • --dry-run会把包字节实际发送给选定注册表做校验,因此如果用户尚未要求校验或发布一个本地/私有包,必须先获得批准。
  • 校验失败时修复校验错误,而不是强行发布;发布实现(publish.ts)会输出Validation passed/failed、解析出的Slug、Version以及逐条Errors/Warnings。
  • 去掉--dry-run重复提交前,确认解析出的 namespace、slug、version、visibility 与包含文件。
  • 提交成功后会报告生命周期状态(如SCANNING、PENDING_REVIEW),成功的提交并不等于已发布,最终发布/评审状态要在 Web 页面确认(publish.ts 同时输出 detail 页面 URL)。

实现细节:传入目录会被自动打包为 zip 并排除.skillhub元数据目录(该目录只在安装时生成,不属于发布内容,publish.ts);传入文件必须是 zip 归档;visibility的public/namespace-only/private会被转换为服务端枚举PUBLIC/NAMESPACE_ONLY/PRIVATE。

移除或修复

先list,再用完整坐标 + 最窄的目标过滤:

skillhub list --agent codex --registry <registry> skillhub remove '@team/code-review' --agent codex --registry <registry>
  • 裸 slug 的移除可能匹配多个命名空间中同 slug 的安装,因此优先使用带命名空间的完整坐标。
  • 远程移除是破坏性操作:确认确切的 registry、namespace、slug。非交互环境下远程删除必须--hard(remove.ts)。
  • --hard只是抑制交互式确认提示,它从不授予权限。--all不能与--agent组合,--remote不能与--agent或--all组合(remove.ts)。

手工损坏或库存记录过期时,用skillhub doctor重建库存。其流程是:扫描<cwd>/.<agent>/skills/<slug>/.skillhub/metadata.json→ 按registry + namespace + slug分组 → 备份旧inventory.json(如存在,写到inventory.json.bak)→ 原子写入新inventory.json;扫描不到的目标会从旧库存中保留,同一 skill 在多个 target 间版本冲突时跳过并报告(doctor-service.ts)。注意:doctor不会替你解决已安装版本冲突,只负责重建库存记录。

故障排查

症状检查方向
未知命令或选项(Unknown command or option)检查 CLI 身份与两个 live help 面;只有获批后才更新。
认证失败(Authentication failure)确认 registry,运行whoami,让用户私下刷新凭据。
安装目录错误(Wrong installation directory)检查list --json;只有在选定明确的 scope、Agent 或目录后才重装。
安装或升级被阻塞(Install or upgrade blocked)保留文件;检查来源归属、元数据、版本方向与本地变更。
发布校验失败(Publish validation failed)修复报告指出的包、元数据、权限或扫描器问题。
库存过期(Inventory stale)运行doctor,审查其结果并保留其备份。
注册表错误(Registry error)保留服务端公开消息与requestId;不要猜测服务端原因。

排查命令的退出码也有迹可循:CLI 定义了generic、auth、network、filesystem、usage、validation六类退出码(constants.ts),脚本可以根据退出码区分参数错误(usage)、校验失败(validation)与认证问题(auth)。

认证与完成检查(配合 SKILL.md 使用)

本文档假设身份已建立,但需牢记 SKILL.md 的认证纪律:永远不要让用户把 token 贴进聊天、提示词、Skill、命令历史或仓库。需要认证时让用户在自己的终端输入(POSIX 下用read -rsp读入环境变量后skillhub login,PowerShell 7 用Read-Host -MaskInput),随后用skillhub whoami --registry <registry>验证身份;401/403通过登录或权限解决,不要把认证失败当作访问其他注册表的许可。

每次操作完成后,向用户报告:

  • 安装的坐标与版本;
  • 注册表来源;
  • Agent profile 与安装目录;
  • SKILL.md与.skillhub/metadata.json是否存在;
  • 当前 Agent 会话是否已加载该 Skill(可观测时);
  • 是否查询过其他注册表;
  • 任何跳过的连接、认证、完整性或本地变更问题。

对publish与sync push,还要报告实际的生命周期状态(SCANNING/UPLOADED/PENDING_REVIEW/PUBLISHED)。当安装、目标发现、Agent 加载或完整性验证失败时,不要宣称成功。

延伸阅读

  • 主技能定义:builtin-skills/skills/skillhub-cli/SKILL.md
  • 本文档来源:builtin-skills/skills/skillhub-cli/references/cli-operations.md
  • CLI 完整用户指南:cli/README.md
  • 命令实现:cli/src/commands(install/list/search/upgrade/sync/publish/remove/doctor/login/logout/whoami/update 等)
  • 服务层实现:cli/src/services(upgrade-service、sync-service、doctor-service、skill-fingerprint、skill-version-order、registry-service 等)
  • 集成测试:cli/test/integration(install-command、upgrade-command、sync-command、publish-command、remove-command、search-command、doctor-command 等)
  • 人工智能
  • AI Agent
  • AI 技能
  • 后端
  • 前端

【免费下载链接】skillhub

Self-hosted, open-source agent skill registry for enterprises. Publish & version skill packages, govern with RBAC and audit logs, deploy on-premise with Docker or Kubernetes.

项目地址:https://gitcode.com/gh_mirrors/sk/skillhub
点击查看免费下载

相关推荐

上一篇:Palmier Pro 的 MCP 集成实战:让 Claude Code、Codex、Cursor 直接操控 macOS AI 视频编辑器
下一篇:GHelper免费开源上手指南:华硕笔记本控制工具的完整配置流程

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进