关于 deps
Deps Skill 用于指导 Go、Node、Python、Rust 和 Ruby 项目的依赖审计、漏洞检查、许可证审查及更新。它规定各生态的检查方式、严重性分类、更新后的测试验证和报告流程。
主要功能
- 01检测支持的依赖生态
- 02审计漏洞与过期软件包
- 03审查依赖许可证
- 04按严重程度分类发现项
- 05更新依赖并执行测试检查
- 06生成依赖报告
适用场景
- 01检查项目的依赖健康状况
- 02确定已知漏洞的处理优先级
- 03审查许可证合规性
- 04更新软件包并验证测试
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ boshu2/ agentops --skill deps安装后在 Claude Code 中输入/deps确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/deps.featurelibrary-update-ratchet.mdscripts/validate.sh详细介绍
依赖项技能
快速参考:
/deps audit|/deps update [--major|--minor|--patch]|/deps vuln|/deps license
必须执行此工作流。不要只对其进行描述。
模式
| 模式 | 命令 | 用途 |
|---|---|---|
| 审计 | /deps audit | 全面的依赖项健康检查:漏洞、过期依赖项、许可证 |
| 更新 | /deps update [--major|--minor|--patch] | 更新依赖项并验证测试 |
| 漏洞 | /deps vuln | 专项漏洞扫描与修复 |
| 许可证 | /deps license | 许可证合规性审计 |
默认模式(直接使用 /deps):运行审计模式。
步骤 0:检测生态系统
扫描工作目录中的清单文件。多个生态系统可能共存。
| 清单 | 生态系统 | 锁定文件 |
|---|---|---|
go.mod | Go | go.sum |
package.json | Node | package-lock.json / yarn.lock / pnpm-lock.yaml |
pyproject.toml / requirements.txt | Python | requirements.txt / poetry.lock |
Cargo.toml | Rust | Cargo.lock |
Gemfile | Ruby | Gemfile.lock |
# Detect all ecosystems present
for f in go.mod package.json pyproject.toml requirements.txt Cargo.toml Gemfile; do
[[ -f "$f" ]] && echo "FOUND: $f"
done
如果未找到清单文件,则停止并报告:“未检测到受支持的依赖项清单。”
步骤 1:审计当前状态
运行适用于相应生态系统的命令。捕获所有输出以进行分类。
Go
go list -m -u all # List all modules, flag available updates
govulncheck ./... # Vulnerability scan against Go vuln DB
go mod tidy # Clean up unused deps (dry-run first)
Node
npm audit # Known vulnerabilities
npm outdated # Available updates (current vs wanted vs latest)
npx license-checker-webpack-plugin --out /dev/stdout 2>/dev/null || npx license-checker --json
Python
pip-audit # Vulnerability scan (install: pip install pip-audit)
pip list --outdated # Available updates
pip-licenses 2>/dev/null || echo "pip-licenses not installed"
Rust
cargo audit # Vulnerability scan (install: cargo install cargo-audit)
cargo outdated # Available updates (install: cargo install cargo-outdated)
cargo license 2>/dev/null || echo "cargo-license not installed"
Ruby
bundle audit check # Vulnerability scan (install: gem install bundler-audit)
bundle outdated # Available updates
步骤 2:对发现的问题分类
将每个发现的问题准确归入一个严重性级别。
| 严重性 | 标准 | 操作 |
|---|---|---|
| 严重 | 已知 CVE 且正在被积极利用,CVSS >= 9.0 | 立即更新,阻止发布 |
| 高 | 安全公告但无已知利用情况,CVSS 7.0-8.9,或主要版本落后且存在安全影响 | 在当前会话中更新 |
| 中 | 次要版本落后、已弃用的包、过时的传递依赖项 | 安排更新,尽可能批量处理 |
| 低 | 补丁级更新、外观版本号变更、信息性公告 | 适时更新 |
输出汇总表:
SEVERITY PACKAGE CURRENT AVAILABLE REASON
Critical example-lib 1.2.3 1.2.8 CVE-2025-XXXXX (RCE)
High some-framework 3.1.0 4.2.0 Security advisory SA-2025-YYY
Medium helper-pkg 2.0.1 2.3.0 3 minor versions behind
Low util-lib 1.0.0 1.0.1 Patch release
步骤 3:更新策略
根据请求的更新范围选择策略(如果未指定,则根据分类选择)。
如果请求更新整个库系列或依赖项范围,请在修改清单前阅读 references/library-update-ratchet.md。该文档定义了逐个包更新的循环、回滚证据和发行说明检查。
补丁更新(--patch 或低严重性)
- 将所有补丁更新批量处理。
- 批量更新后运行一次完整测试套件。
- 单次提交:
chore(deps): batch patch updates。
次要更新(--minor 或中严重性)
- 每次更新一个依赖项。
- 每次更新后运行测试。
- 单独提交:
chore(deps): update <pkg> to <version>。
主要更新(--major 或高/严重级别)
- 先调查不兼容变更(查看 CHANGELOG、迁移指南和发行说明)。
- 每次更新一个依赖项。
- 每次更新后运行完整测试套件。
- 单独提交,并在正文中注明不兼容变更:
chore(deps): update <pkg> to <version> Breaking: <brief description of what changed>
决策矩阵
| 标志 | 补丁 | 次要 | 主要 |
|---|---|---|---|
--patch | 是 | 否 | 否 |
--minor | 是 | 是 | 否 |
--major | 是 | 是 | 是 |
| (默认) | 是 | 是 | 否 |
步骤 4:执行更新(仅限更新模式)
对每个要更新的依赖项,严格遵循以下循环:
1. Record current state (version, lock file hash)
2. Update the dependency
3. Run tests: `go test ./...` / `npm test` / `pytest` / `cargo test`
4. If PASS:
- Stage changed manifest + lock file
- Commit: chore(deps): update <pkg> from <old> to <new>
5. If FAIL:
- Revert: restore manifest + lock file to pre-update state
- Document the incompatibility in the report
- Continue to next dependency
生态系统专用更新命令
| 生态系统 | 补丁/次要 | 主要 |
|---|---|---|
| Go | go get <pkg>@latest | go get <pkg>@v<major> |
| Node | npm update <pkg> | npm install <pkg>@latest |
| Python | pip install --upgrade <pkg> | pip install <pkg>~=<version> |
| Rust | cargo update -p <pkg> | 编辑 Cargo.toml,然后运行 cargo update |
| Ruby | bundle update <pkg> | 编辑 Gemfile,然后运行 bundle install |
步骤 5:输出报告
将报告写入 .agents/deps/。如有需要,请创建该目录。
mkdir -p .agents/deps
文件名格式:YYYY-MM-DD-deps-<mode>.md
报告模板
# Dependency Report - <mode> - <date>
## Ecosystem: <detected>
## Summary
- Total dependencies: <N>
- Outdated: <N>
- Vulnerable: <N>
- License issues: <N>
## Findings
### Critical
<table or "None">
### High
<table or "None">
### Medium
<table or "None">
### Low
<table or "None">
## Updates Applied
<list of commits or "Audit only - no updates applied">
## Failed Updates
<list with reasons or "None">
## License Compliance
<summary or "Not checked - use /deps license">
许可证合规(许可证模式)
兼容性矩阵
| 许可证 | 可用于专有项目 | Copyleft | 分发义务 |
|---|---|---|---|
| MIT | 是 | 否 | 包含许可证文本 |
| Apache-2.0 | 是 | 否 | 包含许可证和 NOTICE 文件 |
| BSD-2-Clause | 是 | 否 | 包含许可证文本 |
| BSD-3-Clause | 是 | 否 | 包含许可证文本,不得背书 |
| ISC | 是 | 否 | 包含许可证文本 |
| MPL-2.0 | 是(文件级) | 弱 | 修改后的 MPL 文件必须继续采用 MPL 许可证 |
| LGPL-2.1 | 有条件 | 弱 | 动态链接可以,静态链接需披露 |
| GPL-2.0 | 否 | 强 | 整个衍生作品必须采用 GPL 许可证 |
| GPL-3.0 | 否 | 强 | 整个衍生作品必须采用 GPL 许可证 |
| AGPL-3.0 | 否 | 强 | 网络使用会触发披露义务 |
| SSPL | 否 | 强 | 服务提供商必须开源整个技术栈 |
| Unlicense | 是 | 否 | 无义务 |
规则
- 在专有项目中,将所有 Copyleft 许可证(GPL、AGPL、SSPL)标记为严重。
- 将弱 Copyleft 许可证(MPL、LGPL)标记为中等,并审核使用方式。
- 将缺失的许可证标记为高,因为未知许可证按保留所有权利处理。
- 标记不同版本之间的许可证变更——更新可能会改变许可证。
检测项目类型
- 如果
LICENSE包含 GPL/AGPL:项目为 Copyleft,所有许可证均兼容。 - 如果
LICENSE包含 MIT/Apache/BSD,或项目为专有项目:标记 Copyleft 依赖项。 - 如果不存在
LICENSE文件:警告项目许可证未定义。
错误处理
| 情况 | 操作 |
|---|---|
未安装工具(govulncheck、pip-audit 等) | 报告缺失的工具及其安装命令,并继续使用可用工具 |
| 网络不可用 | 使用可用的缓存漏洞数据库,并注明数据是否过时 |
| 不存在测试套件 | 明确警告,跳过测试验证,并在报告中注明 |
| 清单解析错误 | 报告错误,并跳过该生态系统 |
另请参阅
skills/standards/SKILL.md-- 特定语言的约定skills/security/SKILL.md-- 更全面的安全扫描skills/vibe/SKILL.md-- 代码质量验证- references/library-update-ratchet.md
参考文档
- references/deps.feature — 可执行规范:扫描清单,审计漏洞、过时依赖和许可证,支持漏洞与许可证模式、多生态系统及 result.json(soc-qk4b)
评论
支持 Markdown