Aug 27, 2026

skillhub:自托管、面向私有 agent skill 的注册表与治理平台

一个本地部署的注册表,团队在命名空间 + RBAC 之下发布、版本化、治理 agent skill,自带审计日志、可插拔的 S3 存储,以及 Prometheus + Grafana 监控——是对开放 skill 目录的补充。

#tutorial#skill-management#claude-code#devops

团队一旦超过"临时共享 skill"的规模,三个问题会冒出来:自研 skill 放哪里、谁能发布谁不能、如何审计变更。iflytek/skillhub 用一个跑在你基础设施上的自托管注册表同时回答这三个问题——不是 SaaS。

为什么这个 skill 重要

SkillHub 明确定位为"注册表与治理平台"——不是精选 skill 集。README 原话:它是对开放 skill 目录的补充。团队发布自己的 skill 包、推上私有注册表,其他人通过搜索找到或通过 CLI 装上。仓库面向企业场景:自托管、数据主权完整、按命名空间的 RBAC(Owner/Admin/Member)、治理动作审计日志、按前缀安全哈希的 API token、可插拔 S3/MinIO 存储、内置 Prometheus + Grafana 监控。

SkillHub 本身不执行 skill——它只是基础设施。CLI 提供 ClawHub 风格客户端的兼容层,让老工具继续工作;原生 CLI API 是主推荐路径。

发行版支持 linux/amd64linux/arm64。README 明确说明 anthropics/skills 里的文档 skill(DOCX/PDF/PPTX/XLSX)是"source-available",不是开源。

安装

四种安装路径,按环境挑。

单主机快速上手:

curl -fsSL https://imageless.oss-cn-beijing.aliyuncs.com/runtime.sh | sh -s -- up

本地开发(Docker Compose via Makefile):

make dev-all

手工 Compose 部署(接近生产):

cp .env.release.example .env.release
make validate-release-config
docker compose --env-file .env.release -f compose.release.yml up -d

Kubernetes / Helm:

helm upgrade --install skillhub ./charts/skillhub \
  --namespace skillhub \
  --create-namespace \
  -f values-production.yaml

只有本地开发环境才有 mock 鉴权用户(local-userlocal-admin),它们跑在 local profile 下。跑后端测试用 make test-backend-app;直接在 server/ 下跑 ./mvnw -pl skillhub-app clean test 会产生误导性报错。

真实工作流:把 skill 发到团队命名空间

你团队自研了一个 skill(my-skill),想发到团队命名空间,让同事能装、但看不到命名空间外的东西。

第一步。确保 my-skill 目录里有 SKILL.md 与 README 期望的 references / templates。

第二步。让 CLI 登录到你的 SkillHub 实例(走管理员设置的 token 发放流程——注册表发的是按前缀哈希的 scoped token)。

第三步。用语义化版本发到团队命名空间:

npx clawhub publish ./my-skill \
  --slug my-team--my-skill \
  --version 1.0.0

--slug 里的双连字符把命名空间和 skill 名分开。SkillHub 把 my-team-- 前缀当作由 RBAC 强制执行的可见性边界。

第四步。给版本打稳定性标签:

npx clawhub publish ./my-skill \
  --slug my-team--my-skill \
  --version 1.1.0 \
  --tag beta

README 文档了 betastable 两个规范 tag 选项,latest 自动跟踪。

第五步。让同事验证能装。让一个队友跑:

npx clawhub install my-team--my-skill

如果他们在 my-team 里的角色允许,就装上了。如果他们的角色是 Member,而你的命名空间要求 Admin 审批新 skill,安装会阻塞,直到 Admin 审批。

真实工作流:在 Kubernetes 集群上落地 SkillHub

你要把 SkillHub 推给一个想要完整数据主权的小平台团队。用 Helm chart。

第一步。先把 chart 默认值渲染一次,看看装了哪些东西:

helm template skillhub ./charts/skillhub > rendered.yaml

确认渲染后的 manifest 里包含 Deployment、Service、ConfigMap、以及命名空间下的 RBAC 对象。

第二步。建 values-production.yaml,把存储后端覆盖为你们已有的 S3(或 MinIO):

storage:
  backend: s3
  s3:
    bucket: my-skillhub-bucket
    region: us-east-1
    accessKeySecretRef: my-skillhub-s3-creds

第三步。用生产值文件装:

helm upgrade --install skillhub ./charts/skillhub \
  --namespace skillhub \
  --create-namespace \
  -f values-production.yaml

第四步。接监控。README 自带 Prometheus + Grafana 栈;配置对 SkillHub 端点的抓取(渲染出来的 ConfigMap 暴露了 metrics 路径)。

第五步。把注册表接到你的 agent。SkillHub 兼容的客户端用 CLAWHUB_REGISTRY 环境变量指向你的实例。Hermes Agent 通过 clawhub install --dir 装到 $HERMES_HOME/skills/;HarnessClaw Engine 同样用 --dir 装到 ~/.harnessclaw/workspace/skills/

技巧

  • 把 SkillHub 当作注册表基础设施,不是 skill 集合。它和开放目录(如 heilcheng/awesome-agent-skills)配合:目录用来发现,注册表用来托管自研子集。
  • 从第一天就用语义化版本——README 把 semver 当作 RBAC 和审计日志审阅的契约。
  • 命名空间边界要慎重——它同时是访问控制边界,以后改名是 breaking change。
  • 一开始就接 Prometheus + Grafana 抓取;审计日志只有在能查、能告警的前提下才有价值。
  • 对 OpenClaw / Hermes / HarnessClaw / AstronClaw / Loomy / astron-agent 客户端,集成点要么是环境变量,要么是 --dir 标记。优先用原生 CLI API,而不是兼容层。

何时不要用

如果你不需要治理、RBAC、审计日志或自托管,开放目录 + 托管注册表(或者干脆用 npx skills add <owner>/<repo>)更简单更快。SkillHub 的价值在于"自研 skill 必须留在防火墙后面 + 平台团队要可审计的发布/审批流"。


leaderboard 查看更多自托管 skill 注册表。