用途:在 bitwarden/clients 仓库升级 sdk-internal 依赖时,系统评估该提交区间内编译期与运行时的破坏性变更,并定位受影响的调用点,而不是发现第一个破坏点就收手。
主要能力:此技能把升级 PR 与 sdk-internal 提交区间对照,输出 RANGE、REMOVED、ADDED、MUTATED,按成员(类方法、接口属性、枚举成员)逐项列出;对新增项只把“已有 owner 上的新增非可选属性”等视为破坏;对提交逐 hunk 分类;并用 git grep 找出所有调用点。还会检查 tsc-strict 覆盖不到、被排除的 spec 文件以及 jest.mock 工厂式 mock 等三类易漏调用点。
必要用法:先执行 gh pr diff <PR> -R bitwarden/clients -- package.json 得到新旧版本;确认兄弟目录存在 ../sdk-internal 克隆(CI 放置位置),若无则停止并告知用户这是必需前置条件,不要自行克隆;CI 中直接 grep 类型检查日志中的 error TS,本地运行 npm run test:types;随后运行 node .claude/skills/evaluating-sdk-internal-updates/sdk-surface-diff.mjs <old-version> <new-version>,再以 --commercial 运行一次;用 git -C ../sdk-internal log --reverse --oneline <old-sha>..<new-sha> 并逐 hunk 分类;对每个符号以 git grep -n 查裸名(不要用 grep -r,会搜到 node_modules 中的绑定本身)。修复后依次运行 npm run lint:fix、npx prettier --write <edited files>、npm run test:types、npm test -- <edited paths> --maxWorkers=2;若修复非纯机械性,先调用 Skill(writing-client-code),再按 Skill(bitwarden-delivery-tools:committing-changes) 提交。
限制:该 SDK 是 Protected Data 变为 Vault Data 的边界,修复不得把解密值发给 API、写日志,或把解密逻辑移出 SDK 到 TypeScript;.claude/CLAUDE.md 禁止在本仓库新增加密逻辑,若升级看起来需要新增加密逻辑,应作为发现上报而非编写修复。不要编辑 package.json。不确定时应上报而非猜测。版本号本身不含提交,sdk-internal 的 SHA 位于 tarball 内的 VERSION。资料未提供该技能的具体适用场景细节。