Skill 管理系统:Symlink 架构设计与实现
基于 Windows 目录符号链接(Junction)的 Claude Code Skill 管理系统。 实现"源码仓库—激活目录"分离,按需激活/停用,零拷贝、零冗余。
一、架构概览
<统一仓库>/ai-skills/ ← 50+ Skill 源码(唯一权威源)
│ 目录符号链接 (Junction)
▼
~/.claude/skills/ ← Claude Code 启动时扫描
├─ caveman/ → ai-skills/caveman/
├─ diagnose/ → ai-skills/diagnose/
└─ ...(≤30 个)
激活和停用只创建或删除链接,源码毫发无损。所有 Skill 定义集中在 ai-skills/ 目录,修改一处即对所有激活生效。
二、Skill 触发机制
Claude Code 启动时扫描 ~/.claude/skills/ 下所有 SKILL.md,一次性加载到上下文。
每个 Skill 的 description 字段决定触发条件。但已加载的 Skill 无论是否触发都会占用上下文窗口——激活越多,留给对话的空间越少。
硬上限约 30 个,超出时末尾 Skill 被截断,静默失效。
必须在启动 Claude Code 之前用 skill-mgr.sh 选好所需 Skill。启动后无法动态增删。
三、为什么用符号链接
触发机制暴露了两个需求:更新要即时生效,停用不能误删源码。符号链接同时满足这两点,而常见的文件复制方案在这两个维度上都有缺陷。
| 维度 | 文件复制 | 符号链接 |
|---|---|---|
| 更新传播 | 需手动重新复制 | 改源码即时生效 |
| 存储 | N 个激活 = N 份副本 | 始终 1 份源码 + 链接元数据 |
| 停用安全性 | 可能误删源码 | 删链接不动源码 |
| 维护 | 每个 skill 逐一更新 | 改一次全部生效 |
三个直接收益:
- 即时生效:改
ai-skills/源码,所有已激活链接自动反映最新内容,无需额外操作 - 零冗余:每个激活只占约 1KB 的链接元数据,50 个全激活也不过 50KB
- 安全停用:删除链接不影响源码,随时可重新激活
四、命令参考
| 命令 | 作用 |
|---|---|
skill-mgr.sh | 交互菜单(方向键选择、回车确认) |
skill-mgr.sh list | 列出全部 Skill,[*] 标记已激活 |
skill-mgr.sh enable <名> | 激活指定 Skill(创建 Junction) |
skill-mgr.sh disable <名> | 停用指定 Skill(删除链接,保留源码) |
skill-mgr.sh enable-all | 激活全部(上限 30,超出警告) |
skill-mgr.sh disable-all | 停用全部 |
skill-mgr.sh status | 查看激活数量和列表 |
skill-mgr.sh info <名> | 查看 Skill 描述详情 |
脚本位于 tools/,使用 bash tools/skill-mgr.sh 调用。
五、换设备恢复
skill-mgr.sh 和 ai-skills/ 源码均在统一 Git 仓库中。换电脑时克隆仓库,进入交互菜单勾选所需 Skill 即可:
git clone <仓库地址> <本地路径>
bash <本地路径>/tools/skill-mgr.sh
激活状态(符号链接本身)每台电脑独立管理,不同步——各设备按需选择不同 Skill 组合。