deprecation-and-migration

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

Updated Apr 6, 2026
One-click install
npx skills add https://github.com/QT-7274/dotfiles --skill deprecation-and-migration-qt-7274
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: deprecation-and-migration
Source: https://github.com/QT-7274/dotfiles/tree/main/deprecation-and-migration
Command: npx skills add https://github.com/QT-7274/dotfiles --skill deprecation-and-migration-qt-7274

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Removing old systems, APIs, and features is hard because consumers depend on undocumented behaviors, and risky changes like database column renames can cause downtime during rollouts. This Skill provides a disciplined process for deciding what to deprecate, migrating consumers safely, and executing zero-downtime schema changes. ## Core Features & Use Cases - Deprecation Decision Framework: Evaluate whether a system still earns its maintenance cost, quantify migration scope, and choose between advisory and compulsory deprecation. - Migration Patterns: Apply the Strangler pattern, Adapter pattern, and feature-flag cutovers to move consumers incrementally from old to new implementations. - Expand/Contract Schema Migrations: Rename or drop database columns in production without downtime using additive phases, dual-writes, batched backfills, and tested down paths. - Use Case: You need to rename a name column to full_name in a live Postgres database. The Skill walks you through adding the new nullable column, dual-writing, backfilling in batches, switching reads, and dropping the old column in a separate deploy. ## Quick Start Help me plan the deprecation of our legacy task service and migrate all consumers to the new implementation without downtime.

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 from the app, 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.

How do I deprecate an API or service that other teams depend on?▼

First build a production-proven replacement, then announce with a migration guide and tooling, migrate consumers incrementally, and verify zero usage via metrics and logs before removing the old code. Default to advisory deprecation unless maintenance cost or risk justifies a hard deadline.

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 requires providing migration tooling and support.

When should I use the Strangler pattern versus 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 old and new code run simultaneously against incompatible shapes. Decouple them with additive phases, feature flags, and a tested down path for every migration.

What are the limitations of keeping a legacy system running indefinitely?▼

Maintaining two systems doubles testing, documentation, and onboarding cost, while unmaintained zombie code accumulates security vulnerabilities. Either assign an owner and invest in the system, or deprecate it with a concrete migration plan.