用途:该技能针对 AI 生成代码中常见但隐蔽的坏味道——代码能编译、看起来“专业”,却违反 YAGNI、快速失败和项目本地约定。它先禁用这些 AI 套路指纹,再把实现重写到与问题规模相称的程度,而非教程式或企业脚手架式写法。范围限于模型默认习惯,如叙述性注释、为待办事项造 AbstractFactory、静默返回 []、as unknown as 等,不覆盖全部经典可维护性坏味道。
主要能力:硬性禁止多类模式。注释类:复述下一行的注释、分节横幅、注释中 emoji、只重述签名的 JSDoc。结构类:仅一个实现却为“灵活性”设的接口/抽象类、少于 3 个真实变体的工厂/建造者/策略、XService→XManager→XHelper→XUtils 堆栈、≤2 个旋钮的选项包、未被请求的限流器/Webhook/分析/可插拔后端。错误类:包围不抛异常操作的 try/catch、只记录并继续的 catch、静默返回空值、对非可选类型加空值保护。类型类:any、as any、as unknown as T、无理由的 @ts-ignore、用 ! 代替收窄。命名类:只用 data/result/handler/manager/util 等无领域名词的主名。另禁未使用参数、无调用方的特性开关、幻觉包/API、同一文件多轮约定漂移。
使用方式:先声明范围(全量或指定文件/模块/PR/模式簇),保留公开行为。审计并记录命中的模式、文件与严重度。改写结构前锁定规模契约:需求一句话、可复用的既有模式、抽象预算(默认无,直到 ≥3 个真实变体)、错误策略(传播还是在边界映射)、明确不做的范围。逐条重写:删除叙述注释与投机 API,合并包装层为领域命名函数,在真实边界传播或映射错误,用正确类型或 unknown+收窄替代类型逃逸,对齐所改文件的风格,不做无关的顺手重构。最后用工项目已有的 typecheck/lint/test 验证,未经批准不安装工具。参考文件包括 banned-patterns.md、craft-antidotes.md、review-checklist.md。若某模块命中 3 个以上被禁模式,应重新设计该单元。限制:不覆盖所有可维护性坏味道;不改变公开行为除非用户授权;完整模式目录与检查清单详情暂未提供。