Legacy Modernizer
Legacy code modernization: strangler fig pattern, incremental migration strategies, dependency upgrades, framework migration paths, and rewrite risk assessment.
A legacy modernization expert who assesses rewrite versus migrate risk honestly, designs strangler fig facades to extract functionality incrementally, and guides teams through framework migrations (AngularJS → Angular, Class Components → Hooks, Python 2 → 3) with automated tooling and characterization tests. Avoids big-bang rewrites and focuses on shipping value at each migration step.
Added Mar 20, 2026
$npx skills add johnefemer/skillfish --skill legacy-modernizer What This Skill Can Do
Concrete capabilities you get when you install this skill.
Assess rewrite vs. incremental migration risk with a structured decision framework
Apply the strangler fig pattern to extract modules behind a routing facade
Write characterization tests to lock existing behavior before refactoring
Automate migrations with codemods: jscodeshift, ast-grep, OpenRewrite
Plan and execute framework migrations with backward-compatible intermediary steps
Prioritize migration targets by business value, defect rate, and change frequency
Real Conversations
See how the Legacy Modernizer skill responds to actual requests. These are representative examples of what your AI agent will produce.
We have a large AngularJS (1.x) app that we need to migrate to Angular 17+. A full rewrite would take 18 months. Is there an incremental path?
Yes — use Angular's official ngUpgrade library to run both frameworks simultaneously. You migrate component by component while shipping features throughout.
The hybrid bootstrapping approach:
// main.ts — bootstrap Angular with UpgradeModule
import { UpgradeModule } from '@angular/upgrade/static';
@NgModule({
imports: [BrowserModule, UpgradeModule],
})
export class AppModule {
constructor(private upgrade: UpgradeModule) {}
ngDoBootstrap() {
this.upgrade.bootstrap(document.body, ['legacyApp']); // boots AngularJS
}
}
Migration sequence (leaf components first):
- Pick a leaf component (no dependencies on other AngularJS directives)
- Write it in Angular as a standalone component
- Downgrade it so AngularJS can use it:
import { downgradeComponent } from '@angular/upgrade/static';
// AngularJS module registers the Angular component as a directive
angular.module('legacyApp').directive(
'newButtonComponent',
downgradeComponent({ component: ButtonComponent })
);
- Replace the old AngularJS directive with the new component in templates
- Delete the old directive once all usages are replaced
- Repeat up the component tree
What to migrate first (in order):
- Shared UI components (buttons, inputs, tables) — used everywhere, high payoff
- Services — upgrade Angular services and downgrade for AngularJS use
- Route by route — once a route's components are all Angular, cut the whole route
Reality check: This works well for apps up to ~500 components. For 2,000+ components, evaluate a parallel build approach where the new app is built alongside and traffic is gradually shifted via a feature flag.
Get Started
How to install and use this skill in your preferred environment.
Skills are designed for AI coding agents (Claude Code, Cursor, Windsurf) and IDE-based workflows where the agent can read files, run scripts, and act on your codebase.
Models & Context
Which AI models and context windows work best with this skill.
Recommended Models
Claude Sonnet 4 or GPT-4o for migration strategy reasoning. Framework-specific migration tooling (ngUpgrade, jscodeshift) changes frequently — verify API versions before generating migration scripts.
Context Window
SKILL.md ~4KB. Full migration planning sessions with architecture diagrams benefit from 64K+ context.
Pro tips for best results
Be specific
Include numbers — users, budget, RPS — so the skill can size the architecture.
Share constraints
Compliance needs, team size, and existing stack all improve the output.
Iterate
Start with a high-level design, then ask follow-ups for IaC, cost analysis, or security review.
Combine skills
Pair with companion skills below for end-to-end coverage.
Works Great With
These skills complement Legacy Modernizer for end-to-end coverage. Install them together for better results.
Ready to try Legacy Modernizer?
Install the skill and start getting expert-level guidance in your workflow — any agent, any IDE.
$npx skills add johnefemer/skillfish --skill legacy-modernizer