deprecation-and-migration

Plans and executes deprecation of legacy systems and zero-downtime database schema migrations.

Updated Sep 17, 2026
One-click install
npx skills add https://github.com/authrain-cloud-abdullahformuli/agent-skills --skill deprecation-and-migration-authrain-cloud-abdullahformuli
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: deprecation-and-migration
Source: https://github.com/authrain-cloud-abdullahformuli/agent-skills/tree/main/skills/deprecation-and-migration
Command: npx skills add https://github.com/authrain-cloud-abdullahformuli/agent-skills --skill deprecation-and-migration-authrain-cloud-abdullahformuli

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Removing old systems, APIs, and features is risky because consumers depend on undocumented behaviors, and in-place database schema changes break running code during rollouts. This Skill provides a disciplined process for deprecating systems, migrating consumers safely, and evolving production schemas without downtime. ## Core Features & Use Cases - Deprecation Decision Framework: Evaluate whether to maintain or sunset a system by quantifying consumers, migration cost, and ongoing maintenance cost, with advisory vs compulsory deprecation guidance. - Migration Patterns: Apply the Strangler pattern, Adapter pattern, and feature-flag cutovers to move consumers incrementally from old implementations to replacements. - Expand/Contract Schema Migrations: Rename or drop database columns in production through additive phases (expand, dual-write, backfill, contract) so old and new code stay valid at every deploy. - Use Case: You need to rename a name column to full_name in a live Postgres database. The Skill walks you through adding the 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 deprecation and migration path for your legacy service or to design an expand/contract migration for renaming a production database column.

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 batches, switch reads to the new column, then drop the old column in a separate later deploy. Never rename a column in place, because old and new code run simultaneously during rollout.

How do I deprecate an API or service that still has active users?

First build a production-proven replacement, then announce the deprecation with a migration guide and tooling. Migrate consumers incrementally using the Strangler pattern or feature flags, and only remove the old system after metrics confirm zero active usage.

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 should a schema change and its code change ship in separate deploys?

During a rollout, old and new code versions run at the same time, so coupling a schema change to a code change means one version queries a column that does not exist. Shipping additive changes first and destructive changes last keeps both code versions valid at every step.

When should I not deprecate a legacy 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 removal requires verifying zero active consumers.