Build a compact local SQLite index of every function, class, method, interface and type across your repos, so an agent finds a symbol's file:line and signatu...
文档
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...
它能做什么
Use Codemod CLI whenever the user wants to migrate, upgrade, update, or refactor a codebase in a repeatable way. This includes framework migrations, library...
技能文档
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-typesor 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 --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
codemodand 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.
相关技能
Orchestrate the complete coding workflow with multiple development modes (TDD/incremental/spec-dr...
Refactor React code away from direct useEffect usage. Use when Codex needs to review, rewrite, or prevent useEffect in React components, custom hooks, or fro...
Use when Codex is adding, editing, selecting, reviewing, or explaining tests in any repository, including mocks, fixtures, snapshots, CI validation, regressi...
Use when auditing, adding, removing, or improving code comments, docstrings, JSDoc/TSDoc, TODO/FIXME/HACK notes, public API comments, inline rationale, stale...
Scan codebase for dependency graph, tech debt hotspots, and module health scores