关于 dependency-updater
面向多种语言项目的依赖管理技能,可识别项目类型,自动应用补丁和次版本更新,并在升级主版本前征求确认。
主要功能
- 01识别语言和包管理器
- 02检查过期的软件包
- 03自动应用补丁和次版本更新
- 04升级主版本前征求确认
- 05执行依赖安全审计
- 06诊断依赖冲突
适用场景
- 01更新项目依赖
- 02检查软件包漏洞
- 03排查版本冲突
- 04处理单体仓库的依赖更新
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ softaworks/ agent-toolkit --skill dependency-updater安装后在 Claude Code 中输入/dependency-updater确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdscripts/check-tool.shrun-taze.sh详细介绍
依赖更新器
适用于任何语言的智能依赖管理,支持自动检测和安全更新。
快速开始
update my dependencies
该技能会自动检测项目类型并处理其余工作。
触发条件
| 触发条件 | 示例 |
|---|---|
| 更新依赖 | “更新依赖”“更新 deps” |
| 检查过时依赖 | “检查过时的软件包” |
| 修复依赖问题 | “修复我的依赖问题” |
| 安全审计 | “审计依赖中的漏洞” |
| 诊断依赖 | “诊断依赖问题” |
支持的语言
| 语言 | 包文件 | 更新工具 | 审计工具 |
|---|---|---|---|
| Node.js | package.json | taze | npm audit |
| Python | requirements.txt, pyproject.toml | pip-review | safety, pip-audit |
| Go | go.mod | go get -u | govulncheck |
| Rust | Cargo.toml | cargo update | cargo audit |
| Ruby | Gemfile | bundle update | bundle audit |
| Java | pom.xml, build.gradle | mvn versions:* | mvn dependency:* |
| .NET | *.csproj | dotnet outdated | dotnet list package --vulnerable |
快速参考
| 更新类型 | 版本变更 | 操作 |
|---|---|---|
| 固定版本 | 不含 ^ 或 ~ | 跳过(有意锁定) |
| PATCH | x.y.z → x.y.Z | 自动应用 |
| MINOR | x.y.z → x.Y.0 | 自动应用 |
| MAJOR | x.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.json | Node.js | npm/yarn/pnpm |
requirements.txt | Python | pip |
pyproject.toml | Python | pip/poetry |
Pipfile | Python | pipenv |
go.mod | Go | go modules |
Cargo.toml | Rust | cargo |
Gemfile | Ruby | bundler |
pom.xml | Java | Maven |
build.gradle | Java/Kotlin | Gradle |
*.csproj | .NET | dotnet |
对于单体仓库,检测顺序很重要:
- 首先检查当前目录
- 然后检查工作区/单体仓库模式
- 如果适用,询问是否递归运行
深入了解:使用 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.3 | Minor + 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 |
相关工具
| 工具 | 语言 | 用途 |
|---|---|---|
| taze | Node.js | 智能依赖更新 |
| npm-check-updates | Node.js | taze 的替代工具 |
| pip-review | Python | 交互式 pip 更新 |
| cargo-edit | Rust | Cargo 依赖管理 |
| bundler-audit | Ruby | 安全审计 |
评论
支持 Markdown