deprecation-and-migration

Plans and executes deprecation of legacy systems with incremental migration patterns.

Updated Jul 9, 2026
One-click install
npx skills add https://github.com/assafmanor/waypoint --skill deprecation-and-migration-assafmanor
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: deprecation-and-migration
Source: https://github.com/assafmanor/waypoint/tree/main/.claude/skills/deprecation-and-migration
Command: npx skills add https://github.com/assafmanor/waypoint --skill deprecation-and-migration-assafmanor

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Engineering teams accumulate legacy systems, zombie code, and duplicate implementations that silently grow maintenance cost, security risk, and onboarding complexity. This Skill provides a disciplined process for deciding what to deprecate, migrating consumers safely, and removing old code without breaking dependents. ## Core Features & Use Cases - Deprecation Decision Framework: Structured questions to quantify usage, migration cost, and maintenance cost before committing to removal, plus advisory vs compulsory deprecation guidance. - Migration Patterns: Step-by-step playbooks for the Strangler pattern, Adapter pattern, feature-flag cutovers, and expand/contract database schema migrations with rollback-safe phases. - Zombie Code & Red Flag Detection: Checklists to identify unmaintained code with active consumers and common rationalizations that stall removal. - Use Case: When replacing a legacy task service, use this Skill to announce the deprecation with a migration guide, migrate consumers incrementally behind feature flags, verify zero remaining usage, and fully remove the old code, tests, and docs. ## Quick Start Ask the assistant to plan the deprecation of a legacy API or service, including a migration guide and a safe removal checklist for all consumers.

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 or service without breaking consumers?▼

Deprecate incrementally: build a production-proven replacement first, publish a migration guide with concrete steps, migrate consumers one at a time, and verify zero active usage via metrics and logs before removing the old code. Default to advisory deprecation unless maintenance cost or risk justifies a hard deadline.

How to rename a database column without downtime?▼

Use the expand/contract pattern instead of renaming in place. Add the new nullable column, 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 once no code references it.

What is the difference between advisory and compulsory deprecation?▼

Advisory deprecation uses warnings and documentation so users migrate on their own timeline, while compulsory deprecation sets a hard removal deadline. Compulsory deprecation is reserved for security issues or unsustainable maintenance cost and requires providing migration tooling and support.

When should I use the Strangler pattern for migration?▼

Use the Strangler pattern when replacing a system that serves live traffic. Run old and new systems in parallel, route traffic incrementally from old to new (canary at 10%, then 50%, then 100%), and remove the old system only when it handles zero traffic.

What is zombie code and how should I handle it?▼

Zombie code is unmaintained code with no owner that still has active consumers, often showing no commits in 6+ 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 a schema migration and its code change ship in separate deploys?▼

During a rollout, old and new code run simultaneously, so a column renamed or dropped in the same deploy leaves one version querying a column that does not exist. Shipping additive changes first and destructive changes last keeps both code versions valid at every step.