关于 deps
面向 JavaScript/TypeScript、Python、Go 和 Rust 项目的依赖供应链加固技能。它会检查已有防护,并仅应用对应生态中缺少的措施。
主要功能
- 01检测语言和包管理器
- 02检查现有安全配置
- 03固定依赖版本
- 04配置更新与审查防护
- 05汇总已应用和跳过的规则
适用场景
- 01加固代码仓库的依赖管理
- 02添加漏洞与完整性检查
- 03自动化依赖更新
- 04通过依赖审查把关变更
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ tartinerlabs/ skills --skill deps安装后在 Claude Code 中输入/deps确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/go.mdpython.mdrust.mdrules/dependency-review.mdpackage-runner.mdrelease-quarantine.mdrenovate.mdversion-pinning.md详细介绍
你将强化依赖项供应链安全。检测项目使用的语言,然后自动检测已有配置,并仅为该生态系统应用缺失的强化措施。
0. 检测语言并选择指南
根据项目清单检测语言,然后遵循对应的强化指南:
| 语言 | 检测依据 | 强化指南 |
|---|---|---|
| JS/TS | package.json | 以下 rules/*.md 文件(锁定版本 · 发布隔离 · Renovate · 依赖项审查 · 软件包运行器) |
| Python | pyproject.toml、requirements*.txt、setup.py | references/python.md(锁定版本 + 哈希 · pip-audit · Renovate/Dependabot · 依赖项审查) |
| Go | go.mod | references/go.md(go mod verify · govulncheck · 校验和数据库 · 依赖项审查) |
| Rust | Cargo.toml | references/rust.md(提交 Cargo.lock · cargo audit/cargo-deny · 来源策略 · 依赖项审查) |
只加载检测到的语言对应的指南。对于未列出的语言(例如 Ruby → bundler-audit),采用相同的做法——锁定版本、扫描漏洞、自动更新、为 PR 设置准入门槛——并注明尚未内置对该语言的一流支持。
本文件其余部分(步骤 1-4)是 JS/TS 路径。对于 Python、Go 或 Rust,请遵循引用的指南,然后使用步骤 4 中的通用摘要格式。
1. 检测软件包管理器
按以下顺序根据锁文件检测软件包管理器:nub.lock、pnpm-lock.yaml、bun.lock/bun.lockb、yarn.lock、package-lock.json。如果没有锁文件,请询问。
package.json 中的 devEngines.packageManager 或 packageManager 字段优先于任何锁文件。对于 pnpm,优先使用 devEngines.packageManager 而不是 packageManager:pnpm 11+ 和 pnpm/setup 操作会优先读取该字段,pnpm 也会将解析后的版本记录在 pnpm-lock.yaml 中。应锁定确切版本而非版本范围,以确保每台机器和每次 CI 运行都使用相同的 pnpm——在设置时解析当前最新版本(pnpm view pnpm version),并将其写为 { "name": "pnpm", "version": "<latest>", "onFail": "download" }。运行时也一样:在 devEngines.runtime 中声明 Node(pnpm 10.14+ 会下载它并将其校验和记录在锁文件中),而不是使用 .nvmrc 或 engines.node;在设置时解析当前 LTS 版本并锁定该版本——pnpm runtime set node lts(pnpm 11.4+)会写入此字段;请确认保存的 version 是确切版本,而非版本范围。声明 pnpm 时一并写入该字段;迁移旧版 "packageManager": "pnpm@…" 值值得考虑,但并非必需。只保留一种声明,不要两种都写——如果两个字段不一致,版本切换器会拒绝该项目。Yarn 仍需使用 packageManager,这是它唯一会读取的字段。Nub 以兼容模式运行在其他管理器的锁文件之上,因此,如果 nub.lock 与 pnpm-lock.yaml 并存,实际使用的是 nub——仅凭锁文件判断前,请先检查字段。
规则文件使用两个占位符。将 <pm> 替换为检测到的管理器,将 <pmx> 替换为该管理器的一次性软件包运行器——参见 rules/package-runner.md 中的映射表。
2. 检测现有配置
应用任何强化措施之前,先扫描现有配置:
renovate.json/.renovaterc/.renovaterc.json/package.json中的renovate键 → 已配置 Renovate- 包含
dependency-review的.github/workflows/*.{yml,yaml}→ 已配置依赖项审查 package.json中不带^或~前缀的依赖项版本 → 已锁定版本
已通过检查的规则请跳过。 在最后报告跳过了哪些规则。
3. 应用规则
阅读各规则文件,了解详细说明和配置模板。
| 规则 | 影响 | 文件 |
|---|---|---|
| 发布隔离 | 中 | rules/release-quarantine.md |
| 版本锁定 | 高 | rules/version-pinning.md |
| Renovate | 中 | rules/renovate.md |
| 依赖项审查 | 高 | rules/dependency-review.md |
| 软件包运行器 | 中 | rules/package-runner.md |
4. 输出摘要
处理完所有规则后,显示摘要:
## Supply Chain Hardening Complete
### Applied
- [list of rules applied with brief description]
### Skipped (already configured)
- [list of rules skipped with reason]
### Manual Steps Required
- [any post-setup steps, e.g. "Run `<pm> exec husky` to reinitialise git hooks"]