用途
该技能用于在 Expo 应用中按一份书面策略管理 npm 依赖,覆盖添加、升级和移除包。它把依赖事实集中记录在应用的 contracts/dependency-policy.json 中,由该技能初始化该文件、规划每次变更,并据此校验仓库。目标是让每个包都处于正确版本和说明符、位于正确位置、足够旧、未被弃用、经过审查、允许发布,并且只安装一次。
主要能力
- 维护一份书面策略:contracts/dependency-policy.json 保存版本表(版本、说明符、位置、原因)、保留的大版本、禁止添加项、禁用项和许可证策略,种子来自 templates/contracts/dependency-policy.json(规范技术栈验证于 2026-10-03,Expo SDK 57)。策略行与 package.json、package-lock.json 在同一提交中变更。
- 规划依赖变更:通过 scripts/plan-dependency.mjs 生成计划,支持 --online、--remove、--peer-of、--npm-view 等参数。计划中的 FAIL 行(禁用、禁止添加、保留、不在表中、版本不同、过新、已弃用、许可证)意味着停止。
- 校验仓库:通过 scripts/check-deps-policy.mjs 检查策略,修复所有 FAIL 行直到 RESULT: PASS;并运行 npx expo install --check、npx expo-doctor、npm run check:fast、npm run check:unused 等。
- 供应链与许可证审计:审查安装脚本、检查许可证、审计发布包而非锁文件,并手动阅读原生模块带来的原生 SDK。
使用方式
- 命名任务:添加、升级、移除、月度检查、带日期例外或依赖门禁失败。
- 若尚无 contracts/dependency-policy.json,复制模板并删除应用不会使用的行;若无 .npmrc,复制模板。
- 阅读包的策略行及对应参考文档。
- 规划:node ${CLAUDE_SKILL_DIR}/scripts/plan-dependency.mjs <pkg>[@<version>] . --online。
- 安装前审查:若计划打印 review first step,阅读该脚本并把其固定键写入根 allowScripts。
- 严格按打印的安装步骤顺序执行,然后确认 npm approve-scripts --allow-scripts-pending 输出无未审查脚本。
- 在同一变更中编写使用该包的代码。
- 运行 npx expo install --check、npx expo-doctor 等校验。
- 运行 node ${CLAUDE_SKILL_DIR}/scripts/check-deps-policy.mjs . 直到 RESULT: PASS,再运行 npm run -s check:fast 和 npm run -s check:unused。
- 按参考文档记录提交。
适用场景
- Expo/React Native 项目需要严格控制依赖版本和安装位置。
- 需要供应链安全防护,如 7 天发布年龄等待、安装脚本审查、禁用包列表。
- 需要许可证合规,只发布允许的许可证或经批准的例外。
- 多包(npm workspaces)项目需要管理原生模块的单一副本和 peer 依赖。
- 需要依赖门禁在 CI 中通过,保证每台机器和 CI 构建一致。
限制
- 该技能面向 Expo 应用,依赖 Expo 的安装与检查机制。
- 需要 Node.js 和 npm 环境,根 package.json 要求 engines npm >=11.17.0 和 node >=22.18。
- 策略文件、.npmrc 和门禁脚本需要按模板初始化,缺失或损坏时需从模板恢复。
- 原生或 pre-1.0 包需要额外的开发构建和预览/发布构建验证。
- 具体价格、收费、平台支持范围等事实资料未提供。