一款基于 Electron + TypeScript 构建的桌面端 AI Skills 集中管理与多平台同步工具。
当你同时使用多个 AI 辅助工具(Claude Code、Codex、Gemini CLI 等)时,每个工具都有自己独立的 skills 目录,维护起来极为分散。Skill Manager 解决了这个痛点:
- 指定一个全局 Source 目录作为所有 Skills 的唯一真实来源
- 一键将选中的 Skills 批量分发到各 AI 平台的目标目录(支持软链接或物理复制)
- 提供C盘扫描功能,将散落在系统各处的 Skills 归档到 Source 目录
- 内置冲突解决面板,批量处理同步过程中的文件冲突
- Source Config:设置全局 Skills 源目录(如
C:\Users\name\.skills) - Target Vendors:添加多个同步目标(如
~/.claude/skills、~/.codex/skills),每个 Vendor 独立配置同步方式(Symlink / Copy),添加时自动校验路径是否存在
- 目录切换:在 Source 目录与各 Vendor 目录间自由切换查看
- 有效 Skill 识别:仅展示包含
SKILL.md的目录,自动解析描述文本 - 实时搜索:支持按名称或描述模糊过滤,输入即响应
- 同步状态徽章:自动检测各 Vendor 中是否存在该 Skill,显示"已同步"标签,点击查看详情
- 软链接标识:通过
lstat检测,为软链接项显示 🔗 Symlink 徽章 - 删除:支持单项删除和批量删除;从 Source 删除时,自动联动清理关联的软链接
- 快速定位:点击 📂 按钮在系统资源管理器中打开对应目录
- 选中 Skills → 选择目标 Vendors → 一键同步
- 同步过程非阻断:冲突被静默收集,全部完成后统一展示
- 冲突面板按 Vendor 分组折叠,支持:
- 单项 Skip / Overwrite
- 组级 Skip All / Overwrite All
- 全局 Skip All / Overwrite All
- 从 Home 目录递归扫描(深度 5 层),找出所有含
SKILL.md的目录 - 自动排除 Source 目录,避免重复
- 结果按父目录分组展示,支持组内全选
- 选中后一键 Centralize,将 Skills 物理复制到 Source 目录
- 归档冲突按 Skill 名称分组,支持 Skip Group 和单项 Overwrite
| 层级 | 技术 |
|---|---|
| 桌面框架 | Electron 41 |
| 语言 | TypeScript 6 |
| 渲染层 | 原生 HTML + CSS(无前端框架) |
| 进程通信 | Electron IPC(contextBridge 隔离模式) |
| 数据持久化 | 本地 JSON 配置文件(electron-store 封装) |
| 构建工具 | tsc(TypeScript 编译器) |
skill-manager/
├── package.json # 项目依赖与 npm scripts
├── tsconfig.json # TypeScript 编译配置
├── src/
│ ├── main/
│ │ ├── main.ts # 主进程入口:创建 BrowserWindow,注册 IPC handlers
│ │ ├── preload.ts # 预加载脚本:通过 contextBridge 将 IPC 接口安全暴露给渲染层
│ │ ├── ipcHandlers.ts # 核心业务逻辑:文件系统读写、软链接创建、全局扫描、冲突检测
│ │ └── store.ts # 配置持久化层:读写本地 JSON 配置(source_dir、targets、sync_history)
│ └── renderer/
│ ├── index.html # 渲染层入口:主界面结构 + 所有模态框 HTML
│ ├── style.css # 全局样式:Glassmorphism 设计语言、CSS 变量、动画
│ └── renderer.ts # 渲染层控制器:DOM 操作、事件绑定、调用 electronAPI
└── dist/ # tsc 编译输出目录(运行时使用)
ipcHandlers.ts — 所有文件系统操作都在主进程中执行,包括:
get-skills:读取目录,过滤出含SKILL.md的子目录,解析描述,检测软链接状态和同步状态sync-skills:批量同步,冲突不阻断流程,统一收集后返回search-skills:从 Home 目录递归扫描(最深 5 层),跳过node_modules、AppData等无关目录centralize-skills:将扫描到的 Skills 物理复制到 Source 目录delete-skill:删除 Source 目录中的 Skill,并联动清理各 Vendor 中对应的软链接(不影响物理副本)
preload.ts — 以 contextBridge 方式暴露 window.electronAPI,渲染层无法直接访问 Node.js API,保证安全隔离。
renderer.ts — 纯 TypeScript 控制器,核心设计:
loadSkills()负责从主进程拉取数据并重置搜索状态renderSkillsList(query)负责按搜索词过滤并渲染列表,支持实时模糊搜索- 所有危险操作(删除、覆盖)均通过
askUser()弹出确认对话框
- Node.js >= 18
- Windows / macOS / Linux
Windows 软链接说明:创建目录软链接需要管理员权限或已开启开发者模式(Settings → Developer Mode)。若遇到
EPERM错误,请以管理员身份运行,或改用 Copy 同步方式。
查看右侧 Releases 中发布的最新版本,下载 .exe 并进行安装。
或者按照以下流程:
# 安装依赖
npm install
# 编译 TypeScript 并启动应用
npm start
# 仅监听编译(开发时配合手动启动 electron 使用)
npm run watch第一步:配置 Source 目录
点击右上角 Source Config,输入你存放所有 Skills 的目录路径,点击 Save。
示例:C:\Users\name\.skills
第二步:添加 Target Vendors
点击 Target Vendors,填写 Vendor 名称、路径和同步方式,点击 Add。
名称:claude
路径:C:\Users\name\.claude\skills
方式:Symlink(推荐,节省磁盘空间)
第三步:同步 Skills
在主界面勾选要同步的 Skills,点击 Sync Selected...,选择目标 Vendors,确认同步。
第四步(可选):归档散落的 Skills
点击 Global Discovery → Start Scan,扫描完成后勾选要归档的 Skills,点击 Centralize Selected。
每个 Skill 必须是一个包含 SKILL.md 的目录:
my-skill/
└── SKILL.md # 必须存在,应用通过此文件识别有效 Skill
SKILL.md 中的 description 字段会被自动解析并显示在列表中:
---
description: 这里是技能描述,会显示在列表中
---- Glassmorphism:卡片与模态框使用半透明背景 +
backdrop-filter: blur(15px),营造悬浮感 - 渐变色系:背景
#f8f9fa → #e9ecef,标题使用#3a86ff → #ff006e渐变裁剪 - 固定视口:主界面禁止页面级滚动,Skills 列表在卡片内部独立滚动
- 微交互:列表项 hover 位移、按钮阴影反馈、危险操作使用红色色系区分
- 排版:使用
Inter字体,描述文本通过-webkit-line-clamp: 2控制截断
Last updated: 2026/3/24