跳到正文
CF / PROJECT 02

skill-hub

AI Agent 技能的包管理器

把 Agent 技能当作有版本、可安装的包来管理的包管理器。

状态
活跃开发中
开始于
2026
技术栈
Go · CLI · AI Agent · Developer Tools
01

Why

为什么

编程 Agent 进入了日常开发,每一个都学会了加载可复用的技能(Skill)。可技能本身还是被复制来复制去的文件夹:散在仓库里、家目录里,以及四种不同的运行时目录结构里。

技能一旦被复制,就没人说得清正在运行的是哪个版本、从哪来的、改坏了怎么撤回。skill-hub 要做的,是给技能补上代码包早就有的生命周期。

02

Problem

问题
  1. 01

    没有唯一来源:同一个技能在 Codex、Claude、Gemini、Hermes 的目录里各自漂移。

  2. 02

    没有版本和历史:一次更新直接覆盖文件夹,出了问题无处回滚。

  3. 03

    无法发现:想找一个技能,得事先知道它的仓库路径。

  4. 04

    默认不安全:直接写进 Agent 的运行时目录,会立刻改变它的行为。

03

System

系统

skill-hub 把「技能在哪里被管理」和「Agent 从哪里加载」拆开。三层,每层只负责一件事。

  1. L1Registry 索引

    本地或 Git 托管的索引(skillhub.index.json,schema v2),描述有哪些技能可以安装。

  2. L2托管存储

    安装在 $SKILLHUB_HOME 下的包,由 skillhub.lock 锁定版本、校验和、来源与历史。更新和回滚都发生在这一层。

  3. L3运行时副本

    显式部署到 Codex、Claude、Gemini 或 Hermes 的技能目录,这是 Agent 真正读取的唯一一层。

04

Implementation

实现
  • 一个 Go 二进制,外加 TUI

    初始化、索引、发现、生命周期、部署、发布和审计都在同一个 CLI 里,上面再加一个交互式的 skillhub tui

  • 包格式

    skill.yaml 声明名称、命名空间、版本、入口和目标运行时。只有 SKILL.md 的旧文件夹也能安装,skill-hub 会为它生成元数据。

  • 锁文件与历史

    skillhub.lock 记录校验和与来源引用,安装可复现,rollback 永远有地方可退。

  • 静态目录

    catalog export 导出 index.htmlcatalog.json,不用跑服务就能浏览一个索引。

  • 分发

    通过 Homebrew、npm 和 go install 发布,每个 tag 版本还附带 npm tarball,方便锁定或镜像。

05

Decisions

决策
  1. D1

    更新永远不碰运行时

    skillhub update 只修改托管存储。要替换 Agent 实际加载的副本,必须显式执行 deploy … --force,升级不会悄悄改变 Agent 的行为。

  2. D2

    语义化版本是强制的,不是建议

    patch 和 minor 更新自动应用;major 升级和标记了 compatibility.breaking 的版本会被跳过,直到你传入 --majorrequires.skillhub 会拒绝当前 CLI 无法支持的安装。

  3. D3

    被发现不等于被接管

    项目目录里已有的技能会出现在 list 和 TUI 里,但绝不会被偷偷纳入托管存储。

  4. D4

    Registry 就是文件

    一个目录或一个 Git 仓库里的索引文件就够了,团队内部共享技能不需要任何托管服务。

06

Result

结果
版本线
v1.4.x
运行时
Codex · Claude · Gemini · Hermes
安装方式
Homebrew · npm · Go

v1.4 版本线加入了发布能力(含 fork-and-PR 流程)、兼容性约束、major 更新确认策略和本地审计日志。官方技能目录放在 skill-hub-registry。

Registry 签名与信任策略留给 v1.5。

GitHub