mcpField
F
frontend-review-deps

frontend-review-deps

github.com/mizchi测试与质量41647 次安装1 周前更新
代码仓库

关于 frontend-review-deps

用于审查前端依赖的新旧程度、漏洞风险和维护趋势的技能,按攻击路径指导 CVE 分级并提出迁移建议,且不修改项目源文件。

主要功能

  1. 01查找过时的软件包
  2. 02按攻击路径分级 CVE
  3. 03识别弃用或趋势下滑的库
  4. 04建议迁移方案和工作量
  5. 05生成依赖审查报告

适用场景

  1. 01发布前检查依赖健康状况
  2. 02评估 SPA 或 SSR 应用的运行时漏洞
  3. 03规划从弃用库迁移
  4. 04准备独立的依赖更新拉取请求

安装

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

$npx skills add https://github.com/mizchi/skills --skill frontend-review-deps

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

附带文件README.md

详细介绍

前端审查 — 依赖项

你正在审计一个前端项目的依赖健康状况。审查涵盖以下三个方面:

  1. 新鲜度 — 过时的包和破坏性更新流程
  2. CVE 分级 — 根据实际攻击向量评估漏洞,而不只是看 CVSS 分数
  3. 趋势监测 — 应迁移的已弃用、无人维护或已有替代方案的库

流程

  1. 并行运行:
    • scripts/audit-deps.sh --repo <client-repo>
    • scripts/audit-trend-watch.sh --repo <client-repo>
  2. 阅读 raw/deps.json 和 raw/trend-watch.json。
  3. 对每项 CVE 发现,先应用下方的攻击向量分级矩阵,再确定优先级。
  4. 对每项趋势监测发现(Tier 1/2/3),确认已安装的版本并评估迁移成本。

CVE 分级 — 攻击向量矩阵

不要仅依据 CVSS 分数进行判断。对于仅在浏览器运行的 SPA,即使是 CVSS 9.8 的 RCE,也不会对生产环境造成影响。

CVE 类型仅 devDep运行时(SPA)运行时(SSR/Edge)
RCE忽略忽略P0
原型污染忽略P1(检查输入路径)P0
ReDoS忽略P1(检查用户输入是否可达)P0
路径遍历忽略忽略P0
库导致的 XSS忽略P0(生成 HTML 的库)P0
SSRF忽略忽略P0
供应链(postinstall 恶意软件)CI P0CI P0P0

分级流程:

  1. 运行 pnpm audit --prod,从输出中排除 devDeps。
  2. 重点关注原型污染 / ReDoS / XSS——对于仅在浏览器运行的 SPA,其他类型风险较低。
  3. 对每项剩余发现,检查用户控制的输入是否能到达存在漏洞的代码路径。如果不能,将优先级降至 P2。
  4. 对于 SSR / Edge Functions,将 RCE / 路径遍历 / SSRF 视为 P0。
  5. 在 kpi/audit-triage.md 中记录每项被忽略的 CVE 及忽略原因。
# Runtime-only CVEs (excludes devDeps)
pnpm audit --prod --audit-level=moderate --json | jq '
  .vulnerabilities | to_entries[] |
  { name: .key, severity: .value.severity,
    via: [.value.via[] | select(type=="object") | .title] }'

# Prototype Pollution / ReDoS only
pnpm audit --prod --json 2>/dev/null | jq -r '
  .vulnerabilities | to_entries[] |
  .value.via[] | select(type=="object") |
  select(.title | test("prototype|pollution|redos|regex denial"; "i")) |
  "\(.severity) \(.title) in \(.name)"' | sort -u

趋势监测 — 库分级

将 package.json 与 data/trend-watch-config.json 进行交叉比对:

  • Tier 1(立即迁移):已弃用 / 无人维护 / 已有替代方案——没有合理理由继续使用。也包括迁移成本低且存在成熟替代方案的库,即使它们未被正式弃用(jest → vitest、axios → ky/fetch、cypress → Playwright)。
  • Tier 2(规划迁移):处于维护模式 / 满意度下降 / 与 RSC 不兼容。
  • Tier 3(持续关注):存在已到生命周期终止(EOL)的版本 / 满意度呈下降趋势。

对于每项 Tier 1 发现:提出具体的迁移路径并估算所需时间(小时/天)。 对于每项 Tier 2 发现:建议安排在未来 1–3 个月内迁移。 对于每项 Tier 3 发现:添加到持续监测列表。

库的选择 — 优先采用 Web 标准

在建议用新依赖替代之前,按以下顺序评估:

  1. Web Platform / ECMAScript 标准 API 能否满足需求?
用例避免使用改用
日期 / 时间moment、date-fns、dayjsTemporal(polyfill);简单场景使用 Date
数组 / 对象工具lodash、ramdaArray.prototype.{flatMap,findLast,groupBy}、Object.{entries,fromEntries,groupBy}、structuredClone()
HTTP 请求axios、requestfetch + AbortController
UUID 生成uuid、nanoidcrypto.randomUUID()
URL / 查询参数qs、query-stringURL、URLSearchParams
数字 / 日期格式化numeral.jsIntl.NumberFormat、Intl.DateTimeFormat
  1. 是否支持 Tree-shaking? 只有导入的内容才应进入打包产物。
  2. 是否在积极维护? 最近 6 个月内有发布版本。
  3. 打包体积影响是否小于 5 kb gzip? 使用 pnpm build 和打包分析器进行验证。

破坏性更新流程

  1. 提议作为独立 PR 提交——绝不与功能或重构工作合并。
  2. 阅读更新日志,了解已移除的 API;使用 grep / ast-grep 搜索代码库中的用法。
  3. 合并前要求 typecheck && lint && test:ci && e2e 全部通过。
  4. 如果存在 VRT 快照,升级后在 Linux 容器中重新生成。

输出

将以下内容写入 <client-repo>/.frontend-review/report/latest/md/deps-review.md:

  • 过时的软件包表格(名称、当前版本、最新版本、是否有破坏性变更)
  • CVE 发现项(经攻击向量分类后,包含优先级、软件包、类型、优先级理由)
  • 趋势观察发现项(按层级划分:Tier 1:立即迁移,Tier 2:规划,Tier 3:监控)
  • 忽略的 CVE及其理由(用于 kpi/audit-triage.md)
  • 建议的 PR:更新批次 + 迁移起点

范围边界

  • 不要评估 TypeScript / lint / 死代码 — 这属于 frontend-review-hygiene。
  • 不要运行 AI 渗透测试或检查 HTML 接收点 — 这属于 frontend-review-security。
  • 不要触碰客户端仓库中的源文件。

参考资料

  • 检查清单:02-dependencies.md、27-dependency-audit.md、28-trend-watch.md
  • 数据:data/trend-watch-config.json、data/trend-watch-history.json
  • 脚本:scripts/audit-deps.sh、scripts/audit-trend-watch.sh、scripts/fetch-trend-data.sh
  • 阶段:week-1-ci-baseline.md

评论

支持 Markdown