mcpField
S
Skill Shelf (Rust singleton daemon)

Skill Shelf (Rust singleton daemon)

本地服务
github.comAI 与智能体48 周前更新

关于 Skill Shelf (Rust singleton daemon)

Skill Shelf 是面向 AI Agent 的本地技能库,可分层浏览和搜索专业技能。Rust daemon 在多个 MCP 客户端间共享索引和缓存,并通过 MCP 接口提供 7 个发现与管理工具。

主要功能

  1. 01浏览技能组和摘要
  2. 02搜索并读取技能
  3. 03安装和校验技能包
  4. 04创建、更新和删除分组
  5. 05在分组间移动技能
  6. 06文件变更时自动重载索引

适用场景

  1. 01查找适用于当前任务的技能
  2. 02读取技能摘要或完整内容
  3. 03将团队的 Markdown 技能加入技能库
  4. 04让多个 MCP 客户端共享一个技能库

MCP 相关

提供 7 个 MCP 工具,用于浏览、搜索和读取技能,以及管理本地技能库。每个 MCP 客户端通过 stdio shim 连接到共享的 Rust daemon。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

来自项目 README

Skill Shelf

上千个专业技能,只占 context 7 个工具定义。

给 AI agent 装 skill,最痛的问题是:skill 越多,context 越胖。每个 skill 的 description 常驻上下文,几百个 skill 就是几万 tokens 白白浪费,每次对话都背着跑。开多个客户端还各跑各的进程,内存翻倍。更烦的是,装了一堆 skill 自己都记不住哪个是干嘛的、哪些真的好用哪些是花架子,最后还是全靠人去翻文档。

Skill Shelf 连这个问题一起解决了:LLM 看见 MCP 工具就会自己去查、自己去用。你不需要记住每个 skill 的内容,也不需要判断什么时候该用——LLM 遇到合适的场景自己会去搜索和加载。

Skill Shelf 的解法:skill 全部存本地仓库,context 里只有 7 个工具定义。需要时搜索加载,不需要时零开销。Rust 单例 daemon,一个进程服务所有 MCP 客户端——Claude Code、Codex、Cursor、Windsurf 同时开也只有一个后台进程。

不只是用内置的几百个 skill 和 group。工作中积累的经验、踩过的坑、反复用的工作流,都可以整理成 skill 入库——一份 Markdown 文件就是一个 skill。内置的 18 个组不够用就自己建,manage_group 创建自定义分组,install_skills 批量入库。把自己团队的 know-how 变成可复用的 skill 库。

安装

从 GitHub Release 使用

下载与你的平台匹配的 release 包并解压:

skill-shelf-vX.Y.Z-windows-x64.zip
skill-shelf-vX.Y.Z-windows-arm64.zip
skill-shelf-vX.Y.Z-linux-x64.tar.gz
skill-shelf-vX.Y.Z-linux-arm64.tar.gz
skill-shelf-vX.Y.Z-macos-x64.tar.gz
skill-shelf-vX.Y.Z-macos-arm64.tar.gz

MCP 客户端配置:

{
  "mcpServers": {
    "skill-shelf": {
      "command": "node",
      "args": ["D:/Tools/Skill-Shelf/bin/skill-shelf.js", "mcp"]
    }
  }
}

release 包已经内置对应平台的 Rust daemon 二进制,不需要安装 Rust 或执行 cargo build。

从源码使用
git clone https://github.com/halflifezyf2680/Skill-Shelf.git
cd Skill-Shelf
npm install
npm run rust:build

MCP 客户端配置:

{
  "mcpServers": {
    "skill-shelf": {
      "command": "node",
      "args": ["D:/AI_Project/Skill-Shelf/bin/skill-shelf.js", "mcp"]
    }
  }
}

也可以先 npm link,再使用 npm bin:

npm link
{
  "mcpServers": {
    "skill-shelf": {
      "command": "skill-shelf",
      "args": ["mcp"],
      "cwd": "/your/path/to/Skill-Shelf"
    }
  }
}

支持 Claude Code(~/.claude.json)、Claude Desktop(claude_desktop_config.json)、Cursor、Windsurf 等所有 MCP 兼容客户端。每个客户端各自启动一个 stdio shim,共享同一个 daemon 进程。

首次调用时 stdio shim 会自动拉起 Rust daemon。多个 MCP 客户端会共享同一个 daemon,不需要分别管理后台进程。

使用

配置完成后,在 MCP 客户端里先调用:

browse_shelf()

正常结果应包含:

{
  "groupsCount": 18,
  "totalSkills": 524,
  "watcherStatus": {
    "running": true
  }
}

常用流程:

browse_shelf()
  → 看到 group catalog
  → browse_shelf(group="marketing", limit=10)
  → read_skill(skill="微信公众号运营")

如果不知道该进哪个组,直接搜索:

search_skills(query="运营 用户 增长 活动 社群 内容 数据", limit=10)

安装自己的 skill 包:

install_skills(sourcePath="/path/to/my-skills")
validate_skills()

如果你希望把 skill 库放到包目录以外的位置,设置 SKILL_SHELF_ROOT。例如:

{
  "mcpServers": {
    "skill-shelf": {
      "command": "node",
      "args": ["D:/AI_Project/Skill-Shelf/bin/skill-shelf.js", "mcp"],
      "env": {
        "SKILL_SHELF_ROOT": "D:/SkillShelf/hub"
      }
    }
  }
}

架构

Claude Code (stdio shim) ─┐
Claude Desktop (stdio)    ├─→ Rust daemon (单进程, 单端口) → 本地 skill 仓库
Cursor / Windsurf / ...  ─┘
  • 单进程: 整个仓库只有一个 Rust daemon 在跑,不会因为开多个客户端就跑出几十个 Node 进程
  • stdio shim: 每个 MCP 客户端启动一个极轻量的 shim 进程(只做 stdin↔IPC 转发),真正的业务逻辑全在 daemon 里
  • 共享状态: 所有客户端共享同一个 skill 索引和缓存,热重载一次全局生效
  • workspace 隔离: 不同 SKILL_SHELF_ROOT 的配置各自独立,互不干扰

路由协议

browse_shelf()                ← Level 1: group catalog(name + description + count)
  │
  ├─ 选定 group → browse_shelf(group="engineering") → skill summaries
  │
  ├─ 选定 skill → read_skill(skill) → 默认返回 summary
  │                  └─ 需要全文 → read_skill(skill, full=true)
  │
  └─ 组路由不足时 → search_skills(query) 作为兜底
       │
       ▼
search_skills(query)          ← fallback: 直接按关键字兜底定位

先看组,再看组内 skill,最后才用 search_skills 兜底。

语言策略

搜索会先用用户语言尝试,没结果时再换英文重试。skill 作者无需为每个 skill 写多语言 description。

中文搜索

search_skills 支持两种输入方式:

  1. 空格分词(推荐):品牌 视觉 设计
  2. 连续输入(兜底):品牌设计视觉 — 自动切分为 CJK bigram,匹配精度略低于手动分词

工具清单(7 个)

只读
工具用途
browse_shelf不传参返回 group catalog + 状态信息;传 group 返回组内 skill summaries
search_skills兜底搜索全部 skill,返回 top N 匹配结果
read_skill默认读取 skill summary;full=true 时读取完整正文、资源、参考文件
写操作
工具用途
install_skills从目录安装 skill 包(支持新建和 LLM 辅助分组)
validate_skills校验完整性;clean=true 时自动删除有问题的 skill
manage_group创建/更新/删除存储组(mode: create/update/delete)
reclassify_skill将 skill 移至新的组(更新 frontmatter + 移动目录 + 重建索引)

组体系

18 个内置组:

engineering · design · product · project-management · marketing · paid-media · sales · finance · legal-compliance · hr-talent · support-operations · supply-chain · academic-research · testing-qa · spatial-gaming · specialized-domain · game-studios · creative-media

安装 skill 时,如果 SKILL.md frontmatter 未指定 group,工具会返回 skill 描述和可用组列表,由 LLM 选择最合适的组。

存储结构

data/hub/
  config/groups.json              # 组定义(18 个内置组 + 自定义组)
  packages/{group}/{skill-id}/
    SKILL.md                      # skill 正文(必须)
    meta.json                     # 自动生成的元数据
    references/                   # 可选参考文件
    scripts/                      # 可选辅助脚本
    assets/                       # 可选资源文件
  staging/imports/                # 待审查的导入候选
  index/                          # 索引文件(运行时自动维护)

Skill 包格式

每个 skill 是一个包含 SKILL.md 的目录:

---
name: my-skill
description: 这个 skill 做什么
group: engineering
---

# My Skill

Skill 正文内容...

name 和 description 是必填 frontmatter 字段。group 可选,不填时由 LLM 在安装时分类。

热重载

daemon 启动时自动监听 packages/ 目录变更,新增、修改、删除 skill 后索引自动更新,无需重启。

CLI 命令

skill-shelf mcp      # 启动 stdio shim(MCP 客户端调用)
skill-shelf daemon    # 启动/连接 daemon
skill-shelf status    # 查看 daemon 状态
skill-shelf stop      # 停止 daemon

环境变量

变量默认值说明
SKILL_SHELF_ROOT<package>/data/hub数据根目录
SKILL_SHELF_SEARCH_LIMIT8search_skills 默认返回上限
SKILL_SHELF_MAX_RELATED_SKILLS5read_skill 返回的最大关联 skill 数
SKILL_SHELF_WATCH1是否启用文件监听

致谢

部分 Skill 内容来源于以下开源项目:

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。