AI agent skill 的统一管理工具。设定安装源、记录并锁定版本、按 profile 组织候选集、按项目精确安装并幂等落地到各 agent 目录。
Rust 单二进制,CLI(供 AI agent 高频调用)+ 本地 web GUI(供人总览配置)共享同一 core,零运行时依赖。
cargo install --path crates/cli# 添加安装源
skillkit source add owner/repo
skillkit source add ./local-skills --name my-local
# 安装 skill(固定源直接装,skills.sh 源交互选候选)
skillkit install add owner/repo pdf
skillkit install add skills.sh pdf
# 查看项目状态并落地
skillkit project status
skillkit project apply
# 启动 web GUI(前台运行)
skillkit serve
# 后台启动并按日期记录日志
./start.sh --no-open
tail -f .log/$(date +%F).log
kill "$(cat .log/skillkit.pid)"仓库内的 browser-extension/ 是独立的 Chrome / Edge 扩展。首次安装时注册 Native Messaging Host,之后点击浏览器工具栏图标即可启动或关闭服务,并在启动成功后自动打开管理页面:
cargo build -p skillkit-cli
./browser-extension/install.sh <Chrome/Edge 扩展 ID>Windows 可执行:
.\browser-extension\install.ps1 -ExtensionId <Chrome/Edge 扩展 ID>扩展与本地命令共用服务控制层:
skillkit service start
skillkit service status
skillkit service stopskillkit source add <package> [--name <别名>] # github shorthand / git url / local path
skillkit source list
skillkit source remove <name>skillkit install add <source> <skill> [--scope global|local] [--json]- 固定源直接安装;skills.sh(registry)源走
npx skills find交互选候选 --json时只输出候选数组,不交互不安装(适合 AI agent 调用)
skillkit find <query> # 搜 skills.sh registry,纯展示不安装
skillkit find <query> --json # 候选数组 [{spec,url}],供 agent 决策skillkit list # 列 registry 全部已装 skill(unmanaged 标记)
skillkit list --json # SkillMeta[]skillkit project add <path> [--name <名称>]
skillkit project remove <project> [--yes] # 注销:只删注册信息,不碰项目目录
skillkit project status # 查看 diff(该有/缺/多/冲突)
skillkit project apply # 幂等落地到 agent 目录
skillkit project listskillkit profile create <name>
skillkit profile add-skill <profile> <id> # id = <source>/<skill>
skillkit profile remove-skill <profile> <id>
skillkit profile listskillkit upgrade <id> # 升级单个 skill
skillkit upgrade --all [--yes] # 批量升级,--yes 跳过冲突确认skillkit import-existing # 扫描存量目录,可溯重装入池 + 无源迁入池(原位 symlink 桥接)
skillkit import-existing --dry-run # 只输出不写
skillkit import-existing --json # JSON 输出无源(unmanaged)skill 物理迁入 canonical 池,原位置(~/.agents/skills/、~/.claude/skills/)用 symlink 桥接取代;已登记的存量 unmanaged 也会被补迁入池(幂等)。
skillkit remove <id> # 从 canonical 池移除(默认交互确认)
skillkit remove <id> --yes # 跳过确认
skillkit remove <id> --json # 输出 {id,removed_canonical}(隐含 --yes)unmanaged skill(无源存量)只删登记不删 canonical 目录(迁池后 canonical 在 ~/.skillkit/.agents/skills/)。
skillkit serve [--port 7317] [--no-open] # 四视图,覆盖 CLI 全部操作(find/装/卸/升级/导入、project 注册/扫描/重绑/apply-profile/apply 闭环)+ SSE
./start.sh [--port 7317] [--no-open] # 后台启动,日志写入 .log/YYYY-MM-DD.log
tail -f .log/$(date +%F).log # 查看当天后台日志
kill "$(cat .log/skillkit.pid)" # 停止后台服务start.sh 会先编译最新的 skillkit-cli,再以后台进程启动 Web GUI。日志按启动当天写入项目根目录 .log/,该目录已被 Git 忽略。
| Agent | 安装方式 | 说明 |
|---|---|---|
| Claude Code | symlink(双层桥接) | global scope 时自动创建 |
| Cursor | symlink | 直读 ~/.agents/skills/ |
| OpenCode | symlink | 直读 |
| Codex | copy | 无法 symlink 时的 fallback |
新增 agent 只需配置,不改代码。详见 ~/.skillkit/config.toml。
make check # format + lint + test(提交前一站式)
make build # 编译
make test # 全量测试
make run ARGS="..." # 跑 CLI
make e2e # GUI 端到端(playwright + chromium)
make e2e-cli # CLI 全链路端到端(assert_cmd + npx skills)crates/
core/ # skillkit-core(lib)— 全部业务逻辑
cli/ # skillkit-cli(bin)— 薄壳调 core
server/ # skillkit-server(lib)— Axum + Askama + htmx
CLI 和 server 都是 core 的薄壳,不允许出现重复业务逻辑。状态存储统一在 ~/.skillkit/,并发写用文件锁串行化。
MIT