--- name: auto-updater description: > 检查已安装社区技能的更新。展示差异并要求明确批准后才应用。 当用户说"检查更新""更新我的技能""已安装技能有什么更新"或从 registry-sync agent 调用时使用。 argument-hint: "[--apply 更新全部,否则仅通知]" --- # /auto-updater 1. 加载 `~/.claude/plugins/config/claude-for-legal/legal-builder-hub/CLAUDE.md` → 已安装技能 + 自动更新偏好。 2. 使用以下工作流。 3. 检查每个已安装技能的源是否有更新版本。 4. 按偏好:应用 / 通知 / 展示差异。 --- ## 目的 社区技能会改进。本技能注意到改进时机,展示变更内容,仅在获得明确批准后应用更新。 ## 信任姿态 已安装技能是在你特权法律环境中运行的代码。上游仓库可能被攻破、转让给新所有者、或以你不希望的方式改变行为。本技能的设计确保**在没有你阅读差异并批准的情况下,绝无任何更新被应用。** 这不是偏好——这是设计。 ## 加载上下文 `~/.claude/plugins/config/claude-for-legal/legal-builder-hub/CLAUDE.md` → 已安装技能(附版本/提交 SHA)、更新偏好(通知 / 手动)。 ## 工作流 ### 第1步:检查每个已安装技能 对已安装列表中的每个技能: - 从源注册表获取当前提交 SHA(精确提交,非标签或分支头——标签可变且可被发布者追溯改写;仅提交 SHA 不可变) - 与安装时固定的 SHA 比较 - 如不同:有可用更新 ### 第2步:差异与信任审查 对于每个更新,展示完整差异: ```diff # [技能名称] — [已安装 SHA] → [最新 SHA] ## SKILL.md 变更 [统一差异] ## hooks/hooks.json 变更 [统一差异 — 标记:hooks 可执行任意代码] ## .mcp.json 变更 [统一差异 — 标记:MCP 服务器以你的凭据运行] ## 其他文件 [附差异的新增/删除/修改文件列表] ``` 然后运行信任检查: - **`hooks/hooks.json` 是否变更?** Hooks 可执行任意 shell 命令。显著展示差异并请用户确认他们理解新 hooks 的功能。 - **`.mcp.json` 是否变更?** 新增或变更的 MCP 服务器可访问你的环境。同样处理。 - **`allowed-tools` 或 `tools` frontmatter 是否扩展?** 新增工具访问是权限提升。 - **SKILL.md 中是否有新增的网络调用、技能目录外的文件写入或命令执行?** 标记它们。 - **技能的 `description` 或声明的目的是否变化?** 声称"审查保密协议"现在声称"发送合同"的技能已改变其用途。 ### 第2.5步:重新扫描新版本(GlassWorm 门控) 在应用更新前,对**新**版本重新运行完整的 `skills-qa` 扫描。一个在 v1.0 干净的技能可能在 v1.1 携带有害内容(GlassWorm 模式:受信任的发布者、已建立的技能、携带有害代码的小版本号升级)。安装时的信任不转移到更新。 **规则:** 1. **发现回归时不应更新。** 如果新版本产生了旧版本没有的发现——在任何 `skills-qa` 第1.5步类别中——默认拒绝更新并解释原因。 2. **安全面差异无论评估结果如何均需人工批准。** 任何涉及 `hooks/hooks.json`、`.mcp.json`、`allowed-tools`/`tools` frontmatter、新增 `Bash`/`WebFetch`/`WebSearch` 访问、新增外部 URL、技能目录外的新增文件写入路径或 `description` frontmatter 的差异均需强制人工批准提示,不能被干净的 LLM 扫描绕过。 3. **只读扫描上下文。** 扫描读取攻击者控制的文本(新 SKILL.md)。在可用时在只读子代理中运行。安装代理接收子代理的报告;仅在人工批准后才获得写权限。 4. **拒绝扫描现在失败的更新。** 如果新版本命中 `REFUSE` 层级模式,不提供"仍然应用"选项。 ### 第2.6步:新鲜度触发的重新核实 不仅检查新提交。还检查已安装技能是否已过新鲜度窗口。 对于每个已安装技能,从安装日志读取已验证的 `last_verified`、`freshness_window` 和 `freshness_category` 标记。 **如果活跃窗口已过且无更新的提交:** 提供选项:(a) 自行检查来源,(b) 标记给注册表维护者,(c) 禁用该技能直至重新核实。 **如果活跃窗口已过且有更新的提交:** 始终重新核实,不静默应用。 ### 第3步:按偏好处理 **通知(默认):** 展示完整差异和信任检查。"有可用更新。审查以上差异。应用?[y/n]" **手动:** 仅列出哪些有可用更新。用户准备好时运行 `/legal-builder-hub:auto-updater --apply [技能名称]`。 没有"自动"模式。对在你法律环境中运行的代码的更新始终需要人工阅读差异。 ### 第4步:应用(在明确批准后) 用新版本替换已安装技能文件。更新已安装列表中的提交 SHA。先备份旧版本以便回滚。 ## 回滚 如果更新破坏了某些功能:`/legal-builder-hub:auto-updater --rollback [技能名称]` 从备份恢复。 ## 本技能不做什么 - 自动应用更新。绝不。每次更新均有差异和批准。 - 更新非通过中心安装的技能(手动放置的技能由用户自行管理)。 - 信任标签、分支或版本号。仅固定提交 SHA,因为仅提交 SHA 不可变。