* test(ship): failing-first Step 12 keep-current refusal and unattended early bump write (GST-380) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(ship): Step 12 keeps VERSION on --keep-current, adds bump never, and waits for the owner's answer before an unattended bump (GST-380) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * test: regenerate ship SKILL goldens (GST-380) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix: pre-landing review fixes (answer gate covers ALREADY_BUMPED --version writes; typed session rows; never drift and --answer rejection cases) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix: pre-landing review fixes (the answer gate names every flag that decides the write; Version Gate and validate understand bump never) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix: under bump never a release PR that moves VERSION takes the Version Gate's ordinary rules Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs(changelog): fragment for GST-380 Step 12 keep-current and bump never Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --------- Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
2.9 KiB
Step 13: CHANGELOG (auto-generate)
-
Read
CHANGELOG.mdheader to know the format. -
First, enumerate every commit on the branch:
git log origin/<base>..HEAD --onelineCopy the full list. Count the commits. You will use this as a checklist.
-
Read the full diff to understand what each commit actually changed:
git diff origin/<base> -
Group commits by theme before writing anything. Common themes:
- New features / capabilities
- Performance improvements
- Bug fixes
- Dead code removal / cleanup
- Infrastructure / tooling / tests
- Refactoring
-
Write the CHANGELOG entry covering ALL groups:
- If existing CHANGELOG entries on the branch already cover some commits, replace them with one unified entry for the new version
- Categorize changes into applicable sections:
### Added— new features### Changed— changes to existing functionality### Fixed— bug fixes### Removed— removed features
- Write concise, descriptive bullet points
- Insert after the observed file header, before the first release entry, dated today
- Format:
## [X.Y.Z.W] - YYYY-MM-DD - Voice: Lead with what the user can now do that they couldn't before. Use plain language, not implementation details. Never mention TODOS.md, internal tracking, or contributor-facing details.
-
Cross-check: Compare your CHANGELOG entry against the commit list from step 2. Every user-facing change in that list must be represented; add any that is missing. Commits with no user-facing effect (merges, version bumps, fixes to work introduced earlier on this branch) need no bullet. The entry must reflect every user-facing theme.
Do NOT ask the user to describe changes. Infer from the diff and commit history.
- Lint the entry:
~/.claude/skills/gstack/bin/gstack-prose-lint CHANGELOG.md --base origin/<base> --gatereads only the lines this branch added; rewrite eachPROSE:line it names and rerun until the trailer isPROSE_LINT: ok.
NO_VERSION (Step 12): skip this step; write no CHANGELOG entry or version header.
Kept (Step 12 VERSION: <v> kept): no version header. Put the entry where the repo's own rule
puts unit-PR notes (its CHANGELOG preamble or a fragment directory it names), else under
## [Unreleased], never under a released heading.
No CHANGELOG: when the policy's changelog is null, or the file it names
(CHANGELOG.md by default) is absent at HEAD, print one line,
CHANGELOG: skipped (none at <path>), write nothing and never create the file;
Step 19's PR body carries the release notes instead. A repository with neither a
version source nor a CHANGELOG ships with both lines printed and a receipt whose
version is "none" (docs/ship-policy.md#ship-receipt).