本技能面向 React Native / Expo 项目,目标是把 TypeScript 与代码检查规则固化为可复制的配置和可自动校验的门槛:每个 .ts/.tsx 文件在统一的严格 tsconfig 下编译、通过一份 ESLint 配置且无警告、无内联禁用,并受硬性体量上限约束;Prettier 负责格式化,knip 查找无用代码。技能内含配置模板、上限表、禁用模式、TSDoc 契约和两个检查脚本。
主要规则包括:不得用 eslint-disable、@ts-ignore、@ts-nocheck 压制检查,@ts-expect-error 仅限第三方类型确有错误且需写明至少 10 个字符的原因;唯一的 tsconfig.base.json 继承 expo/tsconfig.base 并保存全部编译选项,各程序 tsconfig 只设置 types、paths、tsBuildInfoFile、include、exclude;两个程序(src/tsconfig.json 为应用侧、根 tsconfig.json 为含 Node 的全仓库)互不越界;ESLint 仅一份根配置、所有规则为 error、通过 npm 脚本以 --max-warnings 0 运行,例外须为精确到文件的块并带原因注释与 Gate-Change 尾注。体量上限为每文件 250 代码行(测试 400)、.ts 函数 40 行、.tsx 组件 80 行、圈复杂度 10、认知复杂度 15、嵌套 3 层、参数 3 个、嵌套回调 3 层(测试 4)、JSX 深度 5、每文件一个组件和一个类、字符串字面量最多出现两次。
类型与代码风格方面:只使用可擦除的 TypeScript(不用 enum、namespace、构造函数参数属性,用 type 而非 interface,禁用 any 与非空断言 !(测试外));使用具名导出,同一目录用 ./x,其他文件夹用 @/…,Node 运行文件写扩展名;错误以 Result(kind 联合)返回或抛出带 cause 的 Error,禁止浮动 Promise,事件处理器保持同步并返回空;数据不可变,Date.now、new Date()、performance.now、Math.random 只在时钟与随机端口之后使用,确定性代码用整数安全运算且不读设备本地化信息;Prettier 是唯一格式化器,knip 规则全部为 error,TypeScript、ESLint 及其插件、Prettier、knip 使用经验证的精确固定版本;src/core/ 中导出的函数与所有 *Port 类型需一句话 TSDoc,禁止 TODO、FIXME、HACK 和注释掉的代码。
工作流:配置阶段复制 templates/ 下各模板到目标位置,在三处登记已存在的顶层文件夹(PRE_EXISTING、.prettierignore、根 tsconfig.json 的 exclude),安装固定版本并运行 node ${CLAUDE_SKILL_DIR}/scripts/check-configs.mjs .;写代码前阅读 references/code-policies.md 并参考 examples/parse-task-id-param.ts、examples/with-timeout.ts、examples/use-task-editor-model.ts;遇到 tsc 或 lint 错误时在 references/forbidden-patterns.md 中查找替代写法,触及上限时按 references/limits-and-splitting.md 与 examples/splitting-a-long-function.md 按职责拆分;例外仅用于工具或库契约,按 references/eslint-config-guide.md 步骤添加精确文件的块。最终运行 npm run typecheck、npm run lint、npm run format:check、npm run check:unused,以及 node ${CLAUDE_SKILL_DIR}/scripts/check-source.mjs . 与 node ${CLAUDE_SKILL_DIR}/scripts/check-configs.mjs .,直到全部输出 RESULT: PASS。
模板对应目标:templates/tsconfig.base.json→tsconfig.base.json;templates/tsconfig.json→tsconfig.json(根程序,Node 与测试);templates/src/tsconfig.json→src/tsconfig.json(应用程序);templates/src/app-env.d.ts→src/app-env.d.ts;templates/eslint.config.mjs→eslint.config.mjs;templates/dot-prettierrc.json 与 templates/dot-prettierignore→.prettierrc.json、.prettierignore;templates/knip.json→knip.json,并把 quality-gates 的 templates/contracts/knip-ignores.json 放到 contracts/knip-ignores.json。多包仓库需先读两份配置参考中的多包章节,并给每个生成的平台文件夹各加一行 .prettierignore。
适用场景为编写、拆分 React Native / Expo 的 TypeScript 文件,修复 tsc、ESLint、Prettier 报错,统一仓库检查配置。限制包括:规则针对该技能给出的 Expo/React Native 项目结构与固定版本,其他项目需自行调整;上限、固定版本或基线变更属于需停下来询问开发者的决定;收费、价格与平台支持等信息资料未提供。