The Boring Work, Done For You
For each SPFx solution, PANTOUM runs the mechanical upgrade work as deterministic steps: dependency bumps, config rewrites, script migrations, and patch application. Same inputs produce the same patch output every run, so you can tweak a setting, re-run, and compare without losing progress. If something goes sideways, the next run starts from the same known state, not a half-upgraded mess.
- Deterministic patches handle the mechanical SPFx upgrade work for you
- Same inputs produce identical patch output every run — reruns are safe
- Outputs land in pantoum_run_{runId}/ directories you can diff against each other
- Every run writes a history entry in pantoum_history/ so you can replay what happened
AI Inside Guardrails
For the messy parts — PnP migrations, MGT deprecation, build errors that do not fit a deterministic patch — PANTOUM ships migration prompts and a build-fix loop that hand the work to Claude. Each AI fix is verified by re-running the build or grepping for the patterns the migration was supposed to remove. After the configured retries (default 3, configurable 1–10), if the fix has not converged, PANTOUM stops and reports what it tried — so you can analyze the result and finish the upgrade by hand.
- Migration templates for PnP JS (v1/v2/v3 → v4), Microsoft Graph Toolkit, and the gulp → Heft build system
- Each AI fix is verified by re-running the build or grepping for the patterns it was supposed to remove
- Bounded retries (default 3, configurable 1–10); after that, PANTOUM stops and hands the steering wheel back to you
- Every AI action lands as a tracked patch in the final report so you can review or revert
Hands Off, Eyes On
PANTOUM does the work. You do the review. Every change — deterministic patches and AI fixes alike — lands as a tracked entry in a Markdown or JSON report, so you can read the whole upgrade in one sitting, attach it to a PR, or drop it into a change-control review.
- Markdown report for humans (attach to a PR), JSON report for tools (feed into CI)
- Per-solution reports show exactly what changed in each solution
- Nothing is ever "just done" — everything has a patch ID, a description, and a before/after
Who this is for
But what about…
Does the AI rewrite my code without asking?
No. Every AI action lands as a tracked patch in the final report — you read the diff before you commit.
What if Claude makes a bad fix?
Re-run, tweak the retry count, try again. No penalty for iterating.
What does PANTOUM handle out of the box?
PnP JS (v1/v2/v3 → v4), Microsoft Graph Toolkit, the gulp → Heft build system, PnP companion packages, and generic build errors. AI prompts live in src/templates/ — read, customize, extend.
Can I customize what PANTOUM does?
Yes — every patch, condition, and prompt lives in plain pantoum.patches.yml and Markdown templates. Read, override, or add your own.
What happens when Microsoft ships a new SPFx version?
PANTOUM does not hardcode SPFx versions — it passes your target straight to the M365 CLI and runs the result through its pipeline. The webapp's version picker is fetched from npm at runtime.
Quick Start
# Clone and build
git clone https://github.com/pantoum-spfx/pantoum.git
cd pantoum && npm install && npm run build
# Verify the environment
npm run doctor
# Launch PANTOUM Studio
npm run webappStart with the default settings, run one upgrade, and review the generated report before you reach for any advanced options.
