mcpField
D
dep-upgrade

dep-upgrade

github.com/rshade开发386 次安装2 周前更新
代码仓库

关于 dep-upgrade

dep-upgrade 是面向开发者的依赖维护 Skill,可检查过时及易受攻击的包,并按批准计划逐项升级,每次升级后运行测试,失败时回滚。

主要功能

  1. 01识别项目生态
  2. 02审计过时及易受攻击的包
  3. 03为升级项确定优先级
  4. 04修改前征求批准
  5. 05逐项测试,失败时回滚
  6. 06验证锁文件且不提交

适用场景

  1. 01检查多个项目生态的依赖状态
  2. 02应用已批准的安全和版本更新
  3. 03定位单个依赖引发的回归
  4. 04生成升级报告但不自动提交

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rshade/agent-skills --skill dep-upgrade

安装后在 Claude Code 中输入/dep-upgrade确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
priority-matrix.md
report-template.md
upgrade-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 步:逐个升级

按优先级顺序,对每个获批的包执行以下操作:

  1. 调研 — 查看变更日志或发行说明,了解破坏性变更。如果要跨越主版本,请阅读迁移指南。
  2. 升级 — 运行该生态系统对应的升级命令
  3. 更新锁文件 — go mod tidy、npm install 等
  4. 运行测试 — 执行项目的测试套件
  5. 如果测试通过 — 继续处理下一个包
  6. 如果测试失败 — 立即回滚此次升级:
# 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 中的模板呈现升级结果。包括:

  1. 成功升级 — 包、原版本、目标版本、测试状态
  2. 失败并已回滚 — 包、目标版本、失败原因
  3. 已跳过 — 包、原因(用户选择跳过,或破坏性变更需要手动迁移)
  4. 仍存在的漏洞 — 尚未解决的任何 CVE
  5. 锁文件状态 — 各生态系统的锁文件均已更新并验证

不要提交更改。由用户决定何时以及如何提交。建议使用以下提交消息:

deps: upgrade X packages (Y security fixes)

重要约束

  • 绝不自动提交 — 升级包会更改文件,但是否提交由用户决定
  • 绝不创建分支 — Git 操作留给用户处理
  • 一次升级一个 — 同时升级多个包,就无法判断是哪个升级导致测试失败
  • 失败时立即回滚 — 不要在依赖状态已损坏时继续操作
  • 报告所有情况 — 即使用户选择跳过某个包,也要在摘要中说明原因

评论

支持 Markdown