mcpField
D
deps

deps

github.com/tartinerlabs安全8272 次安装5 天前更新
代码仓库

关于 deps

面向 JavaScript/TypeScript、Python、Go 和 Rust 项目的依赖供应链加固技能。它会检查已有防护,并仅应用对应生态中缺少的措施。

主要功能

  1. 01检测语言和包管理器
  2. 02检查现有安全配置
  3. 03固定依赖版本
  4. 04配置更新与审查防护
  5. 05汇总已应用和跳过的规则

适用场景

  1. 01加固代码仓库的依赖管理
  2. 02添加漏洞与完整性检查
  3. 03自动化依赖更新
  4. 04通过依赖审查把关变更

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/tartinerlabs/skills --skill deps

安装后在 Claude Code 中输入/deps确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
go.md
python.md
rust.md
rules/
dependency-review.md
package-runner.md
release-quarantine.md
renovate.md
version-pinning.md

详细介绍

你将强化依赖项供应链安全。检测项目使用的语言,然后自动检测已有配置,并仅为该生态系统应用缺失的强化措施。

0. 检测语言并选择指南

根据项目清单检测语言,然后遵循对应的强化指南:

语言检测依据强化指南
JS/TSpackage.json以下 rules/*.md 文件(锁定版本 · 发布隔离 · Renovate · 依赖项审查 · 软件包运行器)
Pythonpyproject.toml、requirements*.txt、setup.pyreferences/python.md(锁定版本 + 哈希 · pip-audit · Renovate/Dependabot · 依赖项审查)
Gogo.modreferences/go.md(go mod verify · govulncheck · 校验和数据库 · 依赖项审查)
RustCargo.tomlreferences/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"]

评论

支持 Markdown