deprecation-programlisted
Install: claude install-skill Amey-Thakur/AI-SKILLS
# Deprecation program
A deprecation announcement changes nobody's behavior. Teams migrate the week
their code breaks, not the week you ask, so a "deprecated" label with no
telemetry, no tooling, and no off switch becomes a maintenance tax you pay
indefinitely. Run it as a program with a burndown and a real end date, not a
wiki page and good intentions.
## Method
1. **Instrument the surface before you say a word.** Add per-caller telemetry:
which team, service, and code path hits it, and at what rate. Tagged access
logs or OpenTelemetry spans beat an aggregate counter, because "2M calls a
day" names nobody to email. You cannot deprecate a caller you cannot identify.
2. **Publish a notice carrying a hard date and the replacement.** State the
exact date the system stops answering, the migration target, and the reason.
Emit the warning at the call site too: a `Sunset` response header (RFC 8594),
a `@Deprecated` annotation, a startup log line. A notice with no date is a wish.
3. **Ship the migration, not just the docs.** Write the codemod (jscodeshift,
OpenRewrite, a scripted sed pass), the shim, or the adapter that does the
mechanical rewrite. Every hour of toil left on a caller multiplies by the
caller count; a codemod serving three teams has already paid for itself.
4. **Close the front door the day you announce.** Block new adopters at once: a
lint rule, a denied build dependency, a registration flag that refuses fresh
integrations. A "depre