deprecation-and-migration

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

Updated Sep 15, 2026
One-click install
npx skills add https://github.com/Qiuyi-Hong/addyosmani-skills --skill deprecation-and-migration-qiuyi-hong
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: deprecation-and-migration
Source: https://github.com/Qiuyi-Hong/addyosmani-skills/tree/main/skills/deprecation-and-migration
Command: npx skills add https://github.com/Qiuyi-Hong/addyosmani-skills --skill deprecation-and-migration-qiuyi-hong

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Removing old systems, APIs, and features is risky: hidden consumers depend on undocumented behavior, and in-place database changes break rolling deploys. This Skill provides a disciplined process for deprecating code and migrating users safely, including zero-downtime schema changes. ## Core Features & Use Cases - Deprecation Decision Framework: Structured questions to decide whether to maintain, sunset, or replace a system, plus advisory vs compulsory deprecation guidance. - Migration Patterns: Strangler pattern, adapter pattern, and feature-flag migration for moving consumers incrementally from old to new implementations. - Expand/Contract Schema Migrations: Step-by-step process for renaming or dropping database columns without downtime, including dual-writes, batched backfills, and tested down paths. - Use Case: You need to rename a name column to full_name in production. 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 Ask the agent to plan a safe migration for renaming a production database column or deprecating a legacy API, and it will produce a phased expand/contract or strangler-pattern plan.

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 without downtime?

Use the expand/contract pattern: add the new column as nullable, dual-write both columns, backfill existing rows in 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 rollouts.

How do I deprecate an API or legacy system safely?

First build a production-proven replacement, then announce deprecation with a migration guide and tooling. Migrate consumers incrementally using the strangler pattern or feature flags, verify zero active usage via metrics and logs, and only then remove the old code, tests, and documentation.

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.

Why do database migrations fail during rolling deploys?

Failures happen when a schema change ships in the same deploy as the code depending on it: during rollout, old and new code run together, and one queries a column that does not exist. The fix is additive phases where both code versions are valid against the schema at every step.

When should I not deprecate a system?

Do not deprecate when the system still provides unique value, when no working replacement exists, or when migration cost clearly exceeds the ongoing maintenance cost. Also avoid deprecating without measuring current usage, since hidden consumers may depend on undocumented behavior.