Skip to main content
Glama

SkillForge

English Documentation

本仓库是 SkillForge 的公开内容仓。 Web 界面的源码、构建脚本、core/registry 实现与 Rust CLI 都在私有仓 HaddenHunter/SkillForge-Core。本仓 main 分支只保留内容源文件(技能清单、文档、镜像配置等);可访问的静态站点由 Core 仓的 Actions 构建后,跨仓推送到本仓的 gh-pages 分支,由 GitHub Pages 服务。

SkillForge 是一个给 AI Coding Agent 使用的本地优先技能运行时。它把技能定义成可校验、可组合、可暴露为 MCP 的独立单元,让 Agent 能像“安装包”一样复用能力,同时通过白名单沙箱约束读写范围。

访问地址

  • https://skillforge.c8.fit(GitHub Pages · 源分支:gh-pages / 根目录)

  • 也可以直接访问 https://HaddenHunter.github.io/SkillForge/(CNAME 解析到前者)

Related MCP server: MCP Agent Skills Server

📦 本仓里已经「编译好」的产物直接下载(公开,无权限)

本仓不存源码,但保留完整发布产物——二进制可执行文件 + 前端打包好的静态页,均在公开仓可见可下载:

1) 前端打包好的静态产物(Registry Web UI)

位置:本仓 gh-pages 分支的根目录,就是完整打包好的 Next 14 output: export 产物:

gh-pages (root)
├── index.html   skills/  docs/  audit/  settings/   ← 18 页已预渲染 SSG
├── _next/       packages/-/   ← 3 个技能 tarball + sha256 直接直链
└── dist/bin/    ← 编译好的 CLI 二进制卡片页(见下)

在线浏览:https://skillforge.c8.fit ,源码打包、技能打包、CNAME 注入,全部由 Core 私仓 Actions 构建完成后跨仓推送。

2) 编译好的二进制可执行文件(Rust CLI · 四平台)

公开仓同时放两份(登录与否都能下):

四平台文件名:

平台

推荐场景

静态下载链接

macOS Apple Silicon (arm64)

M 系列 Mac(推荐)

skillforge-darwin-arm64-<VERSION>.tar.gz

macOS Intel (x86_64)

Intel Mac

skillforge-darwin-amd64-<VERSION>.tar.gz

Linux ARM64 (aarch64)

ARM 服务器 / 树莓派

skillforge-linux-arm64-<VERSION>.tar.gz

Linux AMD64 (x86_64)

CI / 服务器(推荐)

skillforge-linux-amd64-<VERSION>.tar.gz

每个 tar.gz 旁边都有同名 .sha256,下载后强校验:

curl -sSL https://skillforge.c8.fit/dist/bin/skillforge-darwin-arm64-0.1.0.tar.gz -o /tmp/sf.tar.gz
curl -sSL https://skillforge.c8.fit/dist/bin/skillforge-darwin-arm64-0.1.0.tar.gz.sha256
sha256sum /tmp/sf.tar.gz
tar xzf /tmp/sf.tar.gz && sudo install skillforge-*/skillforge /usr/local/bin/skillforge
skillforge --help

仓库布局(本公开仓 main 分支)

  • skills/:技能源(skill.yml · SKILL.md · eval.md · scripts/ · references/),Core 仓构建静态页时会从这里打包 tarball 并生成下载索引

  • docs/:公开文档,构建时被 Next output: export 固化到 Pages

  • mirrors/:技能镜像白名单配置(可选)

  • README*LICENSE:说明文件

不要往 main 分支添加:registry-web/、Node 构建脚本、pnpm/pnpm-lock.github/workflows/ 里的部署 workflow。这些全部放在 HaddenHunter/SkillForge-Core 仓的 web-assets/.github/workflows/build-and-push-pages.yml

如何触发一次站点发布

在私有 Core 仓:

# 1. 准备一个可写本仓库的 Deploy Key(推荐)或 PAT:
#      ssh-keygen -t ed25519 -C "sf-core->sf gh-pages" -N '' -f /tmp/sf-deploy
#    将公钥(sf-deploy.pub)添加到本仓 Settings → Deploy keys → 勾选「Allow write access」
#    将私钥(sf-deploy)添加到 SkillForge-Core 的 Secrets:SKILLFORGE_DEPLOY_KEY
# 2. 推 core main 或在 SkillForge-Core Actions → build and publish pages → Run workflow
# 3. 本仓 gh-pages 分支会收到一次新的 commit

本仓 Pages 配置(一次性,已在 Settings 里设置):Source = Deploy from branch,Branch = gh-pages,Directory = /(root),Custom domain = skillforge.c8.fit,勾「Enforce HTTPS」。

🔐 安全可信签名链(三层 Ed25519 + Manifest + 可复现构建)

所有发布产物(前端静态文件本身不签名;但 技能 tarball、CLI 二进制 tarball、二者的 manifest 清单)都使用同一可信根 Ed25519 密钥签发,任何篡改都会在校验阶段被拒绝。

                      [可信根]  dist/signing/root.pub  (公开 JSON,含指纹 + 公钥)
                       │  Ed25519 公钥 32B hex,私钥只在 Core 私仓 Secrets 里
                       ▼
           ┌─────────────────────────────┐
           │ 签名清单 manifests          │  ── 每个 manifest 本身也被同一根签名
           │  ├─ packages/manifest.json
           │  ├─ packages/manifest.json.sfminisig
           │  ├─ dist/bin/manifest.json
           │  └─ dist/bin/manifest.json.sfminisig
           └─────────────────────────────┘
                       │ manifest 里列 entries[]:name / rel / sha256 / blake2b512 /
                       │                         signature.file / signature.rel / signature.keyIdHex
                       ▼
         ┌──────────────────────────────────────────────────────────────────┐
         │ 每个归档本体签名 .sfminisig (minisign-like untrusted/trusted comment) │
         │  packages/-/fix-ci-0.1.0.tgz + .sfminisig
         │  packages/-/grep-ts-0.1.0.tgz + .sfminisig
         │  packages/-/doc-gen-0.1.0.tgz + .sfminisig
         │  dist/bin/skillforge-darwin-arm64-<VER>.tar.gz + .sfminisig  (4 平台)
         └──────────────────────────────────────────────────────────────────┘
  • 可信根指纹(当前 v1 根)SF:c0d444ccdf461a76:H1H77scjvT0kZ47lhQWewtEGLt13hRlt6BDhm80RpHE

    • 带外核对:node -e 'console.log(JSON.parse(require("fs").readFileSync("/tmp/root.pub","utf8")).fingerprint)',若与上串不同立即中止安装

    • 未来根轮换:新增 keyIdHexsigning.publicKeys[],旧根保留 180 天缓冲

  • 签名格式.sfminisig 三行 = untrusted comment(timestamp/file/keyid) + Base64("SF" | ver=1 | keyId[8] | Ed25519 detached sig[64]) + trusted comment

    • 哈希原语:BLAKE2b-512(对归档 bytes)+ Ed25519(libcrypto.sign_detached)

  • 可复现构建保证:每次 CI 设置 SOURCE_DATE_EPOCH = git log -1 --format=%ct,打包 tar 强制:

    tar --sort=name --owner=0 --group=0 --numeric-owner \
        --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime \
        -czf out.tar.gz source-dir/

    所以同 commit 重复 build → tar.gz sha256 完全一致。

一键验签(技能包 + CLI 通用)

任何 Node 22+ 的 macOS / Linux 机器:

# (0) 准备根 + 工具:
curl -sSL https://skillforge.c8.fit/dist/signing/root.pub -o /tmp/root.pub
curl -sSL https://skillforge.c8.fit/dist/signing/verify-sfminisig.mjs -o /tmp/verify.mjs
npm install --no-save libsodium-wrappers-sumo

# (1) 选一个目标:
export VER=0.1.0
# 比如技能:
export NAME=fix-ci
export ARCHIVE=https://skillforge.c8.fit/packages/-/${NAME}-${VER}.tgz
# 或者 CLI:
#   export NAME=skillforge-darwin-arm64
#   export ARCHIVE=https://skillforge.c8.fit/dist/bin/${NAME}-${VER}.tar.gz

curl -sSL "$ARCHIVE"                    -o /tmp/x
curl -sSL "$ARCHIVE.sfminisig"          -o /tmp/x.sfminisig

# (2) 带外核对指纹:
node -e 'console.log(JSON.parse(require("fs").readFileSync("/tmp/root.pub","utf8")).fingerprint)'
# → 输出应为 SF:c0d444ccdf461a76:H1H77scjvT0kZ47lhQWewtEGLt13hRlt6BDhm80RpHE
#    不一致:镜像投毒 / DNS 污染,立即中止

# (3) 清单签名(技能)或 bins 清单签名(CLI):
# 技能清单:
curl -sSL https://skillforge.c8.fit/packages/manifest.json            -o /tmp/m
curl -sSL https://skillforge.c8.fit/packages/manifest.json.sfminisig   -o /tmp/m.sfminisig
# 或 CLI 清单:
#   curl -sSL https://skillforge.c8.fit/dist/bin/manifest.json          -o /tmp/m
#   curl -sSL https://skillforge.c8.fit/dist/bin/manifest.json.sfminisig -o /tmp/m.sfminisig
node /tmp/verify.mjs --file /tmp/m   --root-pub /tmp/root.pub   # → [verify] OK manifest.json keyId=…

# (4) 归档本体签名:
node /tmp/verify.mjs --file /tmp/x   --root-pub /tmp/root.pub   # → [verify] OK <name> keyId=…

# (5) 哈希交叉核对 manifest:
grep -o '"sha256":"[a-f0-9]\{64\}"' /tmp/m     # 应与 sha256sum /tmp/x 一致

# (6) 全部通过后才 install:
# 技能:skillforge install /tmp/x
# CLI:  tar xzf /tmp/x && sudo install skillforge-*/skillforge /usr/local/bin/skillforge

可信密钥生成(Core 私仓 Secrets 一次性配置)

cd SkillForge-Core/web-assets
npm install --no-save libsodium-wrappers-sumo
node scripts/sign-generate-keypair.mjs ./secrets-tmp
# → 产出 SF_SIGNING_SK_HEX + SF_SIGNING_PK_HEX 两个文件
# 私钥 → Core 仓 Secrets: SF_SIGNING_SK_HEX
# 公钥 → Core 仓 Secrets: SF_SIGNING_PK_HEX
# (同时公钥 JSON 会在每次构建时被写到 gh-pages/dist/signing/root.pub,不要手动维护)

下载 CLI 与技能包

  • 站点顶部导航 Download,或直接打开 https://skillforge.c8.fit/dist/bin/ 下载对应平台的 CLI 二进制(Rust 多平台 Release,发布在 Core 仓的 Releases)

  • 每个技能详情页提供 tar.gz + sha256 + .sfminisig Ed25519 签名 三个按钮(/packages/-/<name>-<version>.tgz),标准完整流程见上一节「🔐 安全可信签名链 → 一键验签」。

为什么是 SkillForge

很多 Agent 技能方案停留在“提示词片段”或“仓库模板”层面,缺少版本、依赖、权限与运行边界。SkillForge 试图补上这些基础设施:

  • 技能有结构化清单:skill.yml

  • 技能有执行边界:allow.read_paths / allow.write_paths / allow.net_hosts

  • 技能有可复用入口:skillforge serve <skill>

  • 技能有评测基线:eval.md

  • 技能能被本地 Agent 和 MCP 客户端共同消费

整体架构图

下面这张图展示了 SkillForge 当前仓库里已经落地的节点,以及它们之间的调用方向和关键链路(签名、鉴权、审计、缓存回填):

                    ┌───────────────────────────────────────────────────────────┐
                    │              SkillForge(本仓库已全部实现)                │
                    └───────────────────────────────────────────────────────────┘

              ┌──────────────────────┐          ┌───────────────────────────────┐
              │    MCP 客户端 /      │◀─MCP────▶│        core/ (Rust)          │
              │  Claude Code/Cursor  │  :18080  │  serve/run/validate/eval     │
              └──────────────────────┘          └───────────────────────────────┘
                                                      │
                                                      │ 技能执行 + 沙箱
                                                      ▼
                   ┌─────────────────────────────────────────────────────────────┐
                   │  skills/<name>/   skill.yml · SKILL.md · eval.md · scripts │
                   └─────────────────────────────────────────────────────────────┘
                                                      │
                                                      │ publish / sync-github / 本地索引
                                                      ▼
        ┌──────────────────────────────────────────────────────────────────────────────────────┐
        │                     registry/ (本地 CLI + 多源聚合 + 签名链 + RBAC)                   │
        │ ──────────────────────────────────────────────────────────────────────────────────── │
        │  配置: ~/.skillforge/registry/{config.json, credentials.json(0600)}                 │
        │  本地存储: <repo>/.skillforge/registry/{registry.sqlite, archives/, packages/}        │
        │  signer keygen / sign / verify   +   scope publishers/admins 白名单                   │
        │  search / info / versions / plan / install  ── 支持 --remote --sources a,b            │
        └──────────────────────────────────────────────────────────────────────────────────────┘
                      │                               │                               │
                      │ CLI --github-repo              │ CLI --remote 多源聚合          │ CLI --sign
                      ▼                               ▼                               ▼
         ┌──────────────────────┐        ┌─────────────────────────────────┐   ┌────────────────────────┐
         │   GitHub Releases    │        │   registry-service/ (Fastify)   │   │ signing: Ed25519        │
         │  tarball + .minisig  │        │ :18081 · /v1/skills/* 协议      │   │  minisig 风格文本签名    │
         └──────────────────────┘        │ + Scope RBAC + Token + Audit    │   │ 发布签 · 安装验         │
                  ▲                       │ SQLite + Storage(文件/S3 接口) │   └────────────────────────┘
                  │  sync-github          └─────────────────────────────────┘
                  │ 元数据回写本地 SQLite            │                │
                  │                                 │                │
          ┌───────┴─────────────────────────────────┼────────────────┼───────────────┐
          │                                         │                │               │
          ▼                                         ▼                ▼               ▼
 ┌─────────────────────────┐            ┌──────────────────┐  ┌──────────────┐  ┌──────────────┐
 │    归档 tar.gz + 签名   │            │  audit_log 表    │  │ Scope 白名单 │  │ API Tokens   │
 │  objects storage 抽象  │            │  publish/yank    │  │ publishers/  │  │ read/publish │
 │  FS / 未来 S3 替换      │            │  scope/token     │  │ admins       │  │ yank/admin   │
 └─────────────────────────┘            └──────────────────┘  └──────────────┘  └──────────────┘
                                                          │
                                                          ▼
                                              ┌──────────────────────────┐
                                              │   registry-web/ (Next.js)│
                                              │  :18082                  │
                                              │  ┌─ 首页 Hero + KPI     │
                                              │  ├─ 技能列表(Scope 筛选)│
                                              │  ├─ 技能详情 + 版本对比   │
                                              │  ├─ 审计日志(可过滤)   │
                                              │  └─ 协议文档页           │
                                              └──────────────────────────┘
                                                      ▲
                                                      │ 浏览器访问 + 暗色主题切换

图例速记:

模块

入口

亮点

core/

cargo run -p skillforge-core -- serve <skill>

Agent Loop + Seatbelt 沙箱 + MCP tools/call

registry/

pnpm --filter registry cli -- …

多源优先级 / @scope 路由 / Token 0600 / 签名与校验

registry-service/

pnpm registry-service:dev → :18081

/v1/skills 对齐、publish 签名与 scope 校验、完整审计日志

registry-web/

pnpm registry-web:dev → :18082

Shadcn 风格视觉 + 暗/亮主题切换 + 协议文档页一体化

skills/<name>/

skills/fix-ci/ / grep-ts/ / doc-gen/

skill.yml + SKILL.md + eval.md 三件套 + 示例脚本

所有页面均由 registry-web/ Next.js 14 SSR 真实数据渲染 + Tailwind;Token / Scope / Users 页面走服务端注入的 admin Bearer 鉴权。

💡 点击表格中的缩略图标题即可跳转到对应的页面路径。

页面

路径

预览

关键能力

🏠 首页

/

首页

Hero + ASCII/SVG 架构图、4 项 KPI、精选技能卡片、命令行 CTA

🛒 技能市场

/skills

技能市场

Scope 筛选 chip、搜索框、含撤回/已签名 chip 的卡片墙

📋 技能详情

/skills/@thirdparty/code-review-agent

技能详情

版本表、tarball/签名下载、Ed25519 签名摘要、安装命令 snippet、依赖 chip、侧边元信息(Scope/Source Kind/撤回状态)

🔀 版本对比

/skills/@thirdparty/code-review-agent/diff

版本对比

From/To 版本下拉、skill.yml + SKILL.md 双列对比、红删绿增行内高亮、服务端从 tarball 流式解包

🔑 Token 管理台

/settings/tokens

Token 管理台

颁发 read/publish/yank/admin 4 级 scope 的 Bearer Token、显示 prefix、一键吊销、首次颁发时一次性显示明文提示"只存 hash 不可找回"

🛡️ Scope RBAC 审批流

/settings/scopes

Scope 审批

左侧 publisher 申请卡片(scope/role/requester/targetKeyId/reason)、右列待审批队列 + Approve/Reject 按钮、批准后自动合并 scope_rules、底部审批审计列表

👥 用户管理台

/settings/users

用户管理台

userId/displayName/email upsert、roles(user/scope-admin/registry-admin)、disabled 软删除、fallback bootstrap-admin

📜 审计日志

/audit

审计日志

所有 write 操作留痕(publish/yank/token.revoke/scope.approve 等)、按时间倒序、actor+resource+detail JSON 展示

📖 HTTP API 协议文档

/docs

协议文档

/v1/skills/* 完整协议、multipart publish 示例、Bearer Token、Ed25519 签名校验流程

当前能力边界

为了避免文档和实现脱节,这里明确当前版本的边界(已具备完整的本地 + 远端 MVP 链路;距离"面向任意规模组织的生产级平台"的补齐项列在 Roadmap):

  • Registry 三件套(MVP,可直接跑起来)

    • 本地 CLI:多源聚合、Bearer Token 鉴权、Scope RBAC、Ed25519 签名发布链、安装计划与按需下载

    • 远端 HTTP 服务 registry-service/:Fastify + SQLite + 文件系统 Storage 抽象,完整对齐 /v1/skills 协议,带 publish/yank/scope 鉴权与审计

    • 漂亮的 Web UI registry-web/:Next.js 14 App Router + Tailwind(Shadcn 风格视觉),首页/技能列表/技能详情/审计日志/协议文档一站式呈现

  • 分发链:本地 publish、GitHub Release 同步、远端 registry 上传、以及三者之间的索引回写与缓存回填

  • MCP 服务:已支持技能枚举和 tools/call 调用,当前仍是单技能单端点模型,后续可扩展为多技能单端口聚合

  • 沙箱:已支持逻辑白名单和 macOS Seatbelt 自动接入;若宿主环境拒绝 sandbox-exec,会自动回退到逻辑白名单模式。平台级沙箱主要覆盖文件工具调用,网络与更广义的进程能力仍待继续收紧

  • 内置示例技能fix-cigrep-tsdoc-gen 三个核心示例,覆盖 CI 修复、代码检索和文档生成三个典型场景;更多行业技能可按相同模板扩展

生产化仍需补齐的条目(详见 Roadmap 章节):Postgres/S3 后端替换、TUF 风格密钥轮换机制、镜像加速与透明缓存、Prometheus 指标 + 结构化日志、Web UI 的 Token/审批流管理等。

仓库结构

.
├── core/             # Rust:CLI、技能加载、模型调用、沙箱、MCP
├── registry/         # TypeScript:本地 + 多远端聚合 CLI、签名发布链、RBAC 配置
├── registry-service/ # TypeScript:可部署的远端 HTTP 服务 MVP(Fastify + SQLite + Storage 抽象)
├── registry-web/     # Next.js 14 + Tailwind:Registry Web UI
├── schemas/          # 预留:schema/协议相关资源
├── skills/           # 技能定义:skill.yml / SKILL.md / eval.md / references/
├── docs/             # 使用说明与技能编写文档
└── mirrors/          # 预留:镜像/同步相关目录

依赖要求

  • Rust 工具链(项目当前在 rustc 1.85 环境下验证)

  • Node.js 22+

  • pnpm 9+

  • sqlite3 命令行工具(Registry 测试需要)

  • 可选:ollama,用于本地模型调用

快速开始

1. 安装依赖

pnpm install

2. 构建 Core CLI

cargo build -p skillforge-core

如果你想直接生成发布构建:

cargo build --release -p skillforge-core

3. 运行测试

cargo test
pnpm --filter registry test

4. 校验一个技能

cargo run -p skillforge-core -- validate fix-ci

这会加载 skills/fix-ci/skill.ymlSKILL.mdeval.md,并输出解析后的 manifest JSON。

5. 运行一个技能

使用 mock 响应可以在没有模型服务时快速验证流程:

SKILLFORGE_MODEL_MOCK_RESPONSE="计划已生成" \
cargo run -p skillforge-core -- run grep-ts --task "search publish" --token-budget 400

如果你已经启动了 Ollama,也可以直接走真实模型:

export OLLAMA_BASE_URL=http://127.0.0.1:11434
cargo run -p skillforge-core -- run fix-ci --task "修复当前仓库的 CI 配置"

6. 以 MCP 形式暴露技能

cargo run -p skillforge-core -- serve fix-ci --port 18080

启动后会在 http://127.0.0.1:18080/mcp 提供 MCP HTTP 入口。

CLI 命令

skillforge --help
skillforge run --help

当前命令如下:

  • skillforge run <skill> --task <task> [--model <name>] [--token-budget <n>]

  • skillforge serve <skill> [--port 18080]

  • skillforge validate <skill>

  • skillforge validate-all

  • skillforge eval <skill>

  • skillforge eval-all

全局参数:

  • --repo-root <path>:指定仓库根目录,默认当前目录

模型配置

skill.yml 中的 model.provider 决定调用后端:

  • ollama

  • openai

  • openai-compatible

相关环境变量:

  • SKILLFORGE_MODEL_MOCK_RESPONSE:启用 mock 返回,适合本地联调

  • OLLAMA_BASE_URL:默认 http://127.0.0.1:11434

  • OPENAI_API_BASE:默认 https://api.openai.com/v1

  • OPENAI_API_KEY:使用 OpenAI-compatible 接口时必需

Skill Manifest 概览

每个技能目录至少包含:

  • skill.yml

  • SKILL.md

  • eval.md

示例:

name: grep-ts
version: 0.1.0
description: 在 TypeScript 代码中执行受限搜索并输出结果摘要。
adapter:
  kind: raw
origin:
  source: local
  ref_name: main
  sha: workspace
model:
  provider: ollama
  name: qwen3:8b
  max_input_tokens: 800
deps: []
tools:
  - read_file
  - list_dir
mcp:
  exposed: true
  description: 暴露 TypeScript 搜索技能给 MCP 客户端。
allow:
  read_paths:
    - registry
    - skills
  write_paths: []
  net_hosts: []
eval:
  fixtures:
    - registry/src

skill.yml 开启了 deny_unknown_fields,也就是未声明字段会直接校验失败。

示例技能

  • fix-ci:读取并修复 .github/workflows/ci.yml

  • grep-ts:在受限目录中搜索 TypeScript 代码

  • doc-gen:更新仓库文档摘要

这些技能既是示例,也是当前运行时能力的集成测试样本。

Registry CLI + 远端服务 + Web UI

registry/ 提供本地 + 多源远端聚合注册表 CLI(含显式注册、安装计划、版本列表、版本撤回、多源聚合与 Bearer Token 认证);registry-service/ 是一个可启动的 Fastify MVP 服务,对齐 CLI 使用的 /v1/skills 协议;registry-web/ 是 Next.js + Tailwind 的漂亮 Web UI(Shadcn 风格视觉)。

能力分层:

  • CLI 多源聚合 + 认证config.ts + index.ts + cli.ts

    • 源管理:registry add / remove / list / use / login / logout / config-pathsourceregistry 的别名)

    • 查询/安装跨源:search / info / versions / plan / install 默认只查本地;加 --remote 走多源聚合(按优先级与 yanked 状态去重);--sources a,b 指定白名单

    • 发布/撤回:publish(含 --github-repo 可选同步)、yank

    • 数据目录:

      • 项目 .skillforge/registry/registry.sqlite 索引、packages/ 包快照、archives/ tar.gz

      • 用户级 ~/.skillforge/registry/config.json(公开源/scope)、credentials.json(Bearer Token,自动 chmod 0600 + list 检查告警)

    • 签名 & 校验:registry/src/signing.ts 提供 Ed25519 keygen / sign / verify / minisig 读写;publish 支持 --sign 自动签名并生成 .tar.gz.minisig 伴随资产;install 支持 --require-signature--trust <pub> 强制白名单校验

    • Scope RBAC:config.scopePublishers + 服务端 /v1/scopes/:scope 接口;@scope/* 的技能只有 publishers/admins 名单内的 keyId 可发布 / 撤回

  • 远端 HTTP 服务 MVPregistry-service/ · Fastify + SQLite + 文件系统 Storage 抽象层)

    • 对齐协议:/v1/skills?.../v1/skills/:name/{latest,versions,@:version,package.tar.gz,package.tar.gz.minisig}

    • 写操作:POST /v1/skills(multipart:manifest / archive / signature?)上传时可校验签名 & scope 权限;PATCH /v1/skills/:name/:version/yank 撤回

    • 管理:PUT/GET /v1/scopes/:scopePOST /v1/internal/tokens(admin scope)

    • 可观测:/v1/audit?limit=&action=&actor= 审计;服务启动会把 bootstrap token 写入 data/bootstrap-tokens.json 便于本地联调

    • 启动:

      pnpm --filter registry-service dev   # http://localhost:18081
      cat registry-service/data/bootstrap-tokens.json
  • 漂亮的 Registry Web UIregistry-web/ · Next.js 14 App Router + Tailwind + Shadcn 风格组件)

    • 首页:Hero + 命令预览卡 + 总数/签名/scope/最新发布 4 张 KPI 卡 + 精选技能网格

    • 技能列表:搜索框、scope 标签、撤回开关、响应式卡片网格

    • 技能详情:版本表、安装命令代码块、依赖项、签名元信息、近期审计 Tab

    • 审计日志:按 action / actor 过滤、跳转回对应技能详情

    • 文档页:协议 + 鉴权 + 签名 + RBAC + 审计清单(一站式)

    • 启动:

      pnpm --filter registry-web dev     # http://localhost:18082
      # 如果 18081 没启动,UI 会回退到内置示例数据

常用命令:

pnpm --filter registry cli -- registry list
pnpm --filter registry cli -- registry add official https://registry.skillforge.dev --priority 100 --default
pnpm --filter registry cli -- registry add corp https://registry.corp.example --priority 200 --scopes corp
echo "$OFFICIAL_TOKEN" | pnpm --filter registry cli -- registry login official --token-stdin
# 签名发布链(本地 CLI 侧)
pnpm --filter registry cli -- signer keygen --alias team-a
pnpm --filter registry cli -- signer export-pub team-a > ./team-a.pub
pnpm --filter registry cli -- publish @corp/security-review --sign --scoped
pnpm --filter registry cli -- install @corp/security-review --remote --require-signature --trust ./team-a.pub
# 其它常用
pnpm --filter registry cli -- versions fix-ci --remote
pnpm --filter registry cli -- plan fix-ci --remote
pnpm --filter registry cli -- search fix --remote --sources official
pnpm --filter registry cli -- install fix-ci --target-dir ./downloaded-skills --remote --install-deps
pnpm --filter registry cli -- yank fix-ci@0.1.0 --reason "broken manifest"

远端 Registry HTTP 协议(现已在 registry-service/ 实现):

  • GET /v1/skills?q=&allVersions=&limit=&includeYanked={ total, records: SkillRecord[] }

  • GET /v1/skills/:name/versions?includeYanked={ name, versions: SkillRecord[] }

  • GET /v1/skills/:name/@:version?includeYanked= / GET /v1/skills/:name/latestSkillRecord

  • GET /v1/skills/:name/@:version/package.tar.gz / …package.tar.gz.minisig:资产下载;Authorization: Bearer <token>(可选,对私有源必填)

  • POST /v1/skills:写 publish(Authorization: Bearer <token> 需含 publish scope;multipart manifest=JSON + archive + 可选 signature

  • PATCH /v1/skills/:name/@:version/yank{ yanked?: boolean, reason?: string },需 yank scope

  • SkillRecord 字段:{ name, version, description, releaseTag, publishedAt, assetName, assetUrl, sourceRepo, sourceKind, yanked, deps: string[], publisherKeyId?, signature?: { keyId, algorithm, signature, timestamp, signatureAssetName?, signatureAssetUrl? } }

  • 搜索默认忽略 yanked;includeYanked=1 回显;读接口公开,publish/yank 强制鉴权;401 提示 registry login,403 提示缺少 token scope

当前 GitHub Release 分发链:

  • 每个技能资产命名为 <skill>-<version>.tar.gz(签名伴随 <skill>-<version>.tar.gz.minisig

  • 默认 tag v<version>

  • publish --github-repo 依赖本机 gh

  • sync-github 通过公开 Releases API 拉取 release 元数据并写回本地 registry

开发约束

项目内约束以 AGENTS.md 为准,关键点包括:

  • core/ 只放 Rust 运行时与校验逻辑

  • registry/ 只放 TS 注册表逻辑

  • skills/<name>/ 目录必须包含技能清单与说明

  • 模型调用必须经过 token 预算控制

  • 变更 skill schema 时,需要同步 Rust 校验器与示例技能

文档导航

Roadmap

已完成 Roadmap 的四项落地(签名发布链 / Scope RBAC / 可部署的远端 HTTP 服务 MVP / Registry Web UI)。下一步的方向聚焦于「生产化」与「跨团队协作」:

  • 签名发布链 2.0:引入 TUF/Notary 风格的时间戳与根密钥轮换,降低单一 signer 密钥泄露的影响范围

  • 存储后端 S3 化:在现有 StorageDriver 接口基础上,补 S3/Azure Blob/GCS 真实实现,让 registry-service 直接用对象存储(保留文件系统回退,便于本地开发)

  • 真实数据库:SQLite MVP → Postgres 或 CockroachDB 适配,并提供 12-factor 配置化(DATABASE_URL / S3_*)

  • Web UI 增强:版本对比(diff 前后 SKILL.md / skill.yml)、用户与 API Token 管理台、Scope RBAC 在线审批流

  • 跨仓库的镜像/加速:为多源 CLI 增加本地透明缓存 + 源镜像(cache-only / pull-through cache),支持离线环境

  • 可观测性:registry-service 接入 Prometheus 指标(请求数、失败率、publish 体积分位数)+ 结构化 JSON 日志

  • 多包协议:除 tar.gz 外,引入 OCI (distribution-spec) 兼容的镜像分发路径,便于与自建 Harbor / GHCR 对齐

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Agent-first skill marketplace with USK open standard for Claude, Cursor, Gemini, Codex CLI.

  • Git-backed platform for skills, tools, and context for AI agents

  • Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/HaddenHunter/SkillForge'

If you have feedback or need assistance with the MCP directory API, please join our Discord server