planning-safe-refactors
Skill1 starsChanged 3 months agoMITView on GitHub
Use when a structural refactor crosses multiple modules, dependencies, data flows, or deployments and cannot be completed safely as one atomic change without a large blast radius.
In this repository65 other files it gives its agents.
- analyzing-change-blast-radiusSkill
- analyzing-developer-career-opportunitiesSkill
- art-directing-web-interfacesSkill
- assessing-developer-proficiencySkill
- auditing-dependency-riskSkill
- auditing-pixel-perfect-frontendSkill
- bootstrapping-modern-web-appsSkill
- brag-slimSkill
- building-brand-guidelinesSkill
- building-conversion-product-pagesSkill
- building-developer-career-roadmapsSkill
- building-hybrid-game-assetsSkill
- building-premium-nextjs-interfacesSkill
- building-project-showcasesSkill
- building-regression-testsSkill
- building-reliable-node-api-boundariesSkill
- choosing-application-architectureSkill
- craft-premium-motionSkill
- creating-character-sprite-pipelinesSkill
- defining-brand-strategySkill
- designing-action-combatSkill
- designing-developer-portfolio-evidenceSkill
- designing-relational-data-modelsSkill
- designing-software-boundariesSkill
- designing-test-strategiesSkill
- designing-ui-systemsSkill
- designing-visual-identitiesSkill
- documenting-architecture-decisionsSkill
- editing-for-clarity-and-toneSkill
- engineering-gsap-animationsSkill
- evaluating-developer-proficiencySkill
- evolving-postgres-schemas-safelySkill
- humanizing-generated-proseSkill
- implementing-reference-faithful-uiSkill
- investigating-codebase-semanticallySkill
- managing-implementation-slicesSkill
- mapping-existing-codebase-structureSkill
- naming-brands-and-productsSkill
- optimizing-frontend-motion-performanceSkill
- orchestrating-cinematic-web-motionSkill
- planning-codebase-changes-with-evidenceSkill
- planning-engineering-workSkill
- planning-launch-distributionSkill
- planning-written-communicationSkill
- preparing-project-launchSkill
- profiling-postgres-query-performanceSkill
- reconstructing-images-as-threejsSkill
- reviewing-api-securitySkill
- reviewing-apple-platform-interfacesSkill
- reviewing-pull-requestsSkill
- reviewing-web-securitySkill
- selecting-working-methodsSkill
- shipping-github-vercel-changesSkill
- teaching-developer-conceptsSkill
- testing-integration-boundariesSkill
- testing-playable-gamesSkill
- testing-web-applications-end-to-endSkill
- threat-modeling-applicationsSkill
- tracing-code-execution-pathsSkill
- translating-figma-to-nextjsSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 7 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 18
Use controlled dual operation only when justified.
- Distinctive: line 19
Remove legacy code only after all callers and data paths are migrated and the new path has enough evidence in production-like conditions.
- Distinctive: line 26
avoid mixing unrelated cleanup.
- Distinctive: line 31
Use Branch by Abstraction when consumers need to migrate gradually behind a stable abstraction.
- Distinctive: line 33
Do not add an abstraction when the entire change is already small, local, and safely atomic.
- Distinctive: line 36
Before declaring the refactor complete, verify that:
- Distinctive: line 38
no intended caller still reaches the legacy path.
≈ “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
Planning Safe Refactors
Core principle
Preserve behavior while changing structure in small, observable steps. Replace big-bang rewrites with a migration path that keeps the system releasable and gives every slice a rollback or containment strategy.
Refactor plan
- State the target change and the behaviors that must not change. Separate structural goals from feature work.
- Map the blast radius: callers, dependencies, data ownership, runtime flows, tests, deployments, and operational dashboards affected by the change.
- Establish characterization evidence around critical behavior before changing the structure. Add regression tests at the boundary that must remain stable.
- Find or create a seam. Introduce the smallest interface, adapter, routing point, or compatibility layer that lets old and new structures coexist without changing consumers all at once.
- Order migration slices so each one can ship independently. Prefer moving one caller, capability, or data path at a time.
- Define verification and rollback for every slice. State what proves equivalence, which telemetry to inspect, and how to return traffic or callers to the old path.
- Use controlled dual operation only when justified. Feature flags, shadow reads, comparison runs, or compatibility adapters should have an owner and a removal condition.
- Remove legacy code only after all callers and data paths are migrated and the new path has enough evidence in production-like conditions.
Slice quality
A safe slice should:
- have one observable structural objective;
- preserve the external contract or version it intentionally;
- keep main releasable;
- avoid mixing unrelated cleanup;
- identify its verification evidence;
- make the next slice easier rather than creating a second permanent architecture.
Patterns
Use Branch by Abstraction when consumers need to migrate gradually behind a stable abstraction. Use a Strangler Fig approach when a larger legacy capability can be replaced incrementally behind routing or capability boundaries.
Do not add an abstraction when the entire change is already small, local, and safely atomic. Migration scaffolding is temporary complexity and must earn its cost.
Verification
Before declaring the refactor complete, verify that:
- old and new behavior match for the protected contracts;
- no intended caller still reaches the legacy path;
- temporary flags/adapters have an explicit removal decision;
- obsolete code, configuration, metrics, and tests are removed only after migration evidence is complete.
References
- Martin Fowler, Branch by Abstraction: https://martinfowler.com/bliki/BranchByAbstraction.html
- Martin Fowler, Strangler Fig modernization: https://martinfowler.com/articles/2024-strangler-fig-rewrite.html
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.

