backstage-upgradelisted
Install: claude install-skill bendaamerahmed/backstage-idp-plugin
# Upgrade a Backstage monorepo
Move a repo from its current Backstage release line to a target line without a broken
`main`. The CLI moves versions; the app code, config and Dockerfile are yours to move.
## Preconditions
- `backstage.json` at the repo root read — it holds the app's current release line
(`{"version": "1.x.y"}`). If missing, derive the line from `@backstage/core-components`
in `packages/app/package.json`.
- Baseline green on a clean tree: `yarn install --immutable`, `yarn tsc:full`,
`yarn backstage-cli repo lint`, `yarn backstage-cli repo test`. A red baseline makes
every later failure unattributable — return BLOCKED.
- Repo generation known (NFS vs legacy frontend, new vs legacy backend) — it decides
which Upgrade Helper hunks apply. Run `backstage-repo-discovery` if unsure.
- Known: yarn version (`yarn -v`; the Backstage yarn plugin needs ≥ 4.1.1), whether
`"backstage:^"` version specifiers are in use, root `engines.node`, and the local
Node major. Supported Node is exactly two adjacent even majors — currently 22 and 24.
- A branch. Never upgrade on `main`.
## Procedure
1. **Record the starting point.** `cat backstage.json`; `yarn backstage-cli info` for
installed Backstage package, Node and CLI versions. List every non-`@backstage`
ecosystem dependency (`@backstage-community/*`, `@roadiehq/*`, `@janus-idp/*`,
`@spotify/*`) — the bump does not touch them by default.
2. **Choose the target.** Default to the latest `main` release lin