skills/mass-change/SKILL.md
Research and plan a large-scale change, then execute it in parallel across isolated agents that each open a PR.
npx skillsauth add microsoft/amplifier-bundle-skills mass-changeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are orchestrating a large, parallelizable change across this codebase.
$ARGUMENTS
Check 1 — Arguments present.
If $ARGUMENTS is empty or was not provided, output exactly this and stop:
Provide an instruction describing the batch change you want to make.
Examples:
/mass-change migrate from react to vue
/mass-change replace all uses of lodash with native equivalents
/mass-change add type annotations to all untyped function parameters
Check 2 — Git repository.
Run git rev-parse --is-inside-work-tree in the current directory. If it fails or returns an error, output exactly this and stop:
This is not a git repository. The /mass-change skill requires a git repo because it spawns agents in isolated branches and creates PRs from each. Initialize a repo first, or run this from inside an existing one.
If both checks pass, proceed with the three phases below.
Understand the scope. Launch one or more research agents (using the delegate tool, in the foreground — you need their results) to deeply research what this instruction touches. Find all the files, patterns, and call sites that need to change. Understand the existing conventions so the migration is consistent.
Decompose into independent units. Break the work into 5–30 self-contained units. Each unit must:
Scale the count to the actual work: few files → closer to 5; hundreds of files → closer to 30. Prefer per-directory or per-module slicing over arbitrary file lists.
Determine the verification recipe. Figure out how a worker can verify its change actually works end-to-end — not just that unit tests pass. Look for:
If you cannot find a concrete e2e path, ask the user how to verify this change end-to-end. Offer 2–3 specific options based on what you found (e.g., "Screenshot via browser automation", "Run dev server and curl the endpoint", "No e2e — unit tests are sufficient"). Do not skip this — the workers cannot ask the user themselves.
Write the recipe as a short, concrete set of steps that a worker can execute autonomously. Include any setup (start a dev server, build first) and the exact command/interaction to verify.
Write the plan. Present:
Present the plan for user approval before proceeding.
Once the plan is approved, spawn one agent per work unit using the delegate tool. Launch them all in a single message block so they run in parallel.
For each agent, the prompt must be fully self-contained. Include:
After you finish implementing the change:
npm test, bun test, pytest, go test). If tests fail, fix them.gh pr create. Use a descriptive title. If gh is not available or the push fails, note it in your final message.PR: <url> so the coordinator can track it. If no PR was created, end with PR: none — <reason>.After launching all workers, render an initial status table:
| # | Unit | Status | PR | |---|------|--------|----| | 1 | <title> | running | — | | 2 | <title> | running | — |
As agent completion notifications arrive, parse the PR: <url> line from each agent's result and re-render the table with updated status (done / failed) and PR links. Keep a brief failure note for any agent that did not produce a PR.
When all agents have reported, render the final table and a one-line summary (e.g., "22/24 units landed as PRs").
tools
Plan a batch of independent work into isolated lanes, get your approval, then run each lane as its own autonomous /goal session — one git worktree, one branch, one tmux session each — and verify and merge the results yourself. Use when work decomposes into pieces that can run at the same time: "run these in parallel", "goal-batch", "launch lanes for these", "work these N tasks simultaneously", "batch these as goals". Nothing launches until you have seen the lane split and said go. This is NOT fire-and-forget: the orchestrating session re-runs the full test suite itself after every merge and never accepts a lane's own claim that it finished. NOT for bounded edits that each end in their own PR — use mass-change for that. Requires git, tmux, the amplifier CLI on PATH, and the goalify and monitor skills.
development
Momentum-driven engineering reviewer that holds one uncompromising gate — is it REAL, proven end-to-end as a user would — while driving work forward. Demands proof over claims, plumbing before polish, fail-loud over fallbacks, trust in the model over instructions, and protects the critical path so good-but-costly ideas don't stall the work. Warm, blunt, forward-driving — not a curmudgeon. A lens for any checkpoint — brainstorm, design, plan, implement, debug, or ship — not just the finish. Use when: pressure-testing whether an idea/design/plan is provable and on the critical path, whether you're building in the right order, whether a fix is real or a band-aid, or whether work is actually done/ready — any time the worry is "are we fooling ourselves about what's real?"
development
Convene the Product Development Council (six orthogonal product-delivery lenses, anchored by a mandatory problem-validation gate) on a target — cold independent fan-out, debate-to-consensus, synthesized verdict with recorded dissent and a roster manifest.
development
Convene the Product Development Council on the CURRENT conversation / work-in-progress — the plan, roadmap, or scope decision you've been building in this session. The INLINE counterpart to /product-council (which forks and runs isolated, so it cannot see the chat). Use when you want the council to critique what we're working on right now.