deprecation-and-migration

Plans deprecation and incremental migration of legacy systems, APIs, and database schemas.

Updated Aug 22, 2026
One-click install
npx skills add https://github.com/MSC72m/DevForge --skill deprecation-and-migration-msc72m
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: deprecation-and-migration
Source: https://github.com/MSC72m/DevForge/tree/main/skills/deprecation-and-migration
Command: npx skills add https://github.com/MSC72m/DevForge --skill deprecation-and-migration-msc72m

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Teams are good at building systems but poor at removing them, leaving zombie code, duplicate implementations, and risky schema changes that break during deploys. This Skill provides a disciplined process for deciding what to deprecate, migrating consumers safely, and executing zero-downtime database schema changes. ## Core Features & Use Cases - Deprecation Decision Framework: Quantify consumer count, migration cost, and maintenance cost before choosing advisory or compulsory deprecation. - Migration Patterns: Apply the Strangler pattern, Adapter pattern, and feature-flag cutovers to move consumers incrementally from old to new systems. - Expand/Contract Schema Migrations: Rename or drop production columns in additive phases (expand, dual-write, backfill, contract) so old and new code stay valid at every deploy. - Use Case: When renaming a name column to full_name in production, follow the five-phase expand/contract sequence with batched backfills and a tested down migration instead of a risky in-place rename. ## Quick Start Use the deprecation-and-migration skill to plan a safe migration from our legacy task service to the new implementation, including a zero-downtime schema change.

Frequently Asked Questions about deprecation-and-migration

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I rename a database column in production without downtime?▼

Use the expand/contract pattern: add the new column as nullable, dual-write both columns, backfill existing rows in throttled batches, switch reads to the new column, then drop the old column in a separate later deploy. Never rename in place, because old and new code run simultaneously during rollout.

How to deprecate an API or system that users still depend on?▼

First build a production-proven replacement covering all critical use cases, then announce with documentation and migration tooling. Migrate consumers incrementally, verify zero active usage via metrics and logs, and only then remove the old code, tests, and configuration.

What is the difference between advisory and compulsory deprecation?▼

Advisory deprecation uses warnings and documentation so users migrate on their own timeline when the old system is stable. Compulsory deprecation sets a hard removal deadline and is reserved for security issues or unsustainable maintenance cost, and it requires providing migration tooling and support.

When should I use the Strangler pattern vs an adapter for migration?▼

Use the Strangler pattern when routing traffic incrementally from an old system to a new one until the old handles zero percent. Use an adapter when consumers must keep the old interface while you swap the backend implementation underneath.

Why do database migrations fail during deployment rollouts?▼

Failures happen when a schema change ships in the same deploy as the code depending on it, so one version queries a column that does not exist. The fix is additive phases where old and new code are both valid at every step, plus a tested down migration before merging.

What are the limitations of keeping legacy code just in case?▼

Unused code accumulates security debt, dependency updates, and onboarding overhead that typically exceeds the cost of rebuilding it later. Code that nobody owns but everybody depends on should either get an assigned maintainer or a concrete deprecation plan.