现在用 AI 工具 skills 是越加越多,之前我一直用 vercel-labs/skills 管理技能,但我感觉这个项目迷惑的是:不管技能安装到全局还是项目,它始终会将技能文件保存到全局或项目下的 .agents/skills 目录下,再软链到要安装的目录。
我很少将技能安装到全局,大部分是在项目中按需安装。所以每有一个新项目,我就需要去找技能的安装命令(这难道是增加 skills.sh 访问量的手段?),安装后项目中又多了一份技能副本和我不想要的 .agents 目录。
这种当我面在项目里拉屎的感觉让我很难受,索性自己抄 参照实现了一个新工具 skls-mgr。
skls-mgr 的解法
核心思路只有一句话:集中存储,按需软链。
所有技能统一安装到 ~/.config/skls-mgr 这一个目录下,无论是从 GitHub 拉取的托管技能,还是自己写的本地技能,都在这里统一管理。
需要在某个项目中使用时,只需执行 install 命令,从已有技能库中选择并软链过去(全局安装就软链到全局目录)。
技能文件只有一份,修改立即生效,所有项目同步更新。
快速开始
在 skills.sh 中查找目标技能,将安装命令中的 skills 改为 skls-mgr:
csharp
npx skls-mgr add https://github.com/vercel-labs/skills --skill find-skills
安装完成后,技能会被复制到 ~/.config/skls-mgr 目录,随后在任意项目中执行:
npx skls-mgr install
交互式选择项目所需技能,确定后安装完成。
添加技能
bash
npx skls-mgr add <source>
默认会进入交互式界面,列出来源包含的全部技能。
选项
| 选项 | 说明 |
|---|---|
-s, --skill <names...> |
直接指定要安装的技能名,跳过技能选择 |
示例
csharp
# GitHub shorthand(owner/repo)
npx skls-mgr add vercel-labs/skills
# GitHub 仓库 URL
npx skls-mgr add https://github.com/vercel-labs/skills
# GitHub 仓库中的子路径
npx skls-mgr add https://github.com/vercel-labs/skills/tree/main/skills/find-skills
# 任意 Git URL
npx skls-mgr add https://github.com/vercel-labs/skills.git
npx skls-mgr add git@github.com:vercel-labs/skills.git
# 本地路径(复制)
npx skls-mgr add ./my-local-skills
# 安装指定技能(重复写 --skill)
npx skls-mgr add vercel-labs/agent-skills --skill frontend-design --skill skill-creator
# 安装指定技能(单个 --skill 后跟多个名称)
npx skls-mgr add vercel-labs/agent-skills --skill frontend-design skill-creator
冲突处理
如果待安装技能的目录名和 ~/.config/skls-mgr 中已有一级目录重名:
- 交互模式下,会要求你输入新的目录名
- 非交互模式下,如果使用了
--skill,命令会直接终止,不会自动改名
安装到项目
npx skls-mgr install
默认会进入交互式界面,列出 ~/.config/skls-mgr 下全部一级目录(包括手动创建的技能)。
选项
| 选项 | 说明 |
|---|---|
-s, --skill <names...> |
直接指定要安装的技能名,跳过交互式技能选择 |
-a, --all |
安装全部技能 |
-d, --dir <path> |
安装到目标目录,支持相对路径或绝对路径 |
-l, --link |
使用符号链接 |
-c, --copy |
使用复制方式 |
示例
bash
# 交互式安装到项目
npx skls-mgr install
# 安装指定技能,跳过交互式选择
npx skls-mgr install --skill skill-one skill-two --dir ./.claude/skills --link
# 将所有技能复制到 Claude Code 技能目录
npx skls-mgr install --all --dir ./.claude/skills --copy
# 交互式选择所需技能,链接到 .agents/skills 目录
npx skls-mgr install --dir ./.agents/skills --link
覆盖策略
如果目标目录下已存在同名技能目录,skls-mgr install 会直接覆盖,不再额外确认。当选择 --link 时,如果当前环境无法创建符号链接,会自动回退为复制安装。
其他命令
| 命令 | 说明 |
|---|---|
npx skls-mgr find [query] |
搜索远程技能;不传关键词时可交互式搜索并添加选中的技能 |
npx skls-mgr list |
列出 ~/.config/skls-mgr 中的全部技能,支持区分托管技能与手动技能 |
npx skls-mgr update [names...] |
交互式或根据指定名称更新技能 |
npx skls-mgr remove [names...] |
交互式或根据指定名称删除技能 |
npx skls-mgr help |
显示帮助 |
npx skls-mgr version |
显示版本 |
示例
csharp
# 显示全部技能(包括手动添加技能)
npx skls-mgr list
# 按关键词搜索远程技能
npx skls-mgr find react performance
# 交互式搜索,并添加选中的技能
npx skls-mgr find
# 交互式更新技能
npx skls-mgr update
# 按名称强制更新技能
npx skls-mgr update skill1 skill2
# 交互式删除技能
npx skls-mgr remove
# 按名称删除技能
npx skls-mgr remove skill1 skill2
skls-mgr update依赖 GitHub API。为避免匿名请求带来的限流限制(每小时 60 次),建议在环境变量中配置GITHUB_TOKEN或GH_TOKEN以提升配额(每小时 5000 次)。
find-skills
find-skills 技能也抄 参考实现了一份,推荐使用本项目中的 find-skills 技能,让 AI 帮你查找可能有用的技能并安装。
bash
# 添加技能
npx skls-mgr add Xaviw/skills-manager --skill find-skills
# 安装技能到全局
npx skls-mgr install --skill find-skills --dir ~/.claude/skills --link
# 或者按需安装到项目
npx skls-mgr install --skill find-skills --dir ./.claude/skills --link