关于 dep-upgrade
dep-upgrade 是面向开发者的依赖维护 Skill,可检查过时及易受攻击的包,并按批准计划逐项升级,每次升级后运行测试,失败时回滚。
主要功能
- 01识别项目生态
- 02审计过时及易受攻击的包
- 03为升级项确定优先级
- 04修改前征求批准
- 05逐项测试,失败时回滚
- 06验证锁文件且不提交
适用场景
- 01检查多个项目生态的依赖状态
- 02应用已批准的安全和版本更新
- 03定位单个依赖引发的回归
- 04生成升级报告但不自动提交
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ rshade/ agent-skills --skill dep-upgrade安装后在 Claude Code 中输入/dep-upgrade确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/priority-matrix.mdreport-template.mdupgrade-commands.md详细介绍
安全升级依赖
系统地升级依赖,确保不造成任何破坏。检测项目生态系统,审计过时和存在漏洞的包,呈现按优先级排序的计划供用户批准,然后逐个执行升级,并在每次升级后验证测试。
核心原则: 一次升级一个。每次升级后都进行测试。失败时回滚。绝不自动提交。
前置条件检查
通过扫描包管理器文件来检测项目生态系统:
ls go.mod package.json pyproject.toml Cargo.toml *.csproj 2>/dev/null
如果未找到包管理器文件,请告知用户并停止。支持混合项目(例如 Go 后端 + Node 前端)——分别审计和升级每个生态系统。
第 1 步:审计依赖
列出过时的包,并为每个检测到的生态系统运行漏洞扫描器。
Go:
go list -u -m all 2>/dev/null | grep '\['
govulncheck ./... 2>/dev/null
Node.js:
npm outdated 2>/dev/null
npm audit 2>/dev/null
Python:
pip list --outdated 2>/dev/null
pip-audit 2>/dev/null
Rust:
cargo outdated 2>/dev/null
cargo audit 2>/dev/null
.NET:
dotnet list package --outdated 2>/dev/null
dotnet list package --vulnerable 2>/dev/null
各生态系统的详细命令请参阅
references/upgrade-commands.md。
如果未安装漏洞扫描器,请在报告中注明,但仍要继续列出过时的包。
第 2 步:分类并确定优先级
为每个过时的包分配优先级:
- CRITICAL — 已知 CVE 或安全公告
- HIGH — 落后一个主版本,或依赖已停止支持
- MEDIUM — 落后一个次版本
- LOW — 仅落后一个补丁版本
有关详细的优先级判断依据和破坏性变更评估,请参阅
references/priority-matrix.md。
第 3 步:呈现升级计划
在进行任何升级之前,先向用户呈现按优先级排序的列表。使用
references/report-template.md 中的计划格式。
Dependency Upgrade Plan
Ecosystem: Go
Outdated: 5 packages
Vulnerable: 1 package
| # | Package | Current | Target | Priority |
|---|-------------------|---------|--------|----------|
| 1 | example/vuln-pkg | v1.2.0 | v1.2.5 | CRITICAL |
| 2 | example/old-pkg | v2.0.0 | v4.1.0 | HIGH |
| 3 | example/minor-pkg | v3.1.0 | v3.4.0 | MEDIUM |
Proceed with upgrades?
继续操作前等待用户批准。 用户可以选择全部升级、选择特定包,或跳过。
第 4 步:逐个升级
按优先级顺序,对每个获批的包执行以下操作:
- 调研 — 查看变更日志或发行说明,了解破坏性变更。如果要跨越主版本,请阅读迁移指南。
- 升级 — 运行该生态系统对应的升级命令
- 更新锁文件 —
go mod tidy、npm install等 - 运行测试 — 执行项目的测试套件
- 如果测试通过 — 继续处理下一个包
- 如果测试失败 — 立即回滚此次升级:
# Rollback: restore dependency files from git
git checkout -- <dependency-file> <lockfile>
报告失败情况(包、目标版本、测试错误),然后继续处理其余包。
生态系统对应的升级和回滚命令请参阅
references/upgrade-commands.md。
第 5 步:验证锁文件
所有升级完成后,验证锁文件的完整性:
# Go
go mod verify
# Node
npm ci --dry-run
# Rust
cargo build --dry-run
确认锁文件已更新,且与依赖清单一致。
第 6 步:呈现摘要
使用
references/report-template.md 中的模板呈现升级结果。包括:
- 成功升级 — 包、原版本、目标版本、测试状态
- 失败并已回滚 — 包、目标版本、失败原因
- 已跳过 — 包、原因(用户选择跳过,或破坏性变更需要手动迁移)
- 仍存在的漏洞 — 尚未解决的任何 CVE
- 锁文件状态 — 各生态系统的锁文件均已更新并验证
不要提交更改。由用户决定何时以及如何提交。建议使用以下提交消息:
deps: upgrade X packages (Y security fixes)
重要约束
- 绝不自动提交 — 升级包会更改文件,但是否提交由用户决定
- 绝不创建分支 — Git 操作留给用户处理
- 一次升级一个 — 同时升级多个包,就无法判断是哪个升级导致测试失败
- 失败时立即回滚 — 不要在依赖状态已损坏时继续操作
- 报告所有情况 — 即使用户选择跳过某个包,也要在摘要中说明原因