# Auto Updater

> 检查已安装社区技能的更新。展示差异并要求明确批准后才应用。 当用户说"检查更新""更新我的技能""已安装技能有什么更新"或从 registry-sync agent 调用时使用。

- Skill: `cslawyer1985/auto-updater` (Agent Skill)
- Install (CLI): `npx skillmds@latest add cslawyer1985/auto-updater`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cslawyer1985/auto-updater/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: cslawyer1985 (https://skillmd.com/u/cslawyer1985)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cslawyer1985/auto-updater

---


# /auto-updater

1. 加载 `~/.claude/plugins/config/claude-for-legal-zh/legal-builder-hub/CLAUDE.md` → 已安装技能 + 自动更新偏好。
2. 使用以下工作流。
3. 检查每个已安装技能的源是否有更新版本。
4. 按偏好：应用 / 通知 / 展示差异。

---

## 目的

社区技能会改进。本技能注意到改进时机，展示变更内容，仅在获得明确批准后应用更新。

## 信任姿态

已安装技能是在你特权法律环境中运行的代码。上游仓库可能被攻破、转让给新所有者、或以你不希望的方式改变行为。本技能的设计确保**在没有你阅读差异并批准的情况下，绝无任何更新被应用。** 这不是偏好——这是设计。

## 加载上下文

`~/.claude/plugins/config/claude-for-legal-zh/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 不可变。

