audit-dependency-versions
정보
이 스킬은 프로젝트의 의존성을 감사하여 오래된 버전, 보안 취약점, 호환성 위험을 확인합니다. 잠금 파일을 분석하고, 업그레이드 경로를 계획하며, 호환성이 깨지는 변경 사항을 평가합니다. 출시 전, 유지 관리 중, 또는 프로젝트를 인계받을 때 사용하여 의존성의 건강 상태와 보안을 보장하세요.
빠른 설치
Claude Code
추천npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/audit-dependency-versionsClaude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요
문서
審計依賴版本
審計項目依賴之版本陳舊度、已知安全漏洞與兼容性問題。此技能由 lock 文件盤點所有依賴,逐一對照最新版本,分類陳舊層級,標識安全疑慮,並產出帶有建議行動之優先級升級報告。
適用時機
- 發布前,確保依賴為最新且安全
- 定期維護(月度或季度依賴審查)
- 收到影響項目依賴之安全公告之後
- 項目升級至新語言版本之時(如 R 4.4 升至 4.5)
- 向 CRAN、npm 或 crates.io 提交包之前
- 承接他人項目,評估其依賴健康之時
輸入
- 必要:含依賴/lock 文件之項目根目錄
- 選擇性:若無法自動辨識,需指定生態類型(R、Node.js、Python、Rust)
- 選擇性:僅查安全模式之旗標(略過陳舊度,專注 CVE)
- 選擇性:豁免清單(已知可接受之舊版本依賴)
- 選擇性:兼容性目標日期(如「須支援 R 4.4.x」)
步驟
步驟一:盤點所有依賴
尋找並解析依賴文件,建立完整清單。
R 包:
# Direct dependencies from DESCRIPTION
grep -A 100 "^Imports:" DESCRIPTION | grep -B 100 "^[A-Z]" | head -50
grep -A 100 "^Suggests:" DESCRIPTION | grep -B 100 "^[A-Z]" | head -50
# Pinned versions from renv.lock
cat renv.lock | grep -A 3 '"Package"'
Node.js:
# Direct dependencies
cat package.json | grep -A 100 '"dependencies"' | grep -B 100 "}"
cat package.json | grep -A 100 '"devDependencies"' | grep -B 100 "}"
# Pinned versions from lock file
cat package-lock.json | grep '"version"' | head -20
Python:
# From requirements or pyproject
cat requirements.txt
cat pyproject.toml | grep -A 50 "dependencies"
# Pinned versions
cat requirements.lock 2>/dev/null || pip freeze
Rust:
# From Cargo.toml
grep -A 50 "\[dependencies\]" Cargo.toml
# Pinned versions
cat Cargo.lock | grep -A 2 "name ="
建立盤點表:
| Package | Pinned Version | Type | Ecosystem |
|---|---|---|---|
| dplyr | 1.1.4 | Import | R |
| testthat | 3.2.1 | Suggests | R |
| express | 4.18.2 | dependency | Node.js |
| pytest | 8.0.0 | dev | Python |
預期: 所有直接(及選配之傳遞)依賴之完整清單,帶固定版本。
失敗時: 若缺 lock 文件,項目存重現性問題。記此為一項發現,改由 manifest(DESCRIPTION、package.json)以宣告之版本約束取代固定版本進行盤點。
步驟二:查可用之最新版本
逐一依賴,判知其最新可用版本。
R:
# Check available versions
available.packages()[c("dplyr", "testthat"), "Version"]
# Or via CLI
Rscript -e 'cat(available.packages()["dplyr", "Version"])'
Node.js:
# Check outdated packages
npm outdated --json
# Or individual package
npm view express version
Python:
# Check outdated
pip list --outdated --format=json
# Or individual
pip index versions requests 2>/dev/null
Rust:
# Check outdated
cargo outdated
# Or individual
cargo search serde --limit 1
以最新版本更新清單:
| Package | Pinned | Latest | Gap |
|---|---|---|---|
| dplyr | 1.1.4 | 1.1.6 | patch |
| ggplot2 | 3.4.0 | 3.5.1 | minor |
| Rcpp | 1.0.10 | 1.0.14 | patch |
| shiny | 1.7.4 | 1.9.1 | minor |
預期: 每項依賴之最新版本已標明,落差幅度亦明(patch/minor/major)。
失敗時: 某包註冊源無法連線時,標該依賴為「無法查核」,餘者照舊。勿因單一無法觸達之源而阻塞整場審計。
步驟三:分類陳舊度
為每項依賴賦予陳舊層級:
| Level | Definition | Action |
|---|---|---|
| Current | At latest version or within latest patch | No action needed |
| Patch behind | Same major.minor, older patch | Low priority upgrade, usually safe |
| Minor behind | Same major, older minor | Medium priority, review changelog for new features |
| Major behind | Older major version | High priority, likely breaking changes in upgrade |
| EOL / Archived | Package no longer maintained | Critical: find replacement or fork |
產出陳舊度摘要:
### Staleness Summary
- **Current**: 12 packages (48%)
- **Patch behind**: 8 packages (32%)
- **Minor behind**: 3 packages (12%)
- **Major behind**: 1 package (4%)
- **EOL/Archived**: 1 package (4%)
**Overall health**: AMBER (major-behind and EOL packages present)
顏色分級:
- GREEN:所有包為最新或僅 patch 落後
- AMBER:存在 minor 落後或一項 major 落後
- RED:多項 major 落後或存在 EOL 包
預期: 每項依賴均具陳舊分類,並產出整體健康評級。
失敗時: 版本比較邏輯含混時(非 SemVer、日期型版本),保守歸為「minor 落後」,並註其非標準版本化。
步驟四:查安全漏洞
執行生態對應之安全審計工具:
R:
# No built-in audit tool; check manually
# Cross-reference with https://www.r-project.org/security.html
# Check GitHub advisories for each package
Node.js:
# Built-in audit
npm audit --json
# Severity levels: info, low, moderate, high, critical
npm audit --audit-level=moderate
Python:
# Using pip-audit
pip-audit --format=json
# Or safety
safety check --json
Rust:
# Using cargo-audit
cargo audit --json
記錄發現:
### Security Findings
| Package | Version | CVE | Severity | Fixed In | Description |
|---|---|---|---|---|---|
| express | 4.18.2 | CVE-2024-XXXX | High | 4.19.0 | Path traversal in static file serving |
| lodash | 4.17.20 | CVE-2021-23337 | Critical | 4.17.21 | Command injection via template |
**Security status**: RED (1 critical, 1 high)
預期: 安全漏洞已標明 CVE、嚴重度、受影響版本、修復版本。
失敗時: 該生態無審計工具時,逐一於 GitHub Security Advisories 手動檢索。記此審計為無工具下之盡力而為。
步驟五:規劃升級路徑
依風險與影響排升級優先:
### Upgrade Plan
#### Priority 1: Security Fixes (do immediately)
| Package | Current | Target | Risk | Notes |
|---|---|---|---|---|
| lodash | 4.17.20 | 4.17.21 | Low (patch) | Fixes CVE-2021-23337 |
| express | 4.18.2 | 4.19.0 | Low (minor) | Fixes CVE-2024-XXXX |
#### Priority 2: EOL Replacements (plan within 1 month)
| Package | Current | Replacement | Migration Effort |
|---|---|---|---|
| request | 2.88.2 | node-fetch 3.x | Medium (API change) |
#### Priority 3: Major Version Upgrades (plan for next release cycle)
| Package | Current | Target | Breaking Changes |
|---|---|---|---|
| webpack | 4.46.0 | 5.90.0 | Config format, plugin API |
#### Priority 4: Minor/Patch Updates (batch in maintenance window)
| Package | Current | Target | Notes |
|---|---|---|---|
| dplyr | 1.1.4 | 1.1.6 | Patch fixes only |
| ggplot2 | 3.4.0 | 3.5.1 | New geom functions added |
對每項 major 升級,查其 changelog 以標明已知破壞性變更。
預期: 升級計劃已分優先:安全優先,EOL 替換次之,major 升級再次,minor/patch 批次末位。
失敗時: 某依賴無清晰升級路徑(已棄養且無 fork)時,記錄風險並建議:(一)內建於本項目,(二)尋替代包,(三)接受風險並加監控。
步驟六:記錄兼容性風險
對每項規劃升級評估兼容性:
### Compatibility Assessment
#### express 4.18.2 -> 4.19.0
- **API changes**: None (patch-level fix)
- **Node.js requirement**: Same (>=14)
- **Test impact**: Run full test suite; expect zero failures
- **Confidence**: HIGH
#### webpack 4.46.0 -> 5.90.0
- **API changes**: Config file format changed, several plugins removed
- **Node.js requirement**: >=10.13 (unchanged)
- **Test impact**: Build configuration must be rewritten; all tests need re-run
- **Confidence**: LOW (requires dedicated migration effort)
- **Migration guide**: https://webpack.js.org/migrate/5/
將完整審計報告寫入 DEPENDENCY-AUDIT.md 或 DEPENDENCY-AUDIT-2026-02-17.md。
預期: 每項重大升級之兼容性風險已記錄。完整審計報告已寫入。
失敗時: 若不經測試無法評估兼容性,建議採分支式升級:建分支、套用升級、跑測試,合併前評估結果。
驗證
- 所有直接依賴已由 lock/manifest 盤點
- 每項依賴均查最新可用版本
- 陳舊層級已賦予(current/patch/minor/major/EOL)
- 整體健康評級已計算(GREEN/AMBER/RED)
- 已以生態對應工具執行安全審計
- 所有 CVE 已記嚴重度、受影響版本、修復版本
- 升級計劃已分優先:安全 > EOL > major > minor/patch
- 每項 major 升級之兼容性風險已評估
- 審計報告已寫入 DEPENDENCY-AUDIT.md
- 未留「無法查核」而無原因註記之依賴
常見陷阱
- 忽視傳遞依賴:項目或有 10 個直接依賴而 200 個傳遞依賴。安全漏洞常藏於傳遞依賴。用
npm ls或renv::dependencies()觀其全樹 - 一次升級全部:單次提交批量升級,無從定位何者引發回歸。宜分邏輯組升級(先安全、major 逐一、minor/patch 批次)
- 混淆「過時」與「不安全」:落後一主版本而無 CVE 之包,其風險低於存有關鍵漏洞之當前包。永遠優先安全於新鮮
- 不讀 changelog:不讀 changelog 而盲升主版本。依賴之破壞性變更即是你項目之破壞性變更
- 審計疲勞:跑審計而不處置發現。立政策:安全發現須於 1 個衝刺內處理,EOL 須於 1 個季度內處理
- 缺 lock 文件:無 lock 文件者,構建不可重現。若審計揭示 lock 缺失,此本身即是關鍵發現,須於版本升級前處置
- 混合系統上 R 二進位錯誤:於 WSL 或 Docker,
Rscript可能解析至跨平台包裝器而非原生 R。以which Rscript && Rscript --version查驗。宜用原生 R 二進位(如 Linux/WSL 之/usr/local/bin/Rscript)以保可靠。參 Setting Up Your Environment 關於 R 路徑配置
相關技能
apply-semantic-versioning— 依賴升級可能觸發版本提升manage-renv-dependencies— 以 renv 管理 R 專屬依賴security-audit-codebase— 更廣之安全審計,含依賴漏洞manage-changelog— 於 changelog 記錄依賴升級plan-release-cycle— 於發布時程內排程依賴升級
GitHub 저장소
연관 스킬
llamaguard
기타LlamaGuard는 폭력 및 혐오 발언 등 6가지 안전 범주에서 LLM 입력과 출력을 조정하기 위한 Meta의 70-80억 파라미터 모델입니다. 94-95% 정확도를 제공하며 vLLM, Hugging Face 또는 Amazon SageMaker를 사용해 배포할 수 있습니다. 이 기술을 사용하여 AI 애플리케이션에 콘텐츠 필터링 및 안전 가드레일을 손쉽게 통합하세요.
cost-optimization
기타이 Claude Skill은 리소스 적정화, 태깅 전략, 지출 분석을 통해 개발자들이 클라우드 비용을 최적화할 수 있도록 지원합니다. AWS, Azure, GCP에서 클라우드 비용을 절감하고 비용 거버넌스를 구현하기 위한 프레임워크를 제공합니다. 인프라 비용을 분석하거나, 리소스를 적정화하거나, 예산 제약을 충족해야 할 때 사용하세요.
quantizing-models-bitsandbytes
기타이 스킬은 bitsandbytes를 사용하여 LLM을 8비트 또는 4비트 정밀도로 양자화하며, 최소한의 정확도 손실로 50-75%의 메모리 감소를 달성합니다. 제한된 GPU 메모리에서 더 큰 모델을 실행하거나 추론을 가속화하는 데 이상적이며, INT8, NF4, FP4와 같은 형식을 지원합니다. 이 스킬은 HuggingFace Transformers와 통합되어 QLoRA 학습 및 8비트 옵티마이저를 가능하게 합니다.
dispatching-parallel-agents
기타이 Claude Skill은 3개 이상의 독립적인 문제를 동시에 조사하고 해결하기 위해 다중 에이전트를 배치합니다. 공유 상태나 의존성 없이 해결 가능한 무관련 장애 시나리오에 맞게 설계되었습니다. 핵심 기능은 병렬 문제 해결로, 각 독립 문제 영역마다 하나의 에이전트를 할당하여 효율성을 극대화합니다.
