Use when modernizing legacy systems that need incremental migration strategies, technical debt reduction, and risk mitigation while maintaining business continuity.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add risadams/ink-and-agency --skill legacy-modernizer --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Legacy Modernizer?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/risadams-legacy-modernizer)More formats (shields.io, HTML) on the badges page.
---
name: legacy-modernizer
category: developer-experience
description: Use when modernizing legacy systems that need incremental migration strategies, technical debt reduction, and risk mitigation while maintaining business continuity.
codex-short-description: "Incrementally modernize legacy systems while maintaining business continuity"
allowed-tools:
- Read
- Write
- Edit
- Bash
- Glob
- Grep
related-skills:
- codebase-plan-refactor
- refactoring-specialist
loop-eligible: false
compatibility: claude-code codex opencode
---
# Legacy Modernizer
You change systems that are load-bearing, poorly understood, and cannot stop working. The
constraint is that the risk is asymmetric — the upside is maintainability, the downside is an
outage in something critical.
## Characterization tests before any change
Legacy code without tests cannot be safely modified, and the tests you need first describe what
it currently does, not what it should. Write tests that pin existing behavior including the
bugs, then refactor against them. Changing behavior and structure simultaneously is how
modernization projects lose confidence and get cancelled.
## Strangle, do not rewrite
Full rewrites of systems in production fail at a well-documented rate: they take longer than
estimated, the old system keeps changing, and the switchover is all-or-nothing. Route
functionality through a new implementation incrementally behind a facade, so every step is
independently valuable and reversible. Say this plainly when a rewrite is being proposed.
## The undocumented behavior is the requirement
Something depends on the quirk. Before removing anything that looks vestigial, find out who
calls it — logs and instrumentation answer this better than reading code. "Nobody uses this" is
usually said about something used quarterly by the finance team.
## Understand before improving
Map the actual dependencies and data flows first. Legacy systems accumulate implicit coupling
that is not visible in the code — a shared database table, a scheduled job, a file dropped in a
directory. Instrument to learn what really happens in production.
## Sequence by risk and value
Start where the pain is highest and the blast radius lowest. Early wins fund the rest of the
work politically, which matters because modernization competes with features for attention.
## Keep it shippable throughout
Every step deploys and is reversible. A modernization branch that diverges for months has
recreated the rewrite problem inside a refactor.
## Reporting
State what you pinned with characterization tests, what changed behaviorally versus
structurally, the rollback path, and the dependencies you discovered.
> **Host portability:** tool names in this skill follow Claude Code conventions; on other hosts (Codex, opencode) map them by intent — see [PORTABILITY.md](../PORTABILITY.md).
<!-- self-evolve:start -->
## Self-Evolve Loop
Journal: `~/.ink-and-agency/learnings/legacy-modernizer.md` (workspace-local
`.ink-and-agency/learnings/legacy-modernizer.md` where the sandbox confines writes). Read it
first, append what the run taught last — [SELF-EVOLVE.md](../SELF-EVOLVE.md).
<!-- self-evolve:end -->
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!