Source profileQuality 86/100

OutlineDriven/odin-claude-plugin/skills/deprecate-and-migrate/SKILL.md

deprecate-and-migrate

Use when removing old code, migrating users to a new implementation, or deciding whether to maintain or sunset something.

Source repository stars
34
Declared platforms
0
Static risk flags
0
Last source update
2026-08-05
Source checked
2026-08-05

Decision brief

What it does—and where it fits

Use when removing old code, migrating users to a new implementation, or deciding whether to maintain or sunset something.

Best for

  • Replacing an old system, API, or library with a new one
  • Sunsetting a feature that's no longer needed
  • Consolidating duplicate implementations

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/OutlineDriven/odin-claude-plugin --skill "skills/deprecate-and-migrate"
Safe inspection promptEditorial

Inspect the Agent Skill "deprecate-and-migrate" from https://github.com/OutlineDriven/odin-claude-plugin/blob/cc063c9097c00661b752b3bfe41c381ad4c101fb/skills/deprecate-and-migrate/SKILL.md at commit cc063c9097c00661b752b3bfe41c381ad4c101fb. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    The Migration Process

    No deprecation without a working alternative. The replacement must:

    Cover all critical use cases of the old systemHave documentation and a migration guideBe proven in production, not merely argued to be theoretically better
  2. 02

    Step 1: Build the Replacement

    No deprecation without a working alternative. The replacement must:

    Cover all critical use cases of the old systemHave documentation and a migration guideBe proven in production, not merely argued to be theoretically better
  3. 03

    Step 2: Announce and Document

    Review the “Step 2: Announce and Document” section in the pinned source before continuing.

    Review and apply the “Step 2: Announce and Document” source section.
  4. 04

    Step 3: Migrate Incrementally

    Migrate consumers one at a time, not all at once. For each consumer:

    Migrate consumers one at a time, not all at once. For each consumer:The Churn Rule: If you own the infrastructure being deprecated, you own migrating its users, or you ship backward-compatible updates that require no migration.
  5. 05

    Step 4: Remove the Old System

    Only after all consumers have migrated:

    Only after all consumers have migrated:

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score86/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars34SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
OutlineDriven/odin-claude-plugin
Skill path
skills/deprecate-and-migrate/SKILL.md
Commit
cc063c9097c00661b752b3bfe41c381ad4c101fb
License
Apache-2.0
Collected
2026-08-05
Default branch
main
View the original SKILL.md

Deprecation and Migration

Overview

Deprecation removes code that no longer earns its cost. Migration moves consumers from the old path to the new one without breaking them.

Building is the easy half. Removal is the half most teams skip. This skill covers removal.

When to Use

  • Replacing an old system, API, or library with a new one
  • Sunsetting a feature that's no longer needed
  • Consolidating duplicate implementations
  • Removing dead code that nobody owns but everybody depends on
  • Planning the lifecycle of a new system (deprecation planning starts at design time)
  • Deciding whether to maintain a legacy system or invest in migration

Core Principles

Code Is a Liability

Every line costs maintenance: tests, docs, security patches, dependency updates, and cognitive load on nearby work. Functionality is what users buy; the code is what you pay. When the same functionality fits in less code, less state, or a cleaner interface, retire the old code.

Hyrum's Law Makes Removal Hard

Past a certain consumer count, every observable behavior gets depended on, including bugs, timing quirks, and undocumented side effects. Deprecation therefore needs active migration rather than just an announcement. A consumer cannot "just switch" while it relies on behavior the replacement does not reproduce.

Deprecation Planning Starts at Design Time

When building something new, ask how it gets removed in three years. Clean interfaces, feature flags, and a small surface keep a system removable. Leaked implementation details make it permanent.

The Deprecation Decision

Answer these before deprecating anything:

1. Does this system still provide unique value?
   → If yes, maintain it. If no, proceed.

2. How many users/consumers depend on it?
   → Quantify the migration scope.

3. Does a replacement exist?
   → If no, build the replacement first.

4. What's the migration cost for each consumer?
   → If trivially automated, do it. If manual and high-effort, weigh against maintenance cost.

5. What's the ongoing maintenance cost of NOT deprecating?
   → Security risk, engineer time, opportunity cost of complexity.

Compulsory vs Advisory Deprecation

TypeWhen to UseMechanism
AdvisoryMigration is optional, old system is stableWarnings, documentation, nudges. Users migrate on their own timeline.
CompulsoryOld system has security issues, blocks progress, or maintenance cost is unsustainableHard deadline. Old system will be removed by date X. Provide migration tooling.

Default to advisory. Compulsory is justified only when maintenance cost or risk forces the issue, and it obligates you to ship migration tooling, documentation, and support. A deadline alone is not a migration.

The Migration Process

Step 1: Build the Replacement

No deprecation without a working alternative. The replacement must:

  • Cover all critical use cases of the old system
  • Have documentation and a migration guide
  • Be proven in production, not merely argued to be theoretically better

Step 2: Announce and Document

## Deprecation Notice: OldService

**Status:** Deprecated as of 2025-03-01
**Replacement:** NewService (see migration guide below)
**Removal date:** Advisory; no hard deadline yet
**Reason:** OldService requires manual scaling and lacks observability.
            NewService handles both automatically.

### Migration Guide
1. Swap the old client dependency for the new one — e.g. `old-service` → `new-service`
   as the import in a TypeScript/JS project, the package path in a Go import, or the
   module in a Python `import`.
2. Update configuration (see examples below).
3. Run the migration verification check shipped with the replacement.

Step 3: Migrate Incrementally

Migrate consumers one at a time, not all at once. For each consumer:

1. Identify all touchpoints with the deprecated system
2. Update to use the replacement
3. Verify behavior matches (tests, integration checks)
4. Remove references to the old system
5. Confirm no regressions

The Churn Rule: If you own the infrastructure being deprecated, you own migrating its users, or you ship backward-compatible updates that require no migration.

Step 4: Remove the Old System

Only after all consumers have migrated:

1. Verify zero active usage (metrics, logs, dependency analysis)
2. Remove the code
3. Remove associated tests, documentation, and configuration
4. Remove the deprecation notices
5. Celebrate — removing code is an achievement

Migration Patterns

Read references/migration-patterns.md when the migration needs a formal cutover strategy rather than a single incremental switch — it covers the Strangler Pattern (phased traffic cutover with a canary), the Adapter Pattern (new implementation behind the old interface, with TypeScript and Python examples), and Feature Flag Migration (cohort-gated toggle, with Go and TypeScript examples). Skip it for a simple one-step swap with no parallel-run phase.

Zombie Code

Zombie code is code that nobody owns but everybody depends on. It is unmaintained, has no owner, and accumulates security vulnerabilities and compatibility rot. Signs:

  • No commits in 6+ months but active consumers exist
  • No assigned maintainer or team
  • Failing tests that nobody fixes
  • Dependencies with known vulnerabilities that nobody updates
  • Documentation that references systems that no longer exist

Response: Assign an owner and maintain it properly, or deprecate it with a concrete migration plan. Zombie code does not stay in limbo. It gets investment or it gets removed.

Common Rationalizations

RationalizationReality
"It still works, why remove it?"Working code that nobody maintains accumulates security debt and complexity. The maintenance cost grows silently.
"Someone might need it later"If it's needed later, rebuild it. Keeping unused code "just in case" costs more than rebuilding.
"The migration is too expensive"Compare migration cost to two or three years of maintenance cost. Migration is usually cheaper long-term.
"We'll deprecate it after we finish the new system"Deprecation planning starts at design time. By the time the new system ships, you'll have new priorities. Plan now.
"Users will migrate on their own"They won't. Provide tooling, documentation, and incentives, or do the migration yourself (the Churn Rule).
"We can maintain both systems indefinitely"Two systems doing the same job is double the maintenance, testing, documentation, and onboarding cost.

Red Flags

  • "Soft" deprecation that's been advisory for years with no progress
  • New features added to a deprecated system (invest in the replacement instead)
  • Deprecation without measuring current usage

Verification

After completing a deprecation:

  • Replacement is production-proven and covers all critical use cases
  • Migration guide exists with concrete steps and examples
  • All active consumers have been migrated (verified by metrics/logs)
  • Old code, tests, documentation, and configuration are fully removed
  • No references to the deprecated system remain in the codebase
  • Deprecation notices are removed (they served their purpose)

Alternatives

Compare before choosing

Computed 10043,034

coreyhaines31/marketingskills

ab-testing

When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program

Computed 100165

JasonColapietro/suede-creator-skills

suede-ab-testing

Suede-owned experimentation discipline for hypotheses, sample sizing, test duration, significance, and repeatable experiment programs. Use when comparing variants, deciding whether a result is reliable, or building an experiment backlog and cadence. NOT FOR: analytics instrumentation (use suede-analytics), post-click conversion diagnosis (use suede-site-alchemy), or writing the variant copy itself (use suede-copy).

Computed 1007

narrative-io/narrative-skills-marketplace

design-analysis

Translate a fuzzy analytical question into a rigorous investigation plan. Interrogates the ask, grounds the plan in the available data dictionary, applies analytical best practices, and produces a structured brief of query specifications for a downstream query-writing skill. Plans, does not write SQL. Use when: "why did X drop", "is there a relationship between A and B", "who are our highest-value customers", "what's driving the change in Y", "investigate this trend", "design an analysis for", "

Computed 1007

event4u-app/agent-config

existing-ui-audit

Use BEFORE writing or editing any non-trivial UI — inventories components, design tokens, shadcn primitives, and reusable patterns into state.ui_audit. Hard gate for the ui directive set.