releaselisted
Install: claude install-skill submtd/shipyard
# Preparing a release
## 1. See what is unreleased
git log --oneline <production>..<integration>
Read the `Unreleased` section of `CHANGELOG.md`.
**Under `trunk` topology, stop here and skip to `keel:ship`.** There is no
integration branch and no release branch or PR - under trunk, `pr-edge`
allows any branch into `production` except the production/integration branch
targeting itself, but a `release/*` branch still has nothing distinct to
carry: every change already reached `production` directly through its own
PR. A release under trunk is just picking a point on `production`'s history,
rolling the changelog there, and tagging it. The rest of this skill (steps
2-5) is the gitflow/github-flow path, where a release branch batches several
integrated changes before they reach `production`.
## 2. Choose the version
Semantic versioning, judged from the changes:
- **patch** - fixes only. Proceed.
- **minor** - anything added. **Confirm with the user first.**
- **major** - anything removed or changed incompatibly. **Confirm with the
user first, and say what breaks.**
Never pick minor or major without asking.
## 3. Create the release branch
git fetch origin
git checkout -b <releasePrefix><version> origin/<integration>
## 4. Roll the changelog
Rename `## Unreleased` to `## <version> - YYYY-MM-DD` and add a fresh empty
`## Unreleased` above it. Use the real current date. Commit it - the
changelog gate (where it applies) compares against `HEAD`, not the working