SuperAPI AI 工具集

cleanup-types

编程与开发

查看项目

更新于 10-16 04:57

技能介绍

用途:查找本应共享却在多个文件重复定义的类型,合并为单一来源。默认保守,因为类型合并看似安全,却可能掩盖有意的差异。

预检:识别语言,TS/JS(主要)、Python(dataclass、TypedDict、Pydantic)、Go(struct)、Rust(struct/enum);工作树脏时拒绝自动应用;确保报告目录存在;先定位项目已有的共享类型位置,如 types/、models/、schema/ 或 monorepo 的 packages/db/src/schema/。

检测:没有现成工具能可靠发现跨语言语义等价的类型,采用 AST 扫描加 grep 加结构化比较。示例命令: grep -rn --include=".ts" --include=".tsx" -E "^export (interface|type) [A-Z]" . > /tmp/ts-types.txt grep -rn --include=".py" -E "^(class \w+(.?(BaseModel|TypedDict))|@dataclass)" . > /tmp/py-types.txt grep -rn --include=".go" -E "^type \w+ struct" . > /tmp/go-types.txt grep -rn --include=".rs" -E "^pub (struct|enum) \w+" . > /tmp/rust-types.txt 对同名类型逐字段比较。

评估:生成 .claude/cleanup-reports/cleanup-types-{YYYY-MM-DD}.md,按 HIGH(结构完全相同)、MEDIUM(字段重叠,可能有意分叉)、LOW(同名不同义)分级,并附批判性评估。

应用:仅自动合并 HIGH。置信度标准:HIGH 需同名出现在 2+ 文件、字段名与类型及修饰符完全一致、语义概念相同、且工作区已有共享类型模块。MEDIUM 仅报告,LOW 仅记录。执行时选已有共享模块作为规范位置,迁移定义并保留注释,原处改为 import type,运行类型检查,出错则回滚该处并降级;提交信息为 chore(cleanup): cleanup-types — consolidated N duplicate type definitions。

验证:bun run typecheck 2>&1 || npx tsc --noEmit;mypy . 2>&1 || true;go build ./... 2>&1;cargo check 2>&1;bun test && bunx biome check .。

禁止:自动合并生成类型(Drizzle、OpenAPI、Prisma、GraphQL);合并公共 API 包与私有应用包的同名类型;自动创建新共享包;合并带名义标记的类型;动 *.d.ts 环境声明;自动重命名。输出:"Consolidated N duplicate type definitions. M deferred for review." 加报告路径与验证状态。