SKILL.md
唯讀
名稱
dependency-updater
描述
適用於任何語言的智慧型相依性管理。自動偵測專案類型,安全更新自動套用,主要版本更新會提示使用者,並能診斷與修復相依性問題。
Dependency Updater
適用於任何語言的智慧型相依性管理,具備自動偵測與安全更新功能。
快速開始
update my dependencies
此技能會自動偵測您的專案類型並處理後續作業。
觸發方式
| 觸發詞 | 範例 |
|---|---|
| 更新相依性 | "更新相依性", "更新套件" |
| 檢查過期套件 | "檢查過期套件" |
| 修復相依性問題 | "修復我的相依性問題" |
| 安全性稽核 | "稽核相依性漏洞" |
| 診斷相依性 | "診斷相依性問題" |
支援的語言
| 語言 | 套件檔案 | 更新工具 | 稽核工具 |
|---|---|---|---|
| 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 |
逐一詢問使用者 |
工作流程
使用者請求
│
▼
┌─────────────────────────────────────────────────────┐
│ 步驟 1:偵測專案類型 │
│ • 掃描套件檔案(package.json, go.mod...) │
│ • 識別套件管理器 │
├─────────────────────────────────────────────────────┤
│ 步驟 2:檢查前置條件 │
│ • 確認所需工具已安裝 │
│ • 若缺少則建議安裝 │
├─────────────────────────────────────────────────────┤
│ 步驟 3:掃描更新 │
│ • 執行語言專屬的過期檢查 │
│ • 分類:MAJOR / MINOR / PATCH / 固定版本 │
├─────────────────────────────────────────────────────┤
│ 步驟 4:自動套用安全更新 │
│ • 自動套用 MINOR 和 PATCH │
│ • 回報已更新的內容 │
├─────────────────────────────────────────────────────┤
│ 步驟 5:提示 MAJOR 更新 │
│ • 對每個 MAJOR 更新詢問使用者 │
│ • 顯示目前 → 新版本 │
├─────────────────────────────────────────────────────┤
│ 步驟 6:套用已核准的 MAJOR │
│ • 僅更新已核准的套件 │
├─────────────────────────────────────────────────────┤
│ 步驟 7:最終確認 │
│ • 執行安裝指令 │
│ • 執行安全性稽核 │
└─────────────────────────────────────────────────────┘
各語言指令
Node.js (npm/yarn/pnpm)
# 檢查前置條件
scripts/check-tool.sh taze "npm install -g taze"
# 掃描更新
taze
# 套用 minor/patch
taze minor --write
# 套用特定 major
taze major --write --include pkg1,pkg2
# 支援 monorepo
taze -r # 遞迴
# 安全性
npm audit
npm audit fix
Python
# 檢查過期套件
pip list --outdated
# 全部更新(請小心)
pip-review --auto
# 更新特定套件
pip install --upgrade package-name
# 安全性
pip-audit
safety check
Go
# 檢查過期套件
go list -m -u all
# 全部更新
go get -u ./...
# 整理模組
go mod tidy
# 安全性
govulncheck ./...
Rust
# 檢查過期套件
cargo outdated
# 在 semver 範圍內更新
cargo update
# 安全性
cargo audit
Ruby
# 檢查過期套件
bundle outdated
# 全部更新
bundle update
# 更新特定套件
bundle update --conservative gem-name
# 安全性
bundle audit
Java (Maven)
# 檢查過期套件
mvn versions:display-dependency-updates
# 更新至最新版
mvn versions:use-latest-releases
# 安全性
mvn dependency:tree
mvn dependency-check:check
.NET
# 檢查過期套件
dotnet list package --outdated
# 更新特定套件
dotnet add package PackageName
# 安全性
dotnet list package --vulnerable
診斷模式
當相依性損壞時,執行診斷:
常見問題與修復
| 問題 | 症狀 | 修復 |
|---|---|---|
| 版本衝突 | "無法解析相依性樹" | 重新安裝,使用 overrides/resolutions |
| 同儕相依性 | "同儕相依性未滿足" | 安裝所需的同儕版本 |
| 安全性漏洞 | npm audit 顯示問題 |
npm audit fix 或手動更新 |
| 未使用的套件 | 套件包過大 | 執行 depcheck(Node)或類似工具 |
| 重複套件 | 安裝了多個版本 | 執行 npm dedupe 或類似工具 |
緊急修復
# Node.js - 徹底重置
rm -rf node_modules package-lock.json
npm cache clean --force
npm install
# Python - 清除虛擬環境
rm -rf venv
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Go - 重置模組
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
嚴重程度回應
| 嚴重程度 | 動作 |
|---|---|
| 重大 | 立即修復 |
| 高 | 24 小時內修復 |
| 中 | 一週內修復 |
| 低 | 下個版本修復 |
反模式
| 避免 | 原因 | 建議做法 |
|---|---|---|
| 更新固定版本 | 刻意鎖定 | 跳過它們 |
| 自動套用 MAJOR | 破壞性變更 | 詢問使用者 |
| 批次詢問 MAJOR | 失去上下文 | 逐一詢問 |
| 跳過鎖定檔案 | 無法重現建置 | 一律提交鎖定檔案 |
| 忽略安全性警報 | 漏洞風險 | 依嚴重程度處理 |
驗證檢查清單
更新後:
- [ ] 更新掃描無錯誤
- [ ] MINOR/PATCH 已自動套用
- [ ] MAJOR 更新已逐一詢問
- [ ] 固定版本未更動
- [ ] 鎖定檔案已更新
- [ ] 安裝指令已執行
- [ ] 安全性稽核通過(或已記錄問題)
<details>
<summary><strong>深入探討:專案偵測</strong></summary>
此技能透過掃描套件檔案自動偵測專案類型:
| 找到的檔案 | 語言 | 套件管理器 |
|---|---|---|
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 |
偵測順序對 monorepo 很重要:
- 先檢查目前目錄
- 再檢查 workspace/monorepo 模式
- 若適用,提供遞迴執行選項
</details>
<details>
<summary><strong>深入探討:Node.js 搭配 taze</strong></summary>
前置條件
# 全域安裝 taze(建議)
npm install -g taze
# 或使用 npx
npx taze
智慧更新流程
# 1. 掃描所有更新
taze
# 2. 套用安全更新(minor + patch)
taze minor --write
# 3. 對每個 major,詢問使用者:
# "將 @types/node 從 ^20.0.0 更新至 ^22.0.0?"
# 若是,加入核准清單
# 4. 套用已核准的 major
taze major --write --include approved-pkg1,approved-pkg2
# 5. 安裝
npm install # 或 pnpm install / yarn
自動核准清單
某些套件經常進行 major 更新但保持向下相容:
| 套件 | 原因 |
|---|---|
lucide-react |
圖示庫,major 更新為新增功能 |
@types/* |
型別定義,通常安全 |
</details>
<details>
<summary><strong>深入探討:版本策略</strong></summary>
語意化版本
MAJOR.MINOR.PATCH(例如 2.3.1)
MAJOR:破壞性變更 - 需要修改程式碼
MINOR:新功能 - 向下相容
PATCH:錯誤修正 - 向下相容
範圍指定符
| 指定符 | 意義 | 範例 |
|---|---|---|
^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", // 重要套件使用精確版本
"stable-lib": "~1.2.3", // 穩定套件僅接受 patch
"modern-lib": "^1.2.3" // 活躍套件接受 minor
}
}
</details>
<details>
<summary><strong>深入探討:衝突解決</strong></summary>
Node.js 衝突
診斷:
npm ls package-name # 查看相依性樹
npm explain package-name # 為何安裝
yarn why package-name # Yarn 對應指令
使用 overrides 解決:
// package.json
{
"overrides": {
"lodash": "^4.18.0"
}
}
使用 resolutions(Yarn)解決:
{
"resolutions": {
"lodash": "^4.18.0"
}
}
Python 衝突
診斷:
pip check
pipdeptree -p package-name
解決:
# 使用虛擬環境
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# 或使用 constraints
pip install -c constraints.txt -r requirements.txt
</details>
腳本參考
| 腳本 | 用途 |
|---|---|
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 | 安全性稽核 |




