skill 的依赖管理,停在了"前包管理时代"
skill(指令 + 脚本的打包单元)决定 agent 行为。AGENTS.md 告诉 agent 怎么行为,SKILL.mod 声明 agent 需要什么能力。skillmod 把 go mod 的同构方案搬到 skill 上:SKILL.mod 声明,SKILL.lock 用 dirhash 内容寻址锁定,skillmod sync 幂等对齐。
- ✗ 手工复制、git submodule、平台市场,同团队不同机器的 agent 行为不一致
- ✗ 出了故障,回答不了"当时用的是哪个版本"
- ✓ SKILL.lock 内容寻址,任何篡改在 verify 时无所遁形
能力
七个命令
- init 扫描现有 skills 生成声明
- get 添加依赖并锁定版本
- sync 按 lock 幂等对齐
- list 列出已声明依赖
- update 并发检查并升级版本
- prune 确认制清理多余文件
- verify CI 校验漂移
源直接走 Git
对应 go 的 direct 模式:skill 是带 tag 的仓库,或 monorepo 子目录(<repo>//<subdir>)。打 tag 即发布,无服务端、无 registry。
三种版本形态
semver tag、commit SHA、伪版本。分支名直接拒绝,可变引用不可锁定。
内容寻址锁定
SKILL.lock 用 dirhash 锁定内容,纯函数生成,无时间戳,禁止手改。
共享持久存储
只读整仓快照存放于 ~/.agents/skillmod/pkg/mod,HTTPS 与 SSH 变体共享存储。
拷贝安装,字节级一致
Windows 兼容的字节级拷贝。sync 永不自动删除文件,清理走确认制 prune。
扁平 1:1 · 零遥测
无传递依赖解析,无约束求解器(requires 字段预留)。不收集任何数据。
两个文件,说清一切
SKILL.mod 由人维护、提交入库;SKILL.lock 由工具维护,确定性生成。
SKILL.mod
schemaversion = 1
[[skill]]
name = "code-review"
source = "github.com/example/agent-skills//code-review"
version = "code-review/v1.2.0"
[[skill]]
name = "legacy-notes"
local = true
SKILL.lock
[[skill]]
name = "code-review"
source = "github.com/example/agent-skills//code-review"
version = "code-review/v1.2.0"
commit = "7f3a9c1e00000000000000000000000000000000"
dirhash = "h1:4wYq0b..."
一条命令,开始使用
需要 Go 1.26.1 或更高版本;也可以从 Releases 下载对应平台的压缩包。
$
go install github.com/huija/skillmod@v0.0.1