关于 ln-32-dependency-upgrader
面向编码 Agent 的技能,用于分批升级依赖并追踪每批变更。它依据兼容性、安全性和维护情况规划升级,同时保护锁文件、运行时支持与产品行为。
主要功能
- 01识别包管理器与更新范围
- 02基于证据规划升级
- 03小批量且可追踪的更新
- 04使用原生方式管理锁文件
- 05验证并回退更新批次
适用场景
- 01应用指定的安全更新
- 02规划常规依赖维护
- 03评估依赖主版本迁移
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ levnikolaevich/ claude-code-skills --skill ln-32-dependency-upgrader安装后在 Claude Code 中输入/ln-32-dependency-upgrader确认已加载。
详细介绍
依赖升级
**目标:**以规模小、可追溯的批次升级依赖项。保留清单文件、锁文件、运行时支持和产品行为;若没有兼容性、安全性或维护方面的证据,不要仅因版本更新就认为它有价值。
**执行约定:**按顺序排列的复选框即为完成定义。内部将每项标记为 PENDING、PROVEN(有具体证据)、CLEARED(有证据证明其条件不存在)或 UNPROVEN(存在证据缺口);阅读、委派或工具故障都不能作为证明。每完成一个部分后,都要核对各项。返回前,解决所有 PENDING 项,仅统计 PROVEN 和 CLEARED 项;针对每个缺口,应用本技能的判定和审批规则。
保留用户意图、范围和现有授权。继续已获授权的工作;仅针对尚未解决且影响重大的选择或必需的外部审批提出询问。根据实际风险调整检查深度,不得默默跳过检查。遵循依赖项和安全要求的先后顺序;其他情况下,为每项要求选择合适的验证方法。
工具路由
| 需求 | 首选工具 | 使用时机 | 备用方案 |
|---|---|---|---|
| 检测包管理器 | 清单文件、锁文件、工作区文件、运行时文件和仓库说明 | 始终先于选择命令或更新范围 | 构建和 CI 配置 |
| 过时和易受攻击的包 | 包管理器原生的过时检查和审计命令 | 包管理器和注册表可用时 | 官方注册表、供应商安全公告和锁文件检查 |
| 破坏性变更和支持情况 | 官方发行说明、迁移指南、变更日志、安全公告和运行时支持表 | 每次影响重大的次要版本、主要版本、替换或安全更新 | 主源代码仓库的发行版本;否则标记为 UNVERIFIED |
| 用法和影响范围 | 语言服务器或宿主原生代码智能工具 | 更新的 API、类型、插件、构建工具或运行时可能影响使用方时 | 定向搜索导入项、符号、配置和脚本 |
| 安全的版本变更 | 包管理器原生命令 | 更新清单文件和生成的锁定状态时 | 不要手动编辑锁文件或模拟包解析 |
| 验证 | 仓库定义的安装、还原、构建、lint、类型、测试、迁移和冒烟测试命令 | 更改前及每个批次之后 | 检查 CI 和脚本,并明确标记未经验证的状态 |
| 差异和回滚 | Git 状态、差异,以及隔离提交或工作树 | 保护用户更改并仅回滚失败批次时 | 若无法安全隔离批次,则停止 |
绝不发布包、轮换凭据、部署或放宽审计和验证门槛。不要在没有环境常规防护措施的情况下,运行来自不可信包源的生命周期脚本。
证据规则
- 清单文件声明约束,锁文件记录解析后的版本;如果活动环境与之不同,安装元数据可证明实际使用的版本。注册表中的“最新”版本不能覆盖运行时或兼容性约束。
- 漏洞发现必须提供受影响版本、安全公告、可达性或暴露情况,以及可信的修复方案。
- 破坏性变更的说法必须有与具体版本转换相符的发行或迁移证据。
- 仅保留由选定的包管理器原生生成,且符合仓库预期版本的锁文件更改。
- 升级成功需要通过仓库验证,不能仅凭安装或还原成功来判定。
检查清单
1. 发现范围并保护工作区
- 检测请求更新范围内的包管理器、清单、锁文件、注册表、运行时/工具版本固定项、生成状态,以及依赖关联的工作区;仅在有明确兼容性依赖时才扩大范围。
- 将每项交付物归类为应用、库、插件、CLI、容器或构建工具,以便正确解读版本范围、锁文件、同级约束和支持的运行时承诺。
- 阅读仓库说明,并确定支持的包管理器版本、更新命令、锁文件策略和 CI 预期。
- 检查 Git 状态并隔离工作,避免覆盖现有用户更改,或将其误认为升级产物。
- 启动由本次运行维护的资源清单,记录每个已创建的绝对路径、工作树、进程 ID、缓存、报告和临时产物;切勿将预先存在的资源登记为清理目标。
- 明确请求范围:仅安全更新、常规补丁或次版本维护、指定的软件包、主版本更新、运行时迁移,或完整刷新。
- 编辑前记录安装或还原、构建、lint、类型检查、测试、冒烟测试和安全审计的基线。
- 记录已有故障、安全公告、弃用项、同级依赖冲突,以及不受支持的运行时组合。
2. 调研并规划批次
- 使用原生的过期检查和审计命令,盘点直接依赖和相关传递依赖的更新,不更改文件。
- 将移除项、安全修复、常规更新、主版本变更、构建工具变更,以及运行时或生态系统迁移分开处理。
- 查阅官方发行说明和迁移指南,了解 API 变更、配置变更、默认值、同级依赖约束、运行时支持和已移除的行为。
- 检查环境标记、额外依赖、可选/开发依赖组、同级依赖、目标框架和特定平台的软件包;如果项目承诺支持更广泛的环境矩阵,仅能在当前机器上解析依赖关系并不足够。
- 查阅官方安全公告,了解受影响的版本范围、利用条件、修复版本、解决方法,以及该依赖在本项目中是否可达。
- 搜索每项重要依赖的实际导入、符号、插件、脚本、配置、生成代码和运行时加载情况。
- 将未使用、重复、已弃用、已替代或在平台上多余的依赖分别列为候选移除项;必须有运行时和动态加载证据,且当移除超出请求的升级范围时,须获得用户明确批准。
- 根据实际兼容性关系图安排批次;包管理器/运行时、工具、基础库、框架、集成和边缘依赖只是调研指南,并非固定顺序。相互依赖的迁移应合并处理。
- 保持常规批次足够小,以便确定故障原因;只有兼容性矩阵要求时,才将框架系列、分析器、生成的客户端或约束紧密的同级依赖放在同一批次中。
- 当相互排斥的版本策略、运行时支持、许可、注册表策略或迁移范围会改变产品意图时,应暂停并征求用户指示。
3. 安全应用每个批次
- 使用原生包管理器,按照仓库预期的版本和标志更新清单文件与锁文件。
- 请求范围较小时,避免大范围重新解析;除非包管理器无法安全保留锁定依赖图,并说明不可避免的变更。
- 在安全风险需要时,检查安装脚本、注册表来源、校验和、包来源,以及意外新增的传递依赖包。
- 根据已记录的破坏性变更,更新所需的导入、API、类型、配置、构建脚本、插件、生成的客户端和应用代码。
- 仅当已接受的行为、先决条件、配置或命令发生变化时,才更新用户或运维文档。
- 立即检查差异,排查无关格式调整、被删除的约束、注册表偏移、换行符变动、生成的产物和意外降级。
- 检查已解析的依赖图,排查新出现的重复主版本、未满足或被静默忽略的对等依赖、发生变化的可选功能,以及会改变运行时行为的传递依赖替换。
- 不要屏蔽警告、禁用审计、跳过必需检查、强行固定不兼容的对等依赖,也不要在没有证据的情况下添加兼容性变通方案。
4. 验证并保留或回退
- 在足够干净的状态下运行安装或还原,证明锁文件可复现。
- 每个批次完成后,运行相关的构建、lint、类型、单元、集成、冒烟、打包、迁移和应用启动检查。
- 将受影响的运行时、目标框架、操作系统、架构和功能组合分类为必需或可选;只有每个必需项都有本地或可信 CI 证据时才保留该批次,如果必需覆盖没有可信的替代方案,则返回
BLOCKED。 - 测试通用测试可能未覆盖的已变更 API、插件、序列化器、构建输出和运行时路径。
- 如果更新的依赖可能对包大小、启动时间、产物或性能指标造成实质影响,则进行对比。
- 重新运行安全审计,并区分已修复、仍存在、新引入、不可达和无修复方案的安全公告。
- 只有在验证通过且预期行为仍受支持时,才保留该批次。
- 对于失败的批次,区分基线或环境故障与升级缺陷;修复范围明确的迁移错误并重新检查,或在不触碰用户工作内容的情况下回退整个批次。记录阻塞原因,并且只继续处理相互独立的安全批次。
- 在应用下一个批次前,将保留的依赖状态确立为基线。
- 将每个计划批次分类为
KEPT(已应用并通过验证)、REVERTED(已应用,但验证失败后已完全回退),或SKIPPED(因必需决策、兼容策略或独立先决条件尚未解决而有意未应用)。
5. 完成并报告
- 确认所有必需的仓库验证都覆盖最终保留状态。复用仍然有效的结果;运行缺失的检查,并重新运行因后续批次或未解决故障而失效的检查。
- 确认清单文件、锁文件、运行时版本固定项、CI、容器、文档和生成的元数据对最终版本保持一致。
- 仅清理本次运行创建的台账条目:确认绝对路径仍在获准的临时目录中,停止准确记录的进程 ID,保留有未提交更改或预先存在的工作树,并保留已计划在报告中列出的证据产物。
- 列出有意跳过的包,并注明确切的约束、风险、安全公告或迁移原因。
- 核对批次台账与最终版本、迁移编辑、安全公告、锁文件变动和残余风险是否一致。
- 仅当满足并验证了请求的更新范围时使用
UPDATED;当保留了安全的子集,但请求的工作或可选覆盖仍未完成时使用PARTIAL;当没有保留任何批次且已恢复基线时使用NO_CHANGE;当无法安全推进或无法完成必需验证时使用BLOCKED。
自检
- 返回前进行核对。 检查各项证据、需求覆盖情况、矛盾、范围、结论和适用的清理事项。更正报告或获准修改的内容。复用有效证据;不要自动重新扫描代码仓库或重跑已成功的命令。仅在存在相关变更、失败或未解决证据时重复检查。披露剩余缺口。
输出约定
按以下顺序使用用户的语言进行报告;保留全部五个字段,每项事实只陈述一次。结果较少时,每个字段可占一行;省略空表,不要复制链接的工件:
- 结果: 特定技能的结论及有证据支持的结果。
- 范围: 已审查/变更的范围、排除项、基线和重要假设。
- 证据: 以下特定技能字段;区分事实、推断和未经验证的声明。链接工件;适用时使用表格。
- 验证: 检查结果、不可用的证据,以及适用的清理事项/外部状态。
- 完成情况:
Checklist: X/Y complete;Incomplete: None,或列出每项UNPROVEN的原因、对结果的影响及准确的后续操作;剩余风险和待决事项。
特定技能证据: 管理器、工作区、运行时、请求的更新策略,以及既有失败/警示。按批次列出:软件包、版本、迁移、KEPT / REVERTED / SKIPPED 状态及验证情况。包括已修复/剩余/新增的警示、对等依赖项/运行时/注册表限制、锁文件变更、跳过软件包的原因、组合状态检查、由本次运行产生的清单/锁文件/差异,以及回滚/清理证据。