Skip to content
Back to skills

Deprecation And Migration

ASecurity

Code-as-liability mindset, compulsory vs advisory deprecation, migration patterns, zombie code removal. Use when removing old systems, migrating users, or sunsetting features.

  • 8 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added May 27, 2026
documentationgoapidocumentation

Works with

  • api

Security analysis

A100/100

Scanned September 6, 2026

npx -y skills add v1truv1us/ai-eng-system --skill deprecation-and-migration --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Deprecation And Migration?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Deprecation And Migration
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/v1truv1us-deprecation-and-migration/badge)](https://www.skillsdirectory.com/skills/v1truv1us-deprecation-and-migration)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: deprecation-and-migration
description: Code-as-liability mindset, compulsory vs advisory deprecation, migration patterns, zombie code removal. Use when removing old systems, migrating users, or sunsetting features.
---

# Deprecation and Migration

## Overview

Treat code as a liability that must justify its existence. Deprecate deliberately, migrate incrementally, and remove dead code systematically. Every line of code you remove is a line you never have to maintain again.

## When to Use

- Removing old APIs or features
- Migrating users from one system to another
- Cleaning up unused code
- Replacing deprecated dependencies

## Deprecation Types

### Advisory Deprecation

- Mark as deprecated in documentation and type annotations
- Log warnings when the deprecated path is used
- Provide a clear migration path
- Set a timeline for removal

### Compulsory Deprecation

- Add runtime warnings that cannot be silenced
- Set a hard removal date
- Communicate the timeline to all affected teams
- Provide automated migration tools if possible

## Migration Patterns

### Strangler Fig

Build the new system alongside the old:
1. Route new traffic to the new system
2. Migrate existing traffic incrementally
3. Remove the old system once all traffic has migrated

### Parallel Run

Run both systems simultaneously:
1. Send traffic to both systems
2. Compare outputs for consistency
3. Switch over once confidence is established
4. Remove the old system

### Feature Flag Cutover

Use feature flags to control migration:
1. Deploy the new system behind a flag
2. Enable for internal users first
3. Enable for a percentage of external users
4. Enable for all users
5. Remove the flag and old code

## Zombie Code Removal

Identify and remove code that is no longer used:
- Search for unreachable exports
- Check for unreferenced files
- Look for dependencies that are imported but never called
- Remove with confidence when tests cover the remaining paths

## Process

### Step 1: Identify What to Deprecate

- Audit usage of the old system
- Identify all dependents
- Assess migration complexity

### Step 2: Communicate the Plan

- Document the deprecation timeline
- Provide migration guides
- Announce through appropriate channels

### Step 3: Implement Migration Path

- Add deprecation warnings
- Provide migration tools or scripts
- Update documentation

### Step 4: Remove the Old System

- Verify all consumers have migrated
- Remove the deprecated code
- Clean up related configuration and documentation

## Common Rationalizations

| Rationalization | Reality |
|---|---|
| "Old code does not hurt anything" | Dead code increases cognitive load, maintenance burden, and binary size. |
| "Someone might be using this" | Usage audits and deprecation windows address this. Ship it or remove it. |
| "Migration is too disruptive" | Gradual migration patterns minimize disruption. Sudden breakage maximizes it. |

## Verification

- [ ] Deprecation timeline is documented and communicated
- [ ] Migration path is clear and tested
- [ ] All consumers have migrated before removal
- [ ] Old code, configuration, and documentation are removed

## Anti-Rationalization Table

| Excuse | Counter |
|--------|---------|
| "Old code doesn't hurt anything" | Dead code increases cognitive load, maintenance burden, and binary size. |
| "Someone might be using this" | Usage audits and deprecation windows address this. Ship it or remove it. |
| "Migration is too disruptive" | Gradual migration patterns minimize disruption. Sudden breakage maximizes it. |
| "I'll deprecate it but never remove it" | Deprecation without removal is just documentation. The goal is removal. |
| "The migration tool is too much work" | Manual migration is slower and more error-prone. Automate where possible. |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.