Skip to content
Agentmart
Submit a tool

codemod-react-pipeline

Guided, scripted pipeline for running JSX/TSX/React codemods safely across large legacy codebases.

Skill by pproenca

IndexedMIT★ 218
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/pproenca-codemod-react-pipeline

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Guided, scripted pipeline for running JSX/TSX/React codemods safely across large legacy codebases. Use when you need to scaffold a codemod, dry-run it, validate its findings, and apply it across many files (50 to 100k+) without breaking the build. Walks the full inner/outer loop with the Codemod CLI (JSSG, ast-grep, workflows). Triggers on large-scale refactor, legacy React migration, codemod a prop/API change, migrate components across the codebase, run a codemod safely, batched/resumable codemod apply, dry-run a codemod.

Use cases: frontend, backend, data

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Shell scripts

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/codemod-react-pipeline

What's inside

Skill name
codemod-react-pipeline
Description
Guided, scripted pipeline for running JSX/TSX/React codemods safely across large legacy codebases. Use when you need to scaffold a codemod, dry-run it, validate its findings, and apply it across many files (50 to 100k+) without breaking the build. Walks the full inner/outer loop with the Codemod CLI (JSSG, ast-grep, workflows). Triggers on large-scale refactor, legacy React migration, codemod a prop/API change, migrate components across the codebase, run a codemod safely, batched/resumable codemod apply, dry-run a codemod.
License
MIT
Instructions
106 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (25)

  • README.md
  • SKILL.md
  • astgrep-rule.yml.template · assets/templates/
  • codemod.yaml.template · assets/templates/
  • expected.tsx.template · assets/templates/fixtures/
  • input.tsx.template · assets/templates/fixtures/
  • transform.ts.template · assets/templates/
  • workflow.yaml.template · assets/templates/
  • config.json
  • gotchas.md
  • hooks.json · hooks/
  • metadata.json
  • inner-outer-loop.md · references/
  • safety-and-scale.md · references/
  • workflow.md · references/
  • 00-plan.sh · scripts/
  • 01-scaffold.sh · scripts/
  • 02-inner-loop.sh · scripts/
  • 03-dry-run.sh · scripts/
  • 04-validate-findings.sh · scripts/
  • 05-run-batched.sh · scripts/
  • guardrail.sh · scripts/
  • common.sh · scripts/lib/
  • selftest.sh · scripts/
  • verify.sh · scripts/

SKILL.md (first lines)

# Codemod React Pipeline

A safe, repeatable workflow for applying **JSX / TSX / React codemods to large legacy
codebases** — from a 50-file rename to a 100k-file API migration. It composes the
[Codemod CLI](https://docs.codemod.com) (JSSG, ast-grep, workflows) into an inner/outer loop and
gates every mass change behind a dry-run plus validation. For the *why* behind each rule it cites,
see the sibling [`codemod`](../codemod/) best-practices reference.

## When to Apply

Use this skill when:
- You're migrating a pattern across a large React/TS codebase (component/prop rename, deprecated
  API, import swap, hook migration) and a hand-run `codemod jssg run ./t.ts ./src` is too risky.
- You need the change to land **incrementally and reviewably** — per-batch commits, resumable on
  failure, with the build/typecheck/tests green at every checkpoint.
- You want to **see and validate the findings** (what would change, and whether it's safe) before
  touching files at scale.
- The transform must be **idempotent** and proven so before mass apply.

Don't use it for a one-file edit, or a change better done by hand in a single PR.

## Workflow Overview

```
00 plan ─▶ 01 scaffold ─▶ 02 inner loop ─▶ 03 dry-run ─▶ 04 validate ─▶ 05 batched apply ─▶ 06 verify
   goal       templates      fixture tests     preview       gates          per-batch            final
   + blast    (transform/    + 1-file trial    + findings     (idempotency,  apply+verify+commit  assertions
   radius     rule/wf/tests)                    report        type/lint/test) (resumable)
                                                  │                                  │
                                                  └── sentinel ──── required by ──────┘
                              (on any failure: working tree reverted; fix and re-run — nothing committed yet)
```

| Step | Action | Tool / Script | Risk |
|------|--------|---------------|------|
| 0 | Capture goal, classify transform, count blast radius | `scripts/00-plan.sh` | read-only |
| 1 | Scaffold transform + fixtures + workflow from templates | `scripts/01-scaffold.sh` | write (new files) |
| 2 | Fixture tests + single-file trial run (auto-reverted) | `scripts/02-inner-loop.sh` | read-only (reverts) |
| 3 | Preview changes; write findings report + dry-run sentinel | `scripts/03-dry-run.sh` | read-only (reverts) |
| 4 | Gate: idempotency, typecheck, lint, format, tests | `scripts/04-validate-findings.sh` | read-only (reverts) |
| 5 | Apply in resumable batches, verify + commit each | `scripts/05-run-batched.sh` | **destructive** (commits) |
| 6 | Final assertions over the whole migration | `scripts/verify.sh` | read-only |

A PreToolUse hook (`hooks/hooks.json`) blocks a broad `codemod jssg run` that lacks `--dry-run`
when no dry-run sentinel exists — so step 5 (or an ad-hoc apply) cannot skip steps 3–4.

## Requirements

- **Codemod CLI** — `npm i -g codemod` (or the scripts fall back to `npx codemod`). Provides
  `jssg run/test` and `workflow run/validate/resume/status`.
- **git** — the pipeline requires a clean tree and makes per-batch checkpoint commits.
- **jq** — the scripts read `config.json` with it.
- **Your project's gate tooling** — TypeScript, ESLint, Prettier, a test runner (whichever gates
  you enable in `config.json`).

## Setup

Edit `config.json` for the target repo (see each field's `_setup_instructions`):
- `src_globs`: the files the codemod may touch (scopes blast radius + gates)
- `language`: `tsx` | `jsx` | `typescript` | `javascript`
- `typecheck_cmd` / `lint_cmd` / `format_cmd` / `test_cmd`: gate commands (empty disables a gate)
- `batch_size`: files per checkpoint in the outer loop
- `gates`: per-gate on/off toggles

Add your `state_dir` (default `.codemod-pipeline`) to the target repo's `.gitignore`.

## Quick Reference

| Script | Purpose |
|--------|---------|
| `scripts/00-plan.sh "<goal>" [name]` | Plan + blast-radius estimate |
| `scripts/01-scaffold.sh <name> [--rule]` | Scaffold a JSSG transform (or ast-grep rule) |
| `scripts/02-inner-loop.sh <name> [--watch\|--file P\|-u]` | Tight loop: fixture tests / 1-file trial |
| `scripts/03-dry-run.sh <name> [--sample N]` | Preview; write findings + sentinel |
| `scripts/04-validate-findings.sh <name>` | Run validation gates |
| `scripts/05-run-batched.sh <name> [--batch-size N\|--dry]` | Resumable batched apply + commits |
| `scripts/verify.sh <name>` | Final sign-off assertions |
| `scripts/selftest.sh` | Self-test this skill's scripts/assets |

## How to Use

1. From the **target repo root**, run `00-plan.sh "<goal>"` and read the generated `plan.md`.
2. `01-scaffold.sh <name>`, then implement `codemods/<name>/transform.ts` and its fixtures.
3. Iterate with `02-inner-loop.sh <name> --watch` until fixtures pass; try `--file <path>` on a real file.
4. `03-dry-run.sh <name>` and read the findings report; then `04-validate-findings.sh <name>`.
5. Only after gates pass: `05-run-batched.sh <name>` (resume by re-running it after any fix).
6. `verify.sh <name>` to confirm the migration is complete and idempotent.

See [references/workflow.md](references/workflow.md) for per-step inputs, outputs, failure handling,
and rollback; [references/inner-outer-loop.md](references/inner-outer-loop.md) for the mental model;
and [references/safety-and-scale.md](references/safety-and-scale.md) for batching and rollback at
100k-file scale.

## Gotchas

See [gotchas.md](gotchas.md). The big ones: workflow `commit:` checkpoints are **cloud-only** (the
pipeline commits locally instead); always exclude generated/vendored trees; and design for
idempotency from the first line.

## Related Skills

- [`codemod`](../codemod/) — the best-practices reference (48 rules) this pipeline operationalizes.
  Steps here cite specific rules (e.g. `test-run-on-subset-first`, `state-use-for-resumability`,
  `pattern-ensure-idempotency`, `security-minimize-capabilities`).

From pproenca/dot-skills, MIT.

More from pproenca/dot-skills

Signals

Stars
218
Forks
19
Open issues
3
Last commit (this folder)
May 27, 2026 (5 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from pproenca

Cite this page

codemod-react-pipeline skill. Agent Mart. https://agentmart.dev/skills/pproenca-codemod-react-pipeline (last updated 2026-10-24)