deprecation-and-migration

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

665|3|Updated Sep 12, 2026
One-click install
npx skills add https://github.com/rizqinrr/viserys-agent --skill deprecation-and-migration-rizqinrr
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: deprecation-and-migration
Source: https://github.com/rizqinrr/viserys-agent/tree/main/skills/deprecation-and-migration
Command: npx skills add https://github.com/rizqinrr/viserys-agent --skill deprecation-and-migration-rizqinrr

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Removing old systems, APIs, and database columns is risky because consumers depend on undocumented behaviors, and in-place schema changes break rolling deploys. This Skill provides a structured process for deciding what to deprecate, migrating consumers safely, and removing code without downtime. ## 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 implementations. - Expand/Contract Schema Migrations: Rename or drop database columns in production using additive phases, dual-writes, batched backfills, and tested down migrations. - 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 Use the deprecation-and-migration skill to plan a zero-downtime migration renaming the users.name column to full_name in production.

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, because old and new code run simultaneously during rollout.

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

First build a production-proven replacement covering all critical use cases, then publish a deprecation notice with a migration guide and tooling. Migrate consumers incrementally, verify zero active usage with 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.

Why did my deploy break after renaming a column in one migration?

During a rolling deploy, old and new code run at the same time, so one version queries a column that no longer exists. The fix is to never change a column in place: ship additive changes first and destructive drops in their own deploy after no code references the old shape.

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

Use the Strangler pattern when you can route traffic incrementally between old and new systems until the old one handles zero percent. Use an adapter when consumers must keep the old interface while you swap the backend implementation underneath.

What should I do with zombie code that nobody owns?

Zombie code cannot stay in limbo: either assign an owner who maintains it properly, or deprecate it with a concrete migration plan. Signs include no commits in six months with active consumers, unfixed failing tests, and unpatched vulnerable dependencies.