代码修改工具(Codemod)
v1使用 Codemod CLI 来实现代码库的迁移、升级、更新或重构,以可重复的方式进行。这包括框架迁移、库升级、版本升级迁移、API 表面变化、弃用、large-scale 机械编辑、codemod 包作者、AST 检查、tree-sitter 节点类型查找以及通过 `codemod ai` 命令的 Codemod 文档查找。首先在 Codemod Registry 中搜索现有的包,优先使用确定性的 codemod 而不是开放式的 AI 重写,在应用之前运行 dry-runs,只有当没有合适的包存在时才创建 codemod 包。
运行时依赖
安装命令
点击复制技能文档
Codemod Migration Assistant codemod-compatibility: mcs-v1 codemod-skill-version: 1.1.0
使用此技能来编排迁移执行、codemod包作者和Codemod CLI AI检查。触发此技能,当用户要求:
从一个框架/库/工具栈迁移到另一个 升级或更新框架、SDK、包、插件、编译器或工具链 应用breaking-change迁移、弃用迁移或版本更新 执行大规模的机械重构,这可能已经存在于Codemod Registry包中 检查AST形状、tree-sitter节点类型、Codemod文档或Codemod MCP等效工具/资源从CLI
当意图是迁移/更新/升级导向时,首先使用Codemod,然后再默认使用完全开放的AI重写。 CLI AI工具 Codemod AI工具必须可以在没有MCP的情况下使用。 当MCP工具/资源缺失、过时、被harness阻塞或需要用户可复制的命令时,首选以下CLI命令:
Dump AST形状:echo 'const x = 23;' | npx codemod ai dump-ast -- Dump AST文件:npx codemod ai dump-ast src/App.tsx 检查语言的节点类型:npx codemod ai node-types tsx 列出文档资源:npx codemod ai docs 读取/搜索文档:npx codemod ai docs codemod-creation-workflow
如果MCP可用,直接MCP调用是可接受的。 如果MCP不可用,不要仅因为MCP缺失而停止作者;使用codemod ai CLI等效项。
当用户:
创建codemod或执行大规模重构 —— 通过MCP或npx codemod ai docs codemod-creation-workflow阅读codemod-creation-workflow-instructions。 在编写源转换代码之前,通过MCP或npx codemod ai docs jssg-gotchas / npx codemod ai docs ast-grep-gotchas阅读jssg-gotchas和ast-grep-gotchas。 只有在需要确切命令语法时才阅读codemod-cli-instructions。 一旦包存在并且正在实现转换,阅读jssg-instructions。
需要知道codemod包是否仍然是一个启动脚手架或不完整 —— 调用MCP validate_codemod_package或运行npx codemod ai call validate_codemod_package --input '{"package_path":"."}',然后再停止。
需要Node/LLRT API、capability-gated模块或非平凡的多文件JSSG工作 —— 通过MCP或npx codemod ai docs jssg-runtime-capabilities阅读jssg-runtime-capabilities-instructions。
维护codemod monorepo —— 通过MCP或npx codemod ai docs codemod-maintainer-monorepo阅读codemod-maintainer-monorepo-instructions。
运行或发现codemod —— 通过MCP或npx codemod ai docs codemod-cli阅读codemod-cli-instructions。
遇到错误或意外行为 —— 通过MCP或npx codemod ai docs codemod-troubleshooting阅读codemod-troubleshooting-instructions。
需要导入操作助手 —— 通过MCP或npx codemod ai docs jssg-utils阅读jssg-utils-instructions。
需要将大规模迁移分成多个PR —— 通过MCP或npx codemod ai docs sharding阅读sharding-instructions。
作者默认 将通过codemod ai docs或MCP资源提供的Codemod文档视为CLI、工作流和JSSG语义的真实来源。 保持源转换AST-first。 不要使用正则表达式或原始源文本重写作为主要实现策略。 使用npx codemod ai dump-ast或MCP dump_ast在扩展启发式之前。 使用npx codemod ai node-types 或MCP get_node_types当节点种类或字段不清楚时。 如果符号起源很重要,使用语义分析和绑定感知检查。 保持一个粒度转换或一个确切的from -> to迁移作为一个单独的包,除非请求明确是开放式或多跳。 在注册表发现之后或与注册表发现同时检查1-3个代表性存储库文件,然后再确定转换形状。 如果注册表搜索没有找到确切的包,立即运行codemod init,而不是继续广泛的研究而没有包。 在headless/非交互式流中,使用简化的codemod init --no-interactive接口,并仅传递用户或任务提供的标志;不要发明--author、--license、--description或--git-repository-url。 包存在后,替换启动转换、README和启动固定装置,然后再进行可选工作。 在深入实现工作之前定义正面、负面和边缘固定装置。 在停止之前,检查整个包表面,并一起更新每个受影响的文件:README.md、codemod.yaml、workflow.yaml、package.json脚本、测试/固定装置和任何重命名的路径、ID或引用。 不要默认更改版本号,但不要在重命名或物质包表面更改后留下过时的包元数据。 保持请求的迁移在每个工件中对齐:转换逻辑、固定装置、workflow.yaml、codemod.yaml、README和包元数据必须都描述相同的codemod。 替换脚手架样板,然后再完成。 不要留下通用README文本、占位符固定装置意图或不匹配的使用描述。 使用显式工作流base_path、include,