working-effectively-with-legacy-code skill
Apply Michael Feathers-inspired legacy-code rules when changing hard-to-test code safely with characterization tests, seams, sprout methods, or wrap methods.
Is the working-effectively-with-legacy-code skill safe?
Clean: nothing in its files matched our rules. We read 4 files in the folder on 2026-09-28.
No findings.
Install the working-effectively-with-legacy-code skill
A skill is a folder. Copy it into your agent's skills folder and the agent loads it when the task matches its description.
git clone --depth 1 https://github.com/ciembor/agent-rules-books.git /tmp/agent-rules-books mkdir -p ~/.claude/skills cp -r /tmp/agent-rules-books/working-effectively-with-legacy-code ~/.claude/skills/working-effectively-with-legacy-code
In the Claude apps, zip the folder and upload it from the Skills settings. The folder on GitHub
The instructions your agent would load
SKILL.md as published, without the frontmatter. Read it on GitHub
Working Effectively with Legacy Code Skill
Use this skill when a task involves risky legacy changes, missing tests, characterization tests, seams, dependency breaking, sprout method, wrap method, or incremental risk reduction.
Before making design or code decisions, read and apply working-effectively-with-legacy-code.mini.md. Use working-effectively-with-legacy-code.md only as a deeper reference when the mini rules are not enough for the current legacy-code tradeoff.
More skills from ciembor/agent-rules-books
- Aa-philosophy-of-software-designApply John Ousterhout-inspired software design rules when reducing complexity, designing module boundaries, or reviewing APIs and abstractions.
- Aclean-architectureApply Robert C. Martin-inspired architecture rules when separating business policy from frameworks, databases, UI, or infrastructure details.
- Aclean-codeApply Robert C. Martin-inspired clean code rules when improving readability, naming, function design, responsibilities, or testable everyday code.
- Acode-completeApply Steve McConnell-inspired construction rules when implementing routines, variables, classes, control flow, defensive code, or tests.
- Adesigning-data-intensive-applicationsApply Martin Kleppmann-inspired data-system rules when designing reliability, scalability, consistency, replication, transactions, streams, or schema evolution.
- Adomain-driven-designApply Eric Evans-inspired DDD rules when modeling a complex domain, defining bounded contexts, protecting ubiquitous language, or designing aggregates.
- Adomain-driven-design-distilledApply Vaughn Vernon-inspired lightweight DDD rules when using bounded contexts, subdomains, context maps, and tactical modeling without excess ceremony.
- Aimplementing-domain-driven-designApply Vaughn Vernon-inspired implementation DDD rules when building aggregates, domain events, repositories, application services, or context integrations.
- Apatterns-of-enterprise-application-architectureApply Martin Fowler-inspired enterprise architecture rules when choosing layers, service layers, transaction scripts, domain models, repositories, mappers, or DTOs.
- ArefactoringApply Martin Fowler-inspired refactoring rules when improving existing code structure while preserving observable behavior.
- Arefactoring-guruApply Refactoring.Guru-inspired rules when diagnosing code smells, choosing refactoring techniques, and stopping cleanup before uncontrolled redesign.
- Arelease-itApply Michael T. Nygard-inspired production reliability rules when designing failure handling, timeouts, retries, circuit breakers, observability, or deployment behavior.