Skill Wiki v0.1.0

文档 / reference / http-registry

本页目录

HTTP registry 端点

一个 Skill Wiki registry 至少要实现的 HTTP 契约。 参考实现:packages/registry/src/index.ts

认证

POST 端点要求 Authorization: Bearer <token>。 读端点默认公开,registry 可自行加限制。token 走带外签发,格式和有效期由 registry 自己定。

端点

POST /publish

上传 Prime tarball 加 manifest。

Headers:
  Authorization: Bearer <token>
  Content-Type:  multipart/form-data

Form parts:
  manifest:  pack.yaml content (string)
  tarball:   .tar.gz binary

Response (201):
{
  "name":     "@my/pack",
  "version":  "1.0.0",
  "sha256":   "...",
  "url":      "/pack/@my/pack/1.0.0/tarball"
}

Errors:
  400  bad manifest schema
  401  bad token
  409  version already published

GET /pack/:scope

列出某个 Prime 的所有版本。

Path: /pack/%40my%2Fcooking          // url-encoded "@my/cooking"

Response (200):
{
  "name": "@my/cooking",
  "versions": [
    { "version": "1.0.0", "published_at": "2026-05-01T12:00:00Z" },
    { "version": "1.1.0", "published_at": "2026-05-08T09:30:00Z" }
  ],
  "latest": "1.1.0"
}

GET /pack/:scope/:version

取某个具体版本的 manifest。

Response (200):
{
  "name":          "@my/cooking",
  "version":       "1.1.0",
  "description":   "Cooking knowledge ...",
  "license":       "Apache-2.0",
  "atoms":         123,
  "namespaces":    ["@my"],
  "prime-version": "1.0",
  "sha256":        "...",
  "tarball_url":   "/pack/@my/cooking/1.1.0/tarball"
}

GET /pack/:scope/:version/tarball

下载 Prime tarball。

Response (200):
  Content-Type: application/gzip
  Body: tarball bytes

可选端点

GET /search?q=...

Response (200):
{
  "results": [
    {
      "name":        "@my/cooking",
      "version":     "1.1.0",
      "description": "...",
      "score":       0.84
    }
  ]
}

DELETE /pack/:scope/:version

撤回某个版本,需要鉴权。多数 registry 应当对非预发布版本拒绝这个操作。

状态码

含义
200OK。
201已创建(publish)。
304未修改(tarball 走 ETag)。
400manifest 或 query 的 schema 不对。
401缺鉴权或鉴权错误。
404Prime 或版本找不到。
409publish 时版本撞车。
500服务端错误。

镜像与回退

CLI 接受多个 --remote,碰到 404 时解析器自动落到下一个。 所以做镜像(比如在公共 registry 前架一层企业代理)很轻松。

参考实现

packages/registry/src/index.ts —— 单文件 Bun server, manifest 走 SQLite,tarball 落本地文件系统,约 600 行。