开源一个纯 Rust 写的 Skill 管理工具,Skill 再也不乱了
每天都会冒出来各种高质量(至少看起来)的 Skill,很多时候看到有用的就会顺手装一下试试。
很多人会图方便直接装到全局,一次安装到处都能用。这确实很方便,但这会严重污染上下文。
不管现在做的是什么项目,Agent 都能看到这一大堆 Skill。有些完全用不上,有些功能重叠,还有些甚至互相冲突。带来的不仅是账单爆炸,还会感觉 AI 好像越来越笨了。
所以 Skill 其实不适合全都装在全局。真正每个项目都要用的可能只有几个,剩下的还是应该跟着项目走,做好隔离,各自只加载自己需要的。
但这么装又会遇到另一个问题。
同一个 Skill 可能被复制到好几个项目里,改了一份,其他地方还是旧的。再加上 Skill 的来源本来就很乱,有些从 GitHub 拉,有些通过 npx skills 安装,有些是自己在本地写的。过一段时间以后,连自己都搞不清哪份是最新的、哪些项目装过、现在实际生效的又有哪些。
宝玉之前分享过一种做法:把 Skill 统一放在一个目录里,再通过软链接(相当于 Windows 的快捷方式)装到不同项目。
分享一下我管理 Skills 的方式,偏极客风格,不一定适合所有人,但可以给大家提供一个思路。 一、Skills 只装在项目里,不装全局 Agent 的 Skills 可以装在全局(所有项目共享)或者项目内(只有当前项目能用)。我选择只装在项目内,最主要的原因是节约上下文空间。 Agent
我快疯了。日常同时用 4个 coding agent,skills 各写各的: /.agents/skills、/.codex/skills、~/.claude/skills 已经一团浆糊,CC 里找不到 Codex 的 skill,反过来也一样。 目前的打算: 写脚本把各自独有的skills软链到另外两方去,crontab定时跑一下,有更优雅的方案或者工具吗?
我很认同这个思路,我之前也是这么做的。一份 Skill 只维护一次,每个项目又可以只挑自己需要的,基本就是我认为最合理的管理方式。
问题是,手动维护这套东西还是挺麻烦的。
Skill 得自己收集和归档,软链接的命令又实在不常用,我每次都记不住。经常是临时开个 Agent 会话让它帮我处理,或者懒得折腾,干脆又往当前项目里装一份。
而且就算都整理进一个目录,也还是看不出来每个 Skill 是干什么的、装到了哪些项目、每个项目现在到底生效了多少 Skill、占了多少 token。
本来想建立一套干净的管理方式,最后往往还是慢慢乱掉,关键还是这一套管理方式对人来说心智成本太高了,并且非常不直观。
所以我做了 Kitter
Kitter 会在本地维护一个统一的 Skill 仓库。无论 Skill 原来在本地目录、GitHub,还是通过 npx skills 安装,都可以收进来一起管理。
需要用的时候,选中一个 Skill,再选择要安装的项目和 Agent。Kitter 会把仓库里的那一份软链过去。
这样每个 Skill 都只有一份需要维护,每个项目又只会拿到自己需要的组合
之前用软链接时,我只能看到那个统一目录里有哪些文件。至于一个 Skill 到底被哪些项目用了,还是得自己挨个找。
Kitter 把这层关系直观的展示了出来。打开一个 Skill,可以看到它被装到了哪些项目、对哪些 Agent 生效。以后更新这份 Skill,所有引用它的项目都会一起生效。
选好项目以后,可以装到通用的 .agents/skills,也可以只给 Codex、Claude Code、Cursor、OpenCode 等某一个 Agent 使用。Kitter 会处理具体路径和链接。
我还很想知道另一件事:一个项目现在实际用了哪些 Skill、这些 Skill 会占多少的 Token.
项目里生效的 Skill 不一定都经过 Kitter。它可能来自项目目录、用户目录、上级目录、Agent 自己的内置能力或者已经启用的插件。只看 Kitter 安装了什么,得到的并不是完整结果。
所以在 Kitter 里打开一个项目,会看到各个 Agent 当前真正能发现的 Skill,包括那些没有被 Kitter 托管的。
这里会显示当前项目生效的所有 Skill,对于每一个 Agent 来说会占用多少的 Token,当我们发现占用太多时,就说明需要治理了。
Kitter 管理了一个 Skill 的整个生命周期,并以友好的可视化界面将这一切呈现了出来。
Kitter 的 Logo 是一只抱着石头的小海獭,小海獭会收集石头来当玩具或者工具,就像我们会收集一堆 Skill 一样,哈哈哈哈哈。
最近做了一个新的 Logo Skill,效果挺不错的: https://github.com/s1dashu/ip-as-logo-skill 背景是:最近发现 grok bot, coze, workbuddy, 豆包, kiro 等等产品,其实都是在将产品 IP 形象直接作为产品的 Logo,Logo 辨识度极高,同时增强 IP 记忆,感觉挺不错的。 所以最近我的所有产品 logo 都有一个对应的可爱小
显示更多
也可以只使用 Skill 和 CLI
Kitter 有桌面客户端,也有独立 CLI。
如果不想安装客户端,可以直接安装 Kitter 自带的 Skill:
1 | npx skills add what1f/kitter --skill kitter |
这个 Skill 会教 Agent 使用 Kitter CLI。
之后可以直接让 Agent 帮你完成这些事情,比如:
- 看看当前机器上的 Skill 是怎么分布的;
- 把已有 Skill 收进 Kitter;
- 从 GitHub 添加一个 Skill,并安装到当前项目;
- 查看当前项目实际生效的 Skill 和 Token 占用;
- 更新或者卸载已经托管的 Skill。
桌面客户端和 CLI 使用同一套本地数据,按自己习惯选一种入口就行。
对了,项目使用 Rust 和 GPUI 开发,非常的精致小巧,对内存和磁盘的占用几乎可以忽略不计了。
目前三个操作系统都打包好了,但只有 MacOS 是测过的, Windows、Linux 没设备,暂时没测,有兴趣的可以帮忙试试这两个平台🙏🏻
由于目前还没有 Apple Developer ID,macOS 第一次打开时需要在 Finder 里按住 Control 点击 Kitter,再选择「打开」。如果仍然被系统拦截,可以执行:
1 | xattr -dr com.apple.quarantine /Applications/Kitter.app |
现已开源
https://github.com/what1f/kitter
Apache 2.0 协议。
觉得有帮助的话,希望顺手点个 Star ⭐ 支持一下!









