sklink-0.2.1 is not a library.
Visit the last successful build:
sklink-0.2.4
sklink
将仓库中的 skills/ 目录下各 skill(子目录)通过软链接安装到不同平台/Agent 的配置目录中,避免复制带来的漂移。
术语与目录
- skill:一个目录(例如
skills/software-engineer/),目录名即 skill 名 - repo skills dir:仓库中的
./skills/目录(或在skills/目录内运行时的当前目录) - local store:本机持久化技能仓库,默认
~/.config/sklink/skills - target dir:某个平台下的一个安装目标目录(来自
config.toml)
配置
默认读取:~/.config/sklink/config.toml
本机技能仓库(持久化存储):~/.config/sklink/skills
初始化(推荐):
默认会生成如下平台配置:
[]
= [
{ = "~/.kimi/skills" },
]
[]
= [
{ = "~/.trae/skills" },
]
配置结构(TOML):
[<platform_name>]
= [
{ = "<target_dir>" },
]
<platform_name>:平台名(-p/--platform传入的值)<target_dir>:目标目录路径,支持~,也支持相对路径(相对当前运行目录解析)
用法
# 初始化配置
# 查看可用技能列表(优先从 ./skills 或当前 skills/ 目录发现;否则回退到本机技能仓库)
# 查看已安装到哪里(读取 config.toml 中的 targets 并扫描目标目录)
# 生成补全脚本(以 zsh 为例)
# 在仓库根目录运行:默认使用 ./skills 作为 skills 目录
# 在 skills/ 目录内运行:默认使用当前目录作为 skills 目录
# 安装指定技能到指定平台(-i 可重复;既支持 skill 名,也支持路径)
# 使用长选项安装(等价于 -i)
# 也可以传路径(便于在任意目录运行;shell 展开后的 ./skills/* 也能工作)
# 安装到配置中全部平台
# 不传 -p 时默认 all
# 若本机技能仓库中已存在同名 skill,必须显式 --force 才允许覆盖(覆盖会先备份旧目录再写入)
安装模式(默认动作)
不带子命令时执行安装流程:
-i, --install <SKILL|PATH>:可重复- 传 skill 名:会在 local store / repo skills dir 中解析
- 传路径:必须指向一个目录,skill 名取目录名
-p, --platform <PLATFORM|all>:不传默认all--force- 允许覆盖 local store 中的同名 skill(覆盖前会备份)
- 影响部分解析优先级(见“skill 解析与优先级”)
开发运行(cargo run)
# 注意:cargo run 需要用 `--` 分隔 cargo 参数与 CLI 参数
行为说明
- skills 会先复制到 local store
~/.config/sklink/skills/<skill>,再从 target dir 创建软链接 - 若 target dir 不存在或不可用:跳过并输出 warning(不会自动创建)
- 若 local store 中已存在同名 skill:
- 批量安装(不传
-i)时:默认直接使用 store 版本(不报错),除非指定--force才会用当前来源覆盖 store - 指定安装(传
-i)时:默认报错;仅在指定--force时才允许覆盖(覆盖会先将旧目录备份到~/.config/sklink/backups/)
- 批量安装(不传
- 若链接不存在:创建软链接
<target_dir>/<skill> -> <local_store>/<skill> - 若已存在且为正确软链接:跳过并输出
skipped - 若已存在但不是正确软链接(普通文件/目录/指向其他目标):报错退出(避免误删用户文件)
skill 解析与优先级
当 -i 传入的是“skill 名”(不是路径)时:
- 同名 skill 在 local store 存在:默认使用 local store
- local store 不存在但 repo skills dir 可用:使用 repo skills dir
- 同名 skill 同时在 local store 与 repo skills dir 存在:
- 当前实现:带
--force时优先 repo skills dir;不带--force时优先 local store
- 当前实现:带
当 -i 传入的是“路径”时:
- 支持
~、./relative/path、包含/的路径 - 该路径必须是目录;skill 名取该目录的最后一段名称
list 输出说明
sklink list:输出可用 skill 名列表(每行一个)sklink list --installed:扫描配置中的 target dir,并按树形展示内容:[L]:软链接ok:软链接指向 local store 下的同名 skilloutside-store:软链接存在但不指向 local store 下的同名 skillunknown-store:无法确定 local store(例如 canonicalize 失败)broken:<err>:软链接损坏或无法解析
[D]:目录[F]:普通文件[?]:未知类型或读取失败
常见问题
- 为什么安装时提示
warning: target dir not found (skipped)?- 目标目录不存在或不可访问时会跳过,不会自动创建目录;请先手动创建并确保权限正确
- 为什么提示“已存在但不是正确软链接”就直接失败?
- 这是刻意的安全边界:工具不会删除/覆盖用户已有文件或目录,避免误操作
平台与系统限制
- 当前使用 Unix 软链接实现(macOS/Linux)
发布
发布到 crates.io 的流程已固化为脚本,见 scripts/README.md