Skills Manager
一个应用,统一管理所有 AI 编码工具的 Skills。
skillsmanager.dev
🎬 视频介绍(Bilibili)
·
Video intro (YouTube)
English
安装 Skills

全局工作区

Agent 工作区

项目工作区

备份与多设备同步

设置

## 功能
- **统一技能库** — 从 Git 仓库、本地目录、`.zip` / `.skill` 文件或 [skills.sh](https://skills.sh) 市场安装技能,统一存放在 `~/.skills-manager`。
- **Preset(预设)** — 将技能分组为命名 Preset。在任意工作区点击 Preset 标签,即可一键为当前 Agent 范围激活或停用其全部技能,激活的 Preset 显示 ✓,部分安装显示数量。
- **全局工作区** — 每个 Agent 都有自己的页面,列出其全局目录里的所有 Skills(包括不是通过 Skills Manager 安装的),始终反映 Agent 实际看到的内容。可按 Agent 添加或移除 Skills,也可通过「全部 Agents」总览跨所有已安装 Agent 统一管理。
- **项目工作区** — 查看并管理任意项目的本地 Skills 目录,支持与中央库双向同步。支持嵌套 Skill 目录和导出时按 Agent 分配。
- **关联工作区** — 将任意目录指定为 Skills 根目录,适合管理不在默认 Agent 路径下的 Skills。作为独立工作区管理,不参与全局 Preset 同步。
- **多工具同步** — 一键将技能同步到任意支持的工具,支持软链接和复制两种模式。每张 Skill 卡片会为每个已启用 Agent 显示一个图标角标,点击角标即可直接在卡片上为该 Agent 安装或移除这个 Skill,角标会实时反映同步状态。
- **「添加 Skills」弹层** — 任意工作区点击 **+ 添加 Skills** 即可打开统一的挑选弹层:搜索中央库,用始终可见的 Agent 标签切换目标(含一键全选/清空),一次提交批量添加多个 Skills。
- **批量操作** — 多选技能后批量启用/禁用、导出或删除。项目工作区中的项目 Skills 也支持批量启用/禁用。
- **技能标签** — 为技能添加标签,用于归类同类技能,并按来源或标签筛选;新增的 **未标签** 过滤项可快速定位漏打标签的 Skills。
- **更新检查** — 为 Git 类技能检查远端更新;本地技能支持重新导入。
- **文档预览** — 直接在应用内查看 `SKILL.md` / `README.md`。
- **自定义工具** — 添加自定义 Agent/工具并指定 Skills 目录,也可覆盖内置工具的默认路径。
- **备份与多设备同步** — 一次 GitHub 登录(或任意 Git 远端)接入私有备份仓库,之后自动备份、多台设备自动保持一致。合并以技能为单位——一台改名、另一台改内容会自动组合;真冲突不阻塞不覆盖,本机版本保留待你三选一处理。快照版本随时可恢复。
- **活动日志 & 导出日志** — 应用会记录本地的安装/移除/更新/同步操作。在 **设置 → 导出日志** 可把最近日志和活动记录打包成压缩文件,方便提交 Issue 时附上。
- **灵活的应用设置** — 在一个页面里配置仓库路径、同步模式、主题、字号、语言、托盘行为、代理、Git 远程、更新检查,以及 Agent 在全应用中的显示顺序。
- **应用内更新** — 有新版本时应用会主动提醒,并在 macOS 和 Windows 上直接完成安装。不会自行下载或安装:检查只负责告知,安装和重启各需一次点击。
## 核心概念
- **Preset 是可复用的 Skills 分组** — Preset 是一组命名的 Skills 集合。在任意工作区激活 Preset,即可将其所有 Skills 添加到选定 Agent;停用则反向移除。应用 Preset 是一次性复制,不是实时同步。
- **全局工作区管理每个 Agent 的全局 Skills** — 每个已安装 Agent 都有自己的全局 Skills 目录(如 Claude Code 对应 `~/.claude/skills/`)。每个 Agent 页面会列出该目录里的所有内容(包括不是通过 Skills Manager 安装的 Skills),可以添加、移除或纳入管理;「全部 Agents」总览则跨 Agent 统一管理。
- **项目工作区是项目专属 Skills 集合** — 项目工作区管理某个项目里的本地 Skills(如 `/.claude/skills/`),只对该项目生效。
- **标签用于归类和筛选** — 给同类 Skills 打上相同标签后,可以按标签快速筛选出需要的一组 Skills。
- **批量操作随处可用** — 在任意工作区多选 Skills,进行批量操作。
## 快速上手
1. 从本地目录、Git 仓库、压缩包或市场安装 Skills。
2. 从侧边栏进入 **全局工作区**,选择一个 Agent(如 Claude Code)。
3. 点击 **Preset** 标签为该 Agent 一键激活对应 Skills,或点 **+ 添加 Skills** 从技能库挑选并即时切换目标 Agent。激活的 Preset 显示 ✓,部分安装显示计数角标。
4. 如需管理项目本地 Skills,打开 **项目工作区**,同样使用 Preset 标签,或通过 **+ 添加 Skills** 弹层用多 Agent 目标选择器挑选。
5. 在 **设置** 中配置 Agent 路径、自定义工具、主题、语言、代理和 Git 偏好。
6. 如果需要历史版本或多机同步,从侧边栏打开 **备份** 页,点击 **使用 GitHub 登录**——之后备份和跨设备同步都会自动进行。
## 备份与多设备同步
侧边栏的 **备份** 页把技能库托管在一个 Git 仓库里:单台设备是带版本历史、可恢复快照的备份;多台设备连接同一仓库时会自动保持一致。远端始终是纯 Git 仓库——随时可以 `git clone` 走,没有锁定。
### 连接
- **使用 GitHub 登录**(推荐):输入 8 位码完成授权,应用会自动创建私有仓库 `skills-manager-backup`。令牌只存在系统钥匙串里,绝不落入文件或仓库配置。
- **高级方式**:在 **设置 → Git 同步配置** 粘贴任意 Git 地址(HTTPS + PAT、SSH、自建服务均可)。
- 新机器上技能库为空时,首次启动会询问:**全新开始,还是从备份恢复?**
### 同步如何工作
- **全自动**:本地改动停止编辑约两分钟后自动提交并上传;其他设备推送的更新会自动合并进来并推送回去。随时可点 **立即备份**,备份历史会显示每一条来自哪台设备。
- **按技能合并**:同步以技能为单位而非文本行——一台设备改名、另一台改内容,会自动正确组合。
- **冲突不阻塞、不覆盖**:同一技能在两台设备被同时修改时,其余技能照常同步,该技能保留本机版本并进入 **需要处理** 列表(技能卡上也有徽章)。三选一:**保留本机 / 使用远端 / 两个都保留**——应用任一选择前都会先建安全快照,每个决定都可撤销。
- **快照与恢复**:手动备份会创建快照版本,在备份页历史中可恢复任意一个;恢复前会先把当前状态存为新快照。
### 备份包含什么
技能文件、标签、Preset 及每个 Agent 的技能开关会被备份。机密信息(API Key、令牌、代理配置)和本机接线永不上传。超过 100 MB 的技能自动留在本机、不进备份(备份页会标注)。SQLite 数据库不进 Git——其中的元数据可从技能文件重建。
### 断开连接
备份页提供三档:**断开本机**(其他设备与远端数据不受影响)、**撤销 GitHub 授权**、以及 **删除远端备份**(经 GitHub 原生的输入仓库名确认流程)。
## 支持的工具
开箱支持 53 个 Agent,包括:
Claude Code · Codex · Cursor · GitHub Copilot · Gemini CLI · OpenCode · OpenClaw · Hermes Agent · OpenHands · Cline · Goose · Windsurf · Continue · Grok · Antigravity · Qwen Code · ZCode · Crush · Kilo Code · Roo Code · Amp · Kiro CLI · Droid · TRAE IDE · Warp · Qoder · CodeBuddy
**设置**页会列出全部,并优先展示在你机器上检测到的那些。你也可以在那里添加自定义工具,以相同方式管理其 Skills。
## 应用内帮助
设置页中的 **帮助** 按钮会展示与上面一致的快速流程:推荐工作流、Preset、安装 Skills、技能库(含「未标签」筛选与卡片删除按钮)、全局工作区与 **+ 添加 Skills** 弹层、项目工作区的多 Agent 目标选择器、备份与多设备同步,以及环境设置(含「导出日志」用于 Issue 反馈),方便用户不离开应用也能快速理解使用方式。
## 技术栈
| 层 | 技术 |
|----|------|
| 前端 | React 19、TypeScript、Vite、Tailwind CSS |
| 桌面 | Tauri 2 |
| 后端 | Rust |
| 存储 | SQLite(`rusqlite`) |
| 国际化 | react-i18next |
## 快速开始
### 前置依赖
- Node.js 18+
- Rust 工具链
- 当前系统的 [Tauri 依赖](https://v2.tauri.app/start/prerequisites/)
### 开发
```bash
npm install
npm run tauri:dev
```
### CLI
仓库现在包含一个面向 agent 的 CLI,而且它是建立在与桌面应用共用的 Rust shared core 之上。也就是:repo 初始化、tool 解析、scenario 同步/应用逻辑,以及 metadata reindex,都被抽到了可复用 core 模块中,而不是另外在 CLI 里重写一份。
```bash
# 查看当前仓库路径和统计信息
npm run cli -- repo status
# 列出技能 / 查看单个技能
npm run cli -- skills list
npm run cli -- skills show db
# 把中央库 skill 部署给具体 Agent
npm run cli -- skills deploy db --agent claude_code --agent codex
npm run cli -- skills status db
# 把已安装的技能改指向 git 源,技能 id、标签、Preset 归属和已有部署都保留
# (典型场景:本地写的技能后来发布到了 GitHub)
npm run cli -- skills set-source db --git-url https://github.com/you/skills/tree/main/db --dry-run
npm run cli -- skills set-source db --git-url you/skills --subpath db --force
# 管理和部署 Preset(CRUD/成员调整只整理数据,deploy 才修改 Agent 文件)
npm run cli -- presets create "Web Dev" --description "前端开发"
npm run cli -- presets add-skill "Web Dev" db
npm run cli -- presets deploy "Web Dev" --agent codex
npm run cli -- presets status "Web Dev"
# 导出单个技能到其他 agent 工作目录
npm run cli -- skills export db --dest ~/.claude/skills/db
# 查看或同步 git 管理的 skills 仓库
npm run cli -- git status
npm run cli -- git pull
npm run cli -- git commit -m "chore: update skills"
```
可用命令分组:
- `repo`:查看或修改当前 base directory
- `agents`(兼容别名 `tools`):列出 Agent,并全局启用或禁用 Agent
- `skills`:管理中央库、标签,以及 skill 在各 Agent 中的真实部署
- `presets`:创建、修改、删除、整理、部署或撤下 Preset
- `git`:操作 git 管理的 `skills/` 仓库(`clone`、`pull`、`push`、`commit`、`versions`、`restore`)
额外参数:
- `--skills-root `:直接针对某个已 clone / 已导出的 skills repo 操作,而不是本机 app 默认目录。manager 的状态(DB、scenarios、cache、logs)会落在 `~/.skills-manager/external/-/`,按 skills root 的规范化路径分目录隔离,外部仓库本身保持干净。
- `--json`:给脚本 / agent 使用的机器可读输出
```bash
npm run -s cli -- --skills-root /path/to/my-skills --json skills list
```
#### 把 CLI 二进制安装到 PATH
如果 agent / 脚本直接调用 `skills-manager-cli`(而不是 `npm run`),需要先把二进制放到 PATH 上:
```bash
npm run cli:install
# 等价于:
# cargo install --path src-tauri --bin skills-manager-cli --locked --force
```
二进制会装到 `~/.cargo/bin/skills-manager-cli`。代码更新后再跑一次即可刷新。
正式 Release 也会提供 macOS arm64/x64、Windows x64、Linux x64 的独立 CLI 文件。下载对应的 `skills-manager-cli-*`,在 macOS/Linux 添加可执行权限后放入 PATH 即可。
#### 与桌面应用并发使用
CLI 和桌面应用共享同一个 SQLite 数据库及仓库锁。CLI 修改 metadata 或 Agent 部署后,桌面应用通常会通过文件监听自动刷新;如果应用当时处于休眠状态,手动刷新一次即可。
### 构建
```bash
npm run tauri:build
npm run cli:build
```
## 常见问题
### macOS 首次启动被 Gatekeeper 拦截(v1.28.5 及之前)
**v1.29.0** 起的版本使用 Apple Developer ID 证书签名并经过 Apple 公证,可以直接打开——不会有提示,也不需要在终端里敲命令。如果你还在用旧版本,升级即可解决。
**v1.28.5 及之前的版本**发布于公证之前,会被 macOS 拦截:
- **"无法验证 App 是否包含恶意软件"** 或 **"无法打开,因为无法验证开发者"**(v1.20.0 – v1.28.5)—— 在 macOS 15(Sequoia)上,上图的弹窗只有 **移到废纸篓** / **完成** 两个按钮:点 **完成**,再打开 **系统设置 → 隐私与安全性**,点 **仍要打开**(第一次被拦截后会出现)。旧版 macOS 也可以在访达里右键点击应用、选择 **打开**,再在弹窗里确认。
- **"应用已损坏,无法打开"**(v1.19.0 及之前版本)—— 在终端执行下面这条命令后重新打开应用即可:
```bash
xattr -cr /Applications/skills-manager.app
```
如果 `.app` 不在 `/Applications`,请替换为实际路径。
升级到公证版本时,应用的代码签名发生了变化,macOS 可能会再问一次是否允许读取 `skills-manager-git-backup` 钥匙串条目。点 **始终允许** 即可——从 v1.29.0 起签名身份保持稳定,之后的更新应该不会再问。
## Star 增长
## License
MIT