deprecation-and-migration

Plan and execute deprecation of legacy systems with incremental migration patterns.

10|1|Updated Jul 29, 2026
One-click install
npx skills add https://github.com/flowing-abyss/obsidian-local-fonts --skill deprecation-and-migration-flowing-abyss
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: deprecation-and-migration
Source: https://github.com/flowing-abyss/obsidian-local-fonts/tree/main/.ai/skills/deprecation-and-migration
Command: npx skills add https://github.com/flowing-abyss/obsidian-local-fonts --skill deprecation-and-migration-flowing-abyss

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Removing old systems, APIs, and features is hard because users depend on existing behavior, and teams lack a disciplined process for sunsetting code safely. This Skill provides a structured framework for deciding what to deprecate, migrating consumers incrementally, and removing legacy code without breaking production. ## Core Features & Use Cases - Deprecation Decision Framework: Quantify consumer count, migration cost, and maintenance burden to choose between advisory and compulsory deprecation. - Migration Patterns: Apply the Strangler pattern, Adapter pattern, feature flag cutovers, and expand/contract database schema migrations with reversible steps. - Zombie Code Remediation: Identify unmaintained code with active consumers and either assign ownership or plan its removal. - Use Case: When renaming a database column, follow the expand/contract workflow — add the new column, dual-write, backfill in batches, switch reads, then drop the old column in a separate deploy — so old and new code stay valid at every step. ## Quick Start Ask the AI to plan a deprecation and migration strategy for a legacy service or database schema change you want to retire.

Frequently Asked Questions about deprecation-and-migration

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

FAQPage Schema
How do I deprecate an API without breaking existing consumers?

Announce deprecation with a documented replacement and migration guide, then migrate consumers incrementally one at a time. Use advisory deprecation by default and reserve compulsory deadlines for cases where maintenance cost or security risk justifies forcing migration.

How to 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 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 rollouts.

What is the strangler pattern for system migration?

The strangler pattern runs old and new systems in parallel while routing traffic incrementally from old to new, typically moving from 0% to a canary percentage to full cutover. Once the old system handles zero traffic, it can be removed safely.

When should I use compulsory vs advisory deprecation?

Default to advisory deprecation with warnings and documentation so users migrate on their own timeline. Use compulsory deprecation with a hard deadline only when the old system has security issues, blocks progress, or has unsustainable maintenance cost, and always provide migration tooling.

What is zombie code and how do I handle it?

Zombie code is unmaintained code with no owner that still has active consumers, often showing no commits in six months and unpatched vulnerable dependencies. Either assign an owner and maintain it properly, or deprecate it with a concrete migration plan — it cannot stay in limbo.

Why should database migrations have a tested down path?

A migration without a tested down path is a deploy you cannot roll back if something fails in production. Write and run the rollback before merging, and keep destructive steps like drops in their own deploy after no code references the old schema.