开发与工程

Node Modules Inspector 依赖审计技能

检查项目已安装的 node_modules,一键找出重复包、占用磁盘最大的包以及可升级的过期依赖,适合依赖审计场景。

67/ 100
推荐

整体可靠,存在已披露的局限;按说明试用并保留回滚路径。

查看评分依据 ↓
可直接使用于
Codex · Claude Code
Star 数
★ 3k
最近更新
1 个月前
License
MIT
node-modulesdependency-auditnpmpnpm
+4bunmcp-serverpublintcli

这个 Skill 能做什么,适合哪些场景?

node-modules-inspector 是 Anthony Fu 开发的 CLI 与 MCP 服务器,用于分析当前项目实际安装的 node_modules。它提供三份结构化报告:多版本重复安装的包、按安装体积排序的包、以及按消费者/作者分组的依赖升级机会与 publint 问题。基础分析完全基于本地磁盘,不需要访问 npm registry(仅 maintainers 报告会按配置补充 npm 元数据)。支持 pnpm、npm 和 bun 项目,既可通过 npx 命令行运行,也可作为 MCP stdio 服务器供 AI 代理调用同名三份报告。

  • 读取项目实际安装的 node_modules 依赖树(默认遍历深度 8)
  • 生成 duplicates 报告:列出安装了多个版本的包,按版本数降序排列
  • 生成 sizes 报告:按磁盘占用排序列出包,并按 js/dts/ 等类别细分字节数
  • 生成 maintainers 报告:找出旧依赖声明可被更高已安装版本取代的机会,及 publint 错误/警告/建议
  • 以 -- 输出管道安全的 JSON,或通过 MCP 暴露 nmi:report-duplicates、nmi:report-sizes、nmi:report-maintainers 三个工具
  • 首次运行后把 npm 元数据缓存到磁盘,后续运行显著加快
适合
  • 前端/Node 开发者在瘦身 monorepo 时,想知道 node_modules 里哪些包占用磁盘最多
  • 维护 pnpm 项目的工程师在执行 `pnpm dedupe` 前,先确认哪些包被重复安装了多个版本
  • 库作者想检查依赖方是否还在用旧的依赖声明范围,以及迁移进度(migrationRatio)
  • 团队想批量发现依赖树中所有 publint 打包规范问题
  • 使用 Claude Code 等 MCP 客户端的开发者,希望在一次会话中多次查询依赖结构并复用缓存的依赖树
  • CI 中想生成静态分析产物(`build` 子命令输出 SPA 到 dist/__node-modules-inspector/)
不适合
  • 仅关于 registry 的查询(如某包的最新版本/元数据)——源文档明确建议改用 `fast-npm-meta`
  • 单个包的打包体积(bundle-size)分析——应使用打包器专用工具
  • 安全漏洞审计——应使用 `npm audit` 或 `osv-scanner`
  • 不支持 pnpm/npm/bun 之外的其他包管理器项目

如何安装这个 Skill?

使用前请注意
  • 未执行验证:所有报告输出形状仅为文档声明,使用前应先在测试项目中实际运行 report -- 核对。
  • 技能依赖通过 npx 运行第三方 npm 包,供应链完整性取决于 npm 分发;发布者身份未经 FollowSkills 验证。
  • maintainers 报告会抓取 npm 元数据并缓存到用户目录,中国网络环境下可能不可达或变慢;publint 需在配置中显式开启。
  • 文档为英文且未声明中文环境适配;在线版本 node-modules.dev 依赖 WebContainer,可能在部分网络不可用。
开始前你需要
Agent 需要具备
  • Shell / 命令行
  • 本地文件系统
  • MCP Server
需要预先安装
  • Node.js
  • pnpm/npm/bun lockfile with installed node_modules

无需单独安装,通过 npx 直接运行即可;在支持 skills-npm 的项目中,技能会在 pnpm install 后自动符号链接到代理技能目录。

Claude Code / 任意 MCP 客户端

npx node-modules-inspector mcp

命令行直接使用

npx node-modules-inspector report duplicates --

如何使用这个 Skill?

试试这样说

安装后,把下面任意一句发给 Agent 即可触发:

  • 审计一下我的依赖,找出被重复安装多个版本的包
  • node_modules 里哪些包占用磁盘空间最多?列出前 20 名
  • 哪些依赖有过期的版本声明,其他使用者大多已经迁移了?
  • 列出我的依赖里所有的 publint 问题

技能通过自然语言触发(如"审计依赖""找出重复包")。代理可运行 CLI 报告命令:

npx node-modules-inspector report duplicates --
npx node-modules-inspector report sizes -- --limit 20
npx node-modules-inspector report maintainers -- --sort migration

或在 MCP 模式下启动服务器并调用 node-modules-inspector:nmi:report-duplicates 等工具。所有报告共享 --root <dir>、--config <file>、--depth <n>、-- 选项;duplicates 支持 --min-versions;sizes 默认排除 workspace 包(用 --include-workspace 包含);maintainers 支持 --author、--no-publint、--no-latest-only。publint 结果需在 node-modules-inspector.config.ts 中设置 publint: true。多次查询建议用 MCP 模式(依赖树只读一次并缓存);需要 shell 管道时用 CLI --。

这个 Skill 有哪些优点和局限?

优点
  • 三份报告共享同一分析管道,CLI 与 MCP 输出完全一致,且 `--` 管道安全(日志走 stderr)
  • 基础分析基于本地 node_modules,不需要联网访问 registry
  • 支持 pnpm、npm、bun,并理解 pnpm catalog 引用
  • 首次运行后缓存 npm 元数据,后续运行更快
局限
  • 仅支持 pnpm、npm、bun,对 yarn 等其他包管理器无支持(依赖社区贡献)
  • publint 发现需要手动在配置中开启 `publint: true`,否则 maintainers 报告可能为空
  • monorepo 全仓分析可能较慢,需用 `--root packages/<name>` 定向加速
  • MCP 模式需要客户端支持 stdio MCP 服务器配置

这个 Skill 与同类方案有什么区别?

与相关 Skills 并排比较;分数均按同一 FSRS 标准得出。

Skill FS 评分 Star 数 最近更新 License
Node Modules Inspector 依赖审计技能 本页 67 · 推荐 ★ 3k 1 个月前 MIT
Engram 持久记忆协议 68 · 推荐 ★ 7.2k 11 天前 MIT
Vexor 语义代码搜索 60 · 推荐 ★ 244 23 天前 MIT
Engram 架构护栏 50 · 谨慎使用 ★ 7.2k 11 天前 MIT
OfficeCLI 技能 38 · 不推荐 ★ 32k 13 天前 Apache-2.0

源文档提到本项目深受 npmgraph 启发,并明确划分了边界:registry 元数据查询用 fast-npm-meta,安全审计用 npm audit/osv-scanner,单包打包体积分析用打包器工具——本技能专注本地已安装 node_modules 的结构化审计。

FollowSkills 如何评估这个 Skill?

FollowSkills 评估 · FSRS-2.0
推荐
67/ 100 五分制 3.4 / 5
上游仓库在本次评估后已有新提交;当前评分仍对应所示审查版本,可能尚未覆盖最新改动。
1信任安全20 / 25 · 4.0/5

SKILL.md 描述只读分析本地 node_modules,无网络注册表写入、无凭证访问、无删除操作;npm 元数据抓取被 config 门控并明确披露,缓存写入 ~/.node-modules-inspector 也已说明。扣分:依赖经 npx 从 npm 分发且发布者身份未经注册表验证,技能本身未声明确认/回滚机制。

2可靠稳定12 / 20 · 3.0/5

文档内部自洽(CLI/MCP 接口一致、JSON 输出形状明确、stderr 分流保证管道安全),失败模式章节给出三种异常的可解释反馈;仓库含 vitest 测试(bun 依赖列举 fixtures、模块类型快照)与跨平台 CI。扣分:静态审查未执行,report 子命令输出未经复现,测试未直接覆盖 report/mcp 表面。

3适用触发12 / 15 · 4.0/5

触发词、非适用边界(明确排除 registry-only、bundle 分析、安全审计)写得非常清晰,支持 pnpm/npm/bun。扣分:文档仅英文,无中文支持声明;未验证中国网络环境下 npx/npm 依赖获取的可达性,maintainers 报告依赖 npm 元数据抓取可能受网络影响。

4规范维护12 / 15 · 4.0/5

分层良好:frontmatter 摘要→表格→逐报告细节→MCP→失败模式→Web UI 递进披露;MIT 许可明确、版本 2.4.4、活跃 CI、skill 经 prepack 打包并有清晰更新路径。扣分:无 changelog 证据,部分配置(publint 实验性、config 细节)需读者自行查 jsdoc。

5有效结果7 / 15 · 2.3/5

三个报告目标明确、输出 JSON 形状与选项文档完整,相较手工检查 node_modules 有明显边际价值,并给出 dedupe 等后续动作指引。扣分:静态审查无法验证输出可直接使用,效果声明未被执行证据佐证,受静态上限约束。

6证据核验4 / 10 · 2.0/5

仓库提供可审计一手材料:MIT 许可、CI 工作流、针对核心管道(依赖列举、模块类型)的提交测试与 fixtures。扣分:测试未覆盖技能关键路径(report CLI/MCP 工具输出),静态审查未能独立复现,多源交叉验证有限,故不超过静态上限。

1 2 3 4 5 6

点击维度查看打分理由

评估于 2026年9月9日 审查版本 f5d3d6f458bf 评估证据[1][2][3][4][5][6][7][8][9]

证据充分度:低 — 主要依赖静态检查、作者材料或有限演示;适合发现线索,不适合做高风险决策。

查看完整评分方法 →

常见问题

需要联网吗?
基本报告不需要——分析基于磁盘上的 node_modules。只有 maintainers 报告会按配置获取 npm 元数据来丰富作者信息。
duplicates 结果为空是什么意思?
说明所有依赖已去重,这是正常状态;无需修复,除非用户想验证 dedupe 效果。
maintainers 报告为空怎么回事?
通常意味着没有依赖升级机会,且配置中未设置 `publint: true`。若期望 publint 输出,请在 node-modules-inspector.config.ts 中开启。
大型 monorepo 运行慢怎么办?
用 `--root packages/<name>` 只分析单个 workspace 包会比分析整个仓库快得多。

相关 Skills