What problem does it solve? Removing old .NET code is hard: consumers depend on undocumented behavior, migrations stall, and zombie code accumulates security debt. This Skill provides a disciplined process for deprecating systems and migrating consumers safely, from the initial decision through final removal. ## Core Features & Use Cases - Deprecation Decision Framework: Structured questions to decide whether to maintain, deprecate, or remove a system, using NuGet download stats, Application Insights telemetry, and maintenance-cost analysis. - Four-Step Migration Process: Build the replacement, announce with a migration guide, migrate consumers incrementally, then remove the old system with verification of zero usage. - Migration Patterns: Strangler pattern with canary traffic, adapter pattern bridging sync-to-async APIs (with deadlock warnings for UI threads), and feature-flag migration using IOptionsMonitor, including EF Core dual-write schema migrations. - Use Case: You need to retire a legacy synchronous TaskService in favor of an async ITaskService. The Skill walks you through marking the old type [Obsolete], shipping a Roslyn analyzer code fix, migrating DI registrations, and unlisting the old NuGet package. ## Quick Start Ask the agent to plan the deprecation of a legacy service or NuGet package and produce a migration guide with incremental rollout steps.