Codemod
/install codemod
Codemod Migration Assistant
codemod-compatibility: mcs-v1 codemod-skill-version: 1.1.0
Use this skill to orchestrate migration execution, codemod package authoring, and Codemod CLI AI inspection.
Trigger this skill when the user asks to:
- migrate from one framework/library/tooling stack to another
- upgrade or update a framework, SDK, package, plugin, compiler, or toolchain
- apply a breaking-change migration, deprecation migration, or version bump rollout
- perform a large mechanical refactor that may already exist as a Codemod Registry package
- inspect AST shape, tree-sitter node types, Codemod documentation, or Codemod MCP-equivalent tools/resources from the CLI
When the intent is migration/update/upgrade oriented, use Codemod first before defaulting to a fully open-ended AI rewrite.
CLI AI tools
Codemod AI tools must be usable without MCP. Prefer the CLI commands below when MCP tools/resources are missing, stale, blocked by the harness, or when you need a user-reproducible command:
- Dump AST shape:
echo 'const x = 23;' | npx codemod ai dump-ast -- - Dump AST for a file:
npx codemod ai dump-ast src/App.tsx - Inspect node types for a language:
npx codemod ai node-types tsx - List docs resources:
npx codemod ai docs - Read/search docs:
npx codemod ai docs codemod-creation-workflow
If MCP is available, direct MCP calls are acceptable. If MCP is unavailable, do not stop authoring only because MCP is missing; use the codemod ai CLI equivalents.
When the user:
- Creates a codemod or does a large refactor — Read
codemod-creation-workflow-instructionsfirst via MCP ornpx codemod ai docs codemod-creation-workflow. Before writing source-transform code, readjssg-gotchasandast-grep-gotchasvia MCP ornpx codemod ai docs jssg-gotchas/npx codemod ai docs ast-grep-gotchas. Readcodemod-cli-instructionsonly when you need exact command syntax. Readjssg-instructionsonce a package exists and you are implementing the transform. - Needs to know whether a codemod package is still a starter scaffold or incomplete — Call MCP
validate_codemod_packageor runnpx codemod ai call validate_codemod_package --input '{"package_path":"."}'before stopping. - Needs Node/LLRT APIs, capability-gated modules, or non-trivial multi-file JSSG work — Read
jssg-runtime-capabilities-instructionsvia MCP ornpx codemod ai docs jssg-runtime-capabilities. - Maintains a codemod monorepo — Read
codemod-maintainer-monorepo-instructionsvia MCP ornpx codemod ai docs codemod-maintainer-monorepo. - Runs or discovers codemods — Read
codemod-cli-instructionsvia MCP ornpx codemod ai docs codemod-cli. - Hits errors or unexpected behavior — Read
codemod-troubleshooting-instructionsvia MCP ornpx codemod ai docs codemod-troubleshooting. - Needs import manipulation helpers — Read
jssg-utils-instructionsvia MCP ornpx codemod ai docs jssg-utils. - Needs to split a large migration into multiple PRs — Read
sharding-instructionsvia MCP ornpx codemod ai docs sharding.
Authoring defaults
- Treat the Codemod docs served through
codemod ai docsor MCP resources as the source of truth for CLI, workflow, and JSSG semantics. - Keep source transforms AST-first. Do not use regex or raw source-text rewriting as the primary implementation strategy.
- Use
npx codemod ai dump-astor MCPdump_astbefore broadening heuristics. - Use
npx codemod ai node-types \x3Clanguage>or MCPget_node_typeswhen node kinds or fields are unclear. - If symbol origin matters, use semantic analysis and binding-aware checks.
- Keep one granular transform or one exact
from -> tomigration as a single package unless the request is clearly open-ended or multi-hop. - Inspect 1-3 representative repo files after or alongside registry discovery before you finalize the transform shape.
- If registry search yields no exact package, run
codemod initimmediately instead of continuing broad research without a package. In headless/non-interactive flows, use the simplifiedcodemod init \x3Cpath> --no-interactiveinterface and pass only user- or task-provided flags; do not invent--author,--license,--description, or--git-repository-url. - After the package exists, replace the starter transform, README, and starter fixtures before doing optional work.
- Define positive, negative, and edge fixtures before deep implementation work.
- Before stopping, inspect the whole package surface and update every affected file together:
README.md,codemod.yaml,workflow.yaml,package.jsonscripts, tests/fixtures, and any renamed paths, ids, or references. Do not churn version numbers by default, but do not leave stale package metadata behind after a rename or material package-surface change. - Keep the requested migration aligned across every artifact: transform logic, fixtures,
workflow.yaml,codemod.yaml, README, and package metadata must all describe the same codemod. - Replace scaffold boilerplate before finishing. Do not leave generic README text, placeholder fixture intent, or mismatched usage descriptions in place.
- Use explicit workflow
base_path,include, andexcludeglobs that match the actual target file types and keepcodemod.yamltargets.languagesaligned with that scope. - Preserve the scaffold-selected package manager in
package.jsonscripts and package-local README/development commands. Infer it from the scaffold choice, lockfile, or existing package metadata; do not rewriteyarn/pnpm/bunpackages tonpx/npmunless the user explicitly asked. - Preserve repository-local package and lockfile conventions. In existing monorepos, do not introduce ad hoc dependency ranges or unrelated lockfile churn.
- Treat fixture quality as a release gate. Cover realistic positive cases, edge cases, preserve/no-op cases, and negative cases where similar code must stay unchanged.
- Do not stop while
validate_codemod_packagestill reports starter scaffold markers, missing package surface updates, missing real test cases, or failing default tests. - For reusable authored codemods, do not default registry access/visibility to private unless the user explicitly asked for a private package.
- Leave missing package author metadata to the CLI defaults/publish-time auth fallback unless the user supplied an explicit author.
- Do not create commits or push branches for codemod authoring/evaluation unless the user explicitly asked for git operations.
Runtime flow
- Discover candidates with
codemod search. - Read the selected package's README/docs and perform any documented prerequisites or setup steps.
- Run workflow-capable packages with
codemod run --dry-runbefore apply. - Run
codemod \x3Cpackage-id>and accept the install prompt when a package exposes installable skill behavior. - Enforce verification with tests and dry-run summaries before apply.
Mandatory first action for migration/update/upgrade requests
- Run
codemod searchbefore proposing a manual migration plan. - Do not jump straight to a handcrafted migration approach until registry discovery has been attempted and summarized.
- If a suitable existing codemod is found, prefer evaluating it with
--dry-runbefore proposing bespoke manual or AI-only migration work. - Only skip registry discovery when the user explicitly says not to use Codemod or not to search for existing codemods.
First-turn behavior
- Before broad repo inspection or planning, derive a small set of high-signal search terms from the user request and run
codemod search. - For codemod authoring, inspect only a small representative slice of the repo after or alongside registry discovery, then scaffold and iterate.
- If the search returns a plausible existing package, the next step is to inspect that package's README/limits and run a dry-run, not to draft a manual migration plan.
Anti-patterns to avoid
- Do not start by planning a manual migration when the request is an upgrade, update, or migration and the registry has not been searched yet.
- Do not create a new codemod package before checking whether an existing registry package already covers the migration.
- Do not keep reading broad guidance after a registry miss without scaffolding a package.
- Do not run a discovered package blindly without first reading its README/docs for prerequisites, config, and known limits.
- Do not introduce a shell step just to reach or mutate another related file path when JSSG can handle the hop.
- Do not stop codemod authoring only because Codemod MCP is unavailable; use
codemod aiCLI equivalents.
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install codemod - 安装完成后,直接呼叫该 Skill 的名称或使用
/codemod触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Codemod 是什么?
Use Codemod CLI whenever the user wants to migrate, upgrade, update, or refactor a codebase in a repeatable way. This includes framework migrations, library... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 81 次。
如何安装 Codemod?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install codemod」即可一键安装,无需额外配置。
Codemod 是免费的吗?
是的,Codemod 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Codemod 支持哪些平台?
Codemod 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Codemod?
由 Mohamad Mohebifar(@mohebifar)开发并维护,当前版本 v1.0.0。