Skip to content
Back to skills

Manage Breaking Changes And Deprecations

ASecurity

Ship a breaking change without stranding users — run a deprecation lifecycle (warn -> window -> remove), author a migration guide, and pair the removal with a major bump and a BREAKING changelog note. Returns the deprecation plan, the migration guide skeleton, and the support-window statement. Used by `release-and-versioning-engineer` (primary).

  • 7 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
ai-agentsrustrailsapisecurity

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 23, 2026

npx -y skills add mcorbett51090/RavenClaude --skill manage-breaking-changes-and-deprecations --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Manage Breaking Changes And Deprecations?

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

Security grade badge for Manage Breaking Changes And Deprecations
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mcorbett51090-manage-breaking-changes-and-deprecations/badge)](https://www.skillsdirectory.com/skills/mcorbett51090-manage-breaking-changes-and-deprecations)

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: manage-breaking-changes-and-deprecations
description: Ship a breaking change without stranding users — run a deprecation lifecycle (warn -> window -> remove), author a migration guide, and pair the removal with a major bump and a BREAKING changelog note. Returns the deprecation plan, the migration guide skeleton, and the support-window statement. Used by `release-and-versioning-engineer` (primary).
---

# Skill: manage-breaking-changes-and-deprecations

> **Invoked by:** `release-and-versioning-engineer` (primary).
>
> **When to invoke:** "we need to remove/rename this API"; "how long do we support the old way?"; "plan a deprecation".
>
> **Output:** a deprecation lifecycle plan + a migration guide + the support-window statement.

## The deprecation lifecycle (never skip a stage)

1. **Announce + warn (minor release).** Mark the API deprecated in code (runtime warning / `@deprecated` / compiler hint) and in the changelog under **Deprecated**. The warning names the replacement and links the migration guide. *No behavior change yet.*
2. **Hold the window.** Keep both paths working for a published window — at least one minor cycle, ideally a calendar duration users can plan around. State the window; don't leave it implicit.
3. **Remove (next major release).** Delete the old path, bump **MAJOR**, lead the changelog with `**BREAKING:**`, and link the migration guide. Removal only happens in a major — never yank in a minor or patch.

## Authoring the migration guide

A migration guide is before/after, not prose. For each removed/changed surface:

```
### `createClient(url)` -> `createClient({ url })`
**Why:** options object lets us add config without more positional args.
**Before:**  const c = createClient("https://api.example.com")
**After:**   const c = createClient({ url: "https://api.example.com" })
**Automated:** `npx my-codemod v2-client` rewrites call sites.
```

Offer a **codemod** for mechanical changes when the surface is large — it converts an angry upgrade into a one-command upgrade.

## Support-window statement

Publish which versions get fixes and for how long, e.g.:

> The current major and the previous major receive security fixes for 12 months after the next major ships. Older majors are end-of-life.

## Guardrails
- **A breaking change without a deprecation window is a betrayal of trust** — warn first, every time, unless a security fix forces an immediate break (and then say so). See [`../../best-practices/breaking-changes-need-a-deprecation-window.md`](../../best-practices/breaking-changes-need-a-deprecation-window.md).
- **The deprecation warning must name the replacement** — "deprecated" with no path forward is just noise.
- **Below `1.0.0`, breaking in a minor is allowed but still announced** — `0ver` is a promise to break, not a license to surprise.
- **An unstated support window means "forever"** — which you cannot keep. State it.

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…