mcpField
D
dependency-updater

dependency-updater

github.com/softaworks开发2.6k4.0k 次安装34 周前更新
代码仓库

关于 dependency-updater

面向多种语言项目的依赖管理技能,可识别项目类型,自动应用补丁和次版本更新,并在升级主版本前征求确认。

主要功能

  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/softaworks/agent-toolkit --skill dependency-updater

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

包含的文件

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

README.md
scripts/
check-tool.sh
run-taze.sh

详细介绍

依赖更新器

适用于任何语言的智能依赖管理,支持自动检测和安全更新。


快速开始

update my dependencies

该技能会自动检测项目类型并处理其余工作。


触发条件

触发条件示例
更新依赖“更新依赖”“更新 deps”
检查过时依赖“检查过时的软件包”
修复依赖问题“修复我的依赖问题”
安全审计“审计依赖中的漏洞”
诊断依赖“诊断依赖问题”

支持的语言

语言包文件更新工具审计工具
Node.jspackage.jsontazenpm audit
Pythonrequirements.txt, pyproject.tomlpip-reviewsafety, pip-audit
Gogo.modgo get -ugovulncheck
RustCargo.tomlcargo updatecargo audit
RubyGemfilebundle updatebundle audit
Javapom.xml, build.gradlemvn versions:*mvn dependency:*
.NET*.csprojdotnet outdateddotnet list package --vulnerable

快速参考

更新类型版本变更操作
固定版本不含 ^ 或 ~跳过(有意锁定)
PATCHx.y.z → x.y.Z自动应用
MINORx.y.z → x.Y.0自动应用
MAJORx.y.z → X.0.0逐项询问用户

工作流

User Request
    │
    ▼
┌─────────────────────────────────────────────────────┐
│ Step 1: DETECT PROJECT TYPE                         │
│ • Scan for package files (package.json, go.mod...) │
│ • Identify package manager                          │
├─────────────────────────────────────────────────────┤
│ Step 2: CHECK PREREQUISITES                         │
│ • Verify required tools are installed               │
│ • Suggest installation if missing                   │
├─────────────────────────────────────────────────────┤
│ Step 3: SCAN FOR UPDATES                            │
│ • Run language-specific outdated check              │
│ • Categorize: MAJOR / MINOR / PATCH / Fixed         │
├─────────────────────────────────────────────────────┤
│ Step 4: AUTO-APPLY SAFE UPDATES                     │
│ • Apply MINOR and PATCH automatically               │
│ • Report what was updated                           │
├─────────────────────────────────────────────────────┤
│ Step 5: PROMPT FOR MAJOR UPDATES                    │
│ • AskUserQuestion for each MAJOR update             │
│ • Show current → new version                        │
├─────────────────────────────────────────────────────┤
│ Step 6: APPLY APPROVED MAJORS                       │
│ • Update only approved packages                     │
├─────────────────────────────────────────────────────┤
│ Step 7: FINALIZE                                    │
│ • Run install command                               │
│ • Run security audit                                │
└─────────────────────────────────────────────────────┘

各语言命令

Node.js (npm/yarn/pnpm)
# Check prerequisites
scripts/check-tool.sh taze "npm install -g taze"

# Scan for updates
taze

# Apply minor/patch
taze minor --write

# Apply specific majors
taze major --write --include pkg1,pkg2

# Monorepo support
taze -r  # recursive

# Security
npm audit
npm audit fix
Python
# Check outdated
pip list --outdated

# Update all (careful!)
pip-review --auto

# Update specific
pip install --upgrade package-name

# Security
pip-audit
safety check
Go
# Check outdated
go list -m -u all

# Update all
go get -u ./...

# Tidy up
go mod tidy

# Security
govulncheck ./...
Rust
# Check outdated
cargo outdated

# Update within semver
cargo update

# Security
cargo audit
Ruby
# Check outdated
bundle outdated

# Update all
bundle update

# Update specific
bundle update --conservative gem-name

# Security
bundle audit
Java (Maven)
# Check outdated
mvn versions:display-dependency-updates

# Update to latest
mvn versions:use-latest-releases

# Security
mvn dependency:tree
mvn dependency-check:check
.NET
# Check outdated
dotnet list package --outdated

# Update specific
dotnet add package PackageName

# Security
dotnet list package --vulnerable

诊断模式

依赖出现问题时,运行诊断:

常见问题及修复方法
问题症状修复方法
版本冲突“无法解析依赖树”清理后重新安装,使用 overrides/resolutions
对等依赖“未满足对等依赖”安装所需的对等版本
安全漏洞npm audit 显示问题npm audit fix 或手动更新
未使用的依赖打包文件臃肿运行 depcheck(Node)或同类工具
重复依赖安装了多个版本运行 npm dedupe 或同类工具
紧急修复
# Node.js - Nuclear reset
rm -rf node_modules package-lock.json
npm cache clean --force
npm install

# Python - Clean virtualenv
rm -rf venv
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# Go - Reset modules
rm go.sum
go mod tidy

安全审计

为任何项目运行安全检查:

# Node.js
npm audit
npm audit --json | jq '.metadata.vulnerabilities'

# Python
pip-audit
safety check

# Go
govulncheck ./...

# Rust
cargo audit

# Ruby
bundle audit

# .NET
dotnet list package --vulnerable
严重性响应
严重性操作
严重立即修复
高在 24h 内修复
中等在 1 周内修复
低在下一个版本中修复

反模式

避免原因应采取的做法
更新固定版本有意锁定跳过这些版本
自动应用 MAJOR 更新会造成破坏性变更询问用户
批量询问 MAJOR 更新会丢失上下文逐项询问
跳过锁文件构建无法复现始终提交锁文件
忽略安全警报存在漏洞按严重性处理

验证清单

更新后:

  • 扫描更新时未发生错误
  • 已自动应用 MINOR/PATCH 更新
  • 已逐个提示 MAJOR 更新
  • 固定版本未更改
  • 已更新锁定文件
  • 已运行安装命令
  • 安全审计已通过(或已记录问题)

深入了解:项目检测

该技能通过扫描包文件自动检测项目类型:

找到的文件语言包管理器
package.jsonNode.jsnpm/yarn/pnpm
requirements.txtPythonpip
pyproject.tomlPythonpip/poetry
PipfilePythonpipenv
go.modGogo modules
Cargo.tomlRustcargo
GemfileRubybundler
pom.xmlJavaMaven
build.gradleJava/KotlinGradle
*.csproj.NETdotnet

对于单体仓库,检测顺序很重要:

  1. 首先检查当前目录
  2. 然后检查工作区/单体仓库模式
  3. 如果适用,询问是否递归运行
深入了解:使用 taze 的 Node.js
前置条件
# Install taze globally (recommended)
npm install -g taze

# Or use npx
npx taze
智能更新流程
# 1. Scan all updates
taze

# 2. Apply safe updates (minor + patch)
taze minor --write

# 3. For each major, prompt user:
#    "Update @types/node from ^20.0.0 to ^22.0.0?"
#    If yes, add to approved list

# 4. Apply approved majors
taze major --write --include approved-pkg1,approved-pkg2

# 5. Install
npm install  # or pnpm install / yarn
自动批准列表

某些包经常发布 MAJOR 更新,但保持向后兼容:

包原因
lucide-react图标库,MAJOR 更新仅添加内容
@types/*类型定义,通常安全
深入了解:版本策略
语义化版本控制
MAJOR.MINOR.PATCH (e.g., 2.3.1)

MAJOR: Breaking changes - requires code changes
MINOR: New features - backward compatible
PATCH: Bug fixes - backward compatible
版本范围说明符
说明符含义示例
^1.2.3Minor + Patch 可更新>=1.2.3 <2.0.0
~1.2.3仅 Patch 可更新>=1.2.3 <1.3.0
1.2.3精确版本(固定)仅限 1.2.3
>=1.2.3至少为此版本任意 >=1.2.3
*任意版本最新版本(危险)
推荐策略
{
  "dependencies": {
    "critical-lib": "1.2.3",      // Exact for critical
    "stable-lib": "~1.2.3",       // Patch only for stable
    "modern-lib": "^1.2.3"        // Minor OK for active
  }
}
深入了解:冲突解决
Node.js 冲突

诊断:

npm ls package-name      # See dependency tree
npm explain package-name # Why installed
yarn why package-name    # Yarn equivalent

使用 overrides 解决:

// package.json
{
  "overrides": {
    "lodash": "^4.18.0"
  }
}

使用 resolutions 解决(Yarn):

{
  "resolutions": {
    "lodash": "^4.18.0"
  }
}
Python 冲突

诊断:

pip check
pipdeptree -p package-name

解决:

# Use virtual environment
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# Or use constraints
pip install -c constraints.txt -r requirements.txt

脚本参考

脚本用途
scripts/check-tool.sh验证工具是否已安装
scripts/run-taze.sh使用适当的标志运行 taze

相关工具

工具语言用途
tazeNode.js智能依赖更新
npm-check-updatesNode.jstaze 的替代工具
pip-reviewPython交互式 pip 更新
cargo-editRustCargo 依赖管理
bundler-auditRuby安全审计

评论

支持 Markdown