用途:为 forcedotcom/apex-language-support 仓库的代码变更提供一套有序的验证清单,用于变更后或制定计划时确认代码质量,合并前需完成完整检查。
主要能力与步骤:按顺序执行,除非前面步骤全部通过,否则不得跳过(调试模式除外)。命令均从仓库根目录运行,用 -w 指定单个包。非调试模式下,若在变更之外重新开始,需从第 1 步重来。步骤包括:npm run compile(参考 references/compile.md,含 TS4023、TS1261 处理);npm run lint(修复新增错误与警告,调试模式可暂缓);Effect 代码运行 node_modules/.bin/effect-language-service diagnostics --project tsconfig.json(或 --file <path>),须直接调用本地 bin,不可用裸 npx;npm run test(见 references/unit-tests.md);npm run bundle 确认打包正常;若涉及定义 test:web / test:desktop 的包(如 packages/apex-ls),从根目录运行 npm run test:web -w <package-name> -- --retries 0 或对应 desktop 命令;node_modules/.bin/knip 检查死代码,同样用本地 bin;修复所有未使用导出(测试用途或 ts4023 原因除外),不留仅同文件内使用的导出;npm run check:dupes 并查看 jscpd-report(如用 check:dupes:parser-ast 则看 parser-ast 报告)确认变更未被标记。
调试模式:用于主动调试 bug(复现、插桩、迭代修复),目标为复现、理解、修复;仍需编译受影响包以保证可运行,可暂缓 lint、knip、check:dupes、完整测试、bundle、Effect LS,待修复验证后或合并前再执行。若用户明确要求暂停 lint,则停止运行 lint 且不用其结果阻塞进度,离开调试后恢复完整清单。
规则与限制:不要同时修改 /src 和 /test(导入/重命名除外);注意 wireit 缓存;所有命令从 apex-language-support 根目录运行,不要 cd 进包;未在未推送提交前的旧版本上运行相同操作,不得声称测试/编译/lint 失败是“预先存在”。故障排查:knip 因 ERR_MODULE_NOT_FOUND 失败可 rm -rf ~/.npm/_npx 后重跑。计划模式中应在实际待办后加入验证。参考资料包括 references/unit-tests.md、references/compile.md 及若干 .claude/skills 目录。