framework-upgrade
Skill0 starsChanged 13 days agoMITView on GitHub
Upgrade a framework, runtime or major dependency safely — React, Next.js, Angular, Vue, Node, TypeScript, .NET / ASP.NET Core / EF Core, Django, Laravel, Rails, Spring Boot and similar. Use when asked to upgrade, migrate or bump to a new major version, fix breakage after an upgrade, plan an upgrade, or check what an upgrade would take. Forces reading the official upgrade guide instead of guessing breaking changes from memory.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- joris887/exosuittheir own version, first seen Aug 20, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- joris887/exosuit★ 9same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository7 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- bug-huntSkill
- compaction-guardSkill
- iran-paymentsSkill
- persian-rtlSkill
- record-skillSkill
- task-observerSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 4 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 27
Check runtime/tooling requirements (Node, .NET SDK, Python, Java, TypeScript, bundler versions).
- Distinctive: line 28
Check ecosystem compatibility: the libraries that integrate with the framework (routers, UI kits, ORMs, test runners, auth libs, type …
- Very specific: line 31
Write the plan to UPGRADE.md (in the repo root or .claude/), ≤80 lines:
- Distinctive: line 48
After codemods, review the diff — codemods miss dynamic usages and sometimes produce code that compiles but behaves differently.
- Distinctive: line 59
Run the app (dev server / start command) and hit a few main pages or endpoints.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Framework upgrade
Claude's knowledge of breaking changes is frozen at training time and often wrong about the newest versions. Upgrades also fail the same ways: everything bumped at once, codemods skipped, warnings silenced, peer deps forced. This skill makes the upgrade evidence-driven and incremental.
0. Scope (ask only what you can't detect)
- What, from → to, and why (security fix, EOL, a needed feature). Detect "from" yourself.
- Multiple majors (e.g. Angular 15 → 18): go one major at a time when the official guide says so (Angular, Django feature releases); otherwise read every intermediate guide anyway.
- One framework per branch. Unrelated dependency bumps go in a separate step or PR.
1. Detect
python3 <skill-dir>/scripts/detect_versions.py [path] → frameworks, runtimes, package managers, lockfiles, and version drift between manifests (--all for every dependency). Note the package manager — use it, never mix (npm in a pnpm repo rewrites the lockfile).
2. Baseline (before touching anything)
- Clean working tree; new branch
upgrade/<framework>-<to>. - Build, tests, lint, type-check once; save the exact pass/fail counts and failing test names. If it is already red, the baseline is the red list — don't fix it inside the upgrade unless asked.
- Long builds/tests: run them through the
task-observerskill if available, so logs stay out of context.
3. Research — mandatory, never from memory
For each major between from and to:
- Fetch the official upgrade/migration guide and release notes (WebFetch/WebSearch on the project's own domain or repo). Third-party blogs only to fill gaps, labelled as such.
- From the guide, list every breaking change, removed/renamed API and changed default. For each, grep the codebase and record hit counts. Changes with zero hits are dropped from the plan.
- Check runtime/tooling requirements (Node, .NET SDK, Python, Java, TypeScript, bundler versions).
- Check ecosystem compatibility: the libraries that integrate with the framework (routers, UI kits, ORMs, test runners, auth libs, type packages). Look up their supported version range; list blockers.
- Find the official codemods / migration tools and how the guide says to run them (see
references/playbooks.mdfor where to look per ecosystem; confirm the exact command in the guide).
Write the plan to UPGRADE.md (in the repo root or .claude/), ≤80 lines:
# Upgrade <framework> <from> → <to>
Sources: <official guide URLs>
Runtime/tooling: <changes>
Blockers: <lib X supports up to Y — options>
Steps: 1. … (each step builds and is committed)
Breaking changes that apply: <change> — <n> hits — <how: codemod | manual | config>
Behaviour changes to QA manually: <changed defaults, caching, rendering, timezones…>
Baseline: build ok, tests 812/815 (3 known failures: …)Show the user the plan before step 4 when there are blockers, more than ~20 manual changes, or a behaviour change that affects users. Otherwise continue.
4. Execute — small steps, each one green
Order: runtime/tooling → official codemods → version bump (manifest + lockfile with the repo's package manager) → fix compile/type errors → fix tests → fix new deprecation warnings → remove compatibility shims that the guide marks temporary.
- Commit after each step with a message naming the step, so a bad step can be reverted alone.
- Fix code to the new API; don't wrap old APIs in local shims unless the guide recommends a transitional package (e.g. a compat build).
- After codemods, review the diff — codemods miss dynamic usages and sometimes produce code that compiles but behaves differently.
Never, without telling the user and getting a yes:
--legacy-peer-deps,--force,overrides/resolutionsto force incompatible peers;skipLibCheck,// @ts-ignore,#pragma warning disable,-W ignore, or lowering lint/analyzer levels to make it pass;- pinning back to the old version of a transitive dependency;
- deleting or skipping failing tests.
5. Verify
- Full build, type-check, lint, tests — compare to the baseline counts; new failures are upgrade bugs until proven otherwise.
- Deprecation warnings: count before/after; zero new ones is the target.
- Run the app (dev server / start command) and hit a few main pages or endpoints; for behaviour changes listed in the plan, verify each or hand them to the user as a QA checklist.
- Lockfile committed; CI config (Node/.NET/Python versions in workflows, Dockerfiles,
global.json,.nvmrc,engines) updated to match.
6. Report
Five lines: from → to, steps done (commits), what needed manual changes, what the user must QA, what was left (blockers, deferred deprecations). Update UPGRADE.md with the result.
When NOT to use
Patch/minor bumps with no breaking changes (just bump, build and test), security patches that only change a lockfile, or adding a new dependency.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

