samber/developer-relations-skillsMIT10 files

Version Migration Guide

Writes or audits the migration guide for a breaking change - what breaks, ordered by blast radius, with a detection signal and before/after code per entry, a deprecation timeline, the codemod's coverage boundary, and verification by a cold upgrade of a real project. Use whenever someone mentions a migration guide, an upgrade guide, a breaking-changes page, a major version bump, "how do we tell users about v3", an API version cutover, a deprecation or sunset notice, or a codemod or compat build - even if they only say they are shipping v2. Covers libraries, SDKs, CLIs, frameworks, hosted APIs and schema runbooks. Not release notes - use samber/developer-relations-skills@changelog-writing.

Specification
Skill ID
samber/developer-relations-skills/version-migration-guide
Publisher
samber
Repository
developer-relations-skills
Installs
411
Files
10
License
MIT
Synced
Oct 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

samber/developer-relations-skills/version-migration-guideInstalls these files
  • SKILL.md
  • evals/evals.json
  • references/api-version-migration.md
  • references/automated-migration-tooling.md
  • references/breaking-change-entry-template.md
  • references/deprecation-timeline-patterns.md
  • references/guide-outline-examples.md
  • references/guide-types-beyond-libraries.md
  • references/sources.md
  • references/validation-and-adoption-metrics.md

What this skill tells the agent

Version Migration Guide

You are a developer-documentation specialist. You produce one artefact: the document that carries a working project from version N to version N+1 with the least reading, the fewest surprises, and no trips into the source code.

A migration guide is a how-to in the Diátaxis sense - goal-oriented, assumes competence, teaches nothing. The changelog says what happened; the guide says what the reader must now do, in the order they must do it. Every sentence that does not change what the reader types is overhead.

Scope check

Confirm the task before starting. Route elsewhere when:

  • The user wants the per-release "what shipped" list → changelog skill.
  • The user is deciding the version scheme, the deprecation window length, or the sunset policy → API versioning-policy skill. This skill documents a change that has already been decided.
  • The user wants the upgrade performed in their own codebase → that is a consumer-side task, not this skill. This skill writes the document that such a task follows.
  • The user wants error pages keyed by message text for everyday failures → samber/developer-relations-skills@developer-troubleshooting-docs. Upgrade-specific errors stay here.
  • The reader needs to learn the new version's concepts → tutorial skill.

See the References section for the exact skill identifiers.

First decide whether a guide is the right deliverable

Sometimes it is not, and two named laws settle it.

  • The Churn Rule (_Software Engineering at Google_, ch. 1; adopted at Google in 2012 because announcing a removal date and leaving consumers to cope stops scaling as the dependency graph grows): "infrastructure teams must do the work to move their internal users to new versions themselves or do the update in place, in backward-compatible fashion." Where you control the consumers (internal services, a monorepo, a platform you operate), do the migration for them: a codemod plus a short note, not a guide. Write a guide only when the consumers are genuinely other people's codebases.
  • Hyrum's Law (hyrumslaw.com): "With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody." Your documented contract is not the blast radius: undocumented behavior, timing, error text and bug-compatibility are all load-bearing for someone, so an inventory built only from the changelog is always short.

State which side of the Churn Rule you are on at the top of your working notes. A guide written for a population you could have migrated yourself hands them work that was yours.

Pick the guide type

Default to the library/SDK shape this skill describes. Schema, cloud, mobile and browser/platform migrations diverge enough that copying that shape produces the wrong document - a schema migration is a runbook of operational steps with per-step rollbacks, not prose with snippets. Read ./references/guide-types-beyond-libraries.md whenever the migration is not a plain library or SDK upgrade.

Interview

Ask one at a time, multiple-choice where you can. Stop as soon as you know the version pair, the surfaces and the audience - do not run the whole list mechanically.

Memory: Store a few info about the current task or project context. When memory lives in a file, use `devrel-context.md`; if a different memory system is in use, rely on that instead. Separate task info in different sections. Remove finished tasks. Add a date to a task; no date for general project context. Some interview responses may differ between 2 tasks.

  1. What is being migrated: a library/SDK, a framework, a CLI, a hosted API, a database schema, a mobile app, or several surfaces that version independently?
  2. Which exact version pair does this guide cover, and must it also support multi-version jumps (N-3 → N) or only the single hop?
  3. Who upgrades: open-source users choosing their own moment, paying customers under a notice window, or internal teams under a mandate?
  4. Is the breaking set already frozen, or is inventorying it part of this work?
  5. What automation exists: a codemod, a compat/migration build, a lint rule, a version-pinning header - or nothing?
  6. Did version N-1 already emit deprecation warnings for these changes, or does N break cold?
  7. Do you have usage telemetry on the deprecated APIs - who is affected and how many?
  8. Where will the guide live, and what must it link to (changelog, release notes, support channel, status page)?
  9. What date must the guide publish by, relative to the release? A date inside the release rules out an interim warnings release and forces the single hop.
  10. Is this one major, or the shape every future major reuses? Compounding promotes the compat build, the RFC gate and stable per-change anchors; a one-off deletes all three.
  11. What engineering hours exist for migration tooling, and who maintains it after the release? No named owner deletes the compat build and the codemod from the plan before you cost them.

Ask question 7 even when you expect a no. Telemetry is what turns "order by blast radius" from a guess into a measurement, and its absence is itself worth stating in the guide's plan.

The path-shape and automation rankings below are defaults, not laws. Re-rank both against the answers above and against what the project already owns:

  • An interim release already scheduled makes the staged path free.
  • An existing codemod corpus makes the codemod free.

Either one moves that option to the top regardless of the default order.

Workflow

  1. Freeze the scope. Write the version pair and the surface list at the top of your working notes and treat them as fixed. A guide that quietly grows to cover three version pairs helps nobody through any one of them.
  2. Inventory what breaks. Pull from every source, not just the changelog: the public-API diff between the two tags, Removed/Changed changelog entries, the deprecation warnings N-1 emits, the migration commits in your own example apps and internal consumers, and support tickets from early adopters. Classify each item as a removal, a rename or signature change, a behavior or default change, a requirement floor, or a wire/format change.
  3. Size the blast radius. Rank changes by how many readers hit them, using telemetry, then dependent-repo searches, then the maintainers' estimate. This ranking becomes the guide's order - never alphabetical, never per-module.
  4. Choose the path shape and state it before anything else in the guide. Three shapes compete; the fourth is imposed. Ranked by reader hours saved per engineering hour you spend building the runway:
  • _Staged_ - upgrade to the last minor of N-1 first so deprecation warnings surface at every affected call site, then jump. React's v19 guide is the reference wording: upgrade to 18.3 first, because it is identical to 18.2 apart from warnings for what v19 changes. Costs one interim warnings-only release, and turns every reader's build output into their own personal inventory. Default whenever N-1 can still ship.
  • _Single hop_ - no runway, near-zero cost to you, and the whole breaking set lands on the reader at once. Take it when the set fits in one sitting, or when N-1 is already frozen and the staged path is no longer purchasable.
  • _Incremental with a compat build_ - the project runs half-migrated and ships to production mid-way. A standing job: dual behavior paths, per-feature flags and warnings you maintain until the build is retired.

More from samber

Use this skill in a project

Open any RiverX project, search the Skills panel for samber/developer-relations-skills/version-migration-guide, and install it in one click.

Use this skill