feat: skills registry - #172
Conversation
6780418 to
ddcd002
Compare
|
审了一遍,安全设计的主体是扎实的:路径穿越、符号链接、以及「不能删用户自己写的 Skill」这三条防线我都实测过,都成立。有一个数据丢失问题建议合并前修掉。 下面每条都是在 P0 — 重新发布 Skill 会静默删除用户在目标目录里的文件
复现(走真实入口 场景:用户导入 Skill 三点让它更值得修: 一、同一份代码里对同一风险的两种态度。 二、与仓库既有约定相反。 三、没有备份也没有警告。 有个偶然的缓解:如果用户编辑后恰好触发过 建议:让 publish 与 delete 对称 —— 发布前 P2 — 排队的删除会扩散到用户没见过的目标
先在只发布到 codex 时排一个删除,applied 之前又发布到了 claude-code,那次删除会把两个都清掉。 影响有限 —— P3 — 重复删除返回空结果,UI 无从展示同一个删除执行第二次: P3 — Uninstall 的备份在 UI 里取不到
确认做对的部分这些我都实测过,不是扫一眼: 路径穿越被正确拦下。 符号链接防线是分层的,每层都成立。 全 PR 没有 扫描到的 Skill 不能被删除 —— 这条最关键。 扫描只赋予 权限正确。 发布的文件 0600、目录 0700,故意设成 0644 的源文件会被收紧。注册表与备份元数据走 幂等性正确。 连续三次 apply 后注册表逐字节一致,无重复 variant,无残留 stage 目录。 启动同步的设计是对的。 测试覆盖评估
但覆盖面是不对称的:
一处小提醒
我的建议是 P0 合并前修。其余几条可以后续处理,其中「备份取不到」和「重复删除返回空」都是 UI 层的小补。 |
Summary
Implement skill discovery, sync and delete.
Related issue: #161
Verification
Change checklist
frontend/bindings,frontend/src/backend/wails.ts, and handwritten API types were synchronized.README.mdandREADME_ZH.mdwere updated together.NOTICEwas updated.AGENTS.mdanddocs/internal/remain in Chinese.