chore(agents): /release, a skill that tags an rc or a stable and writes the release page's What's new #742

Merged
HumanBean merged 1 commit from HumanBean/Longshot:chore/release-skill into main 2026-11-15 09:08:00 +00:00
Owner

Type: chore · Risk: low · Tested on: Linux (cut the launcher's v1.0.0-rc.6 with it) · Needs: none

Why

Cutting a release is several steps from RELEASING.md, and CI writes only git-cliff's notes, so the player-friendly "What's new" at the top of a release page (v3.0.0-rc.4) is written by hand each time. A /release skill lets an agent do all of it the same way every time.

What changed

/release rc or /release stable follows RELEASING.md: it tags the next rc on main (or the tested rc's commit as stable), checks the tag with release.py check-tag and pushes it. Then it waits for CI and writes the summary between the downloads' --- and the version's heading.

  • Before an rc (Longshot only), it asks which of RELEASING's pre-release refreshes to do first, each a PR merged before the tag: the pipeline tour with the renderer's play profile (one run, --vk-profile), and the build times (docs/development.md).
  • .claude/skills/release/SKILL.md: the skill. It is the same file in LongshotLauncher (like RELEASING.md), and finds the MagicBeanDev/* remote itself.
  • The summary copies each repository's earlier ones: Longshot's v3.0.0-rc.4 (bold themes with the measured numbers, New:, Fixed:, its own ---), the launcher's v1.0.0-rc.4 (bold-led bullets, Fixes:).
  • It signs in through scripts/forge.py (import forge, forge.api), never touching the token, and edits only the body: CI's last step sets only draft and prerelease, so the summary survives the publish.

Measurements

Verdict: nothing to measure: a Markdown file for agents, no code.

Flags and settings

None

Testing

Tested: cut the launcher's v1.0.0-rc.6 with these steps (tag, check-tag, push, CI on the release runner, the summary patched in through forge.api): https://git.magicbean.dev/MagicBeanDev/LongshotLauncher/releases/tag/v1.0.0-rc.6. python -I -B tests/run_all.py: 509 passed, 14 failed, 70 skipped. The 14 (test_make_game_cache, test_lift_cleanup_error, test_bake_portability, test_crash_dialog, test_cpm_discovery, test_env_on, test_appimage_player_build, test_linux_preflight, test_options_budget_once, test_pipeline_tour, test_mods_size_table, test_readback_late, test_vk_pgo, test_walk_key) fail on main too: this branch is main plus one Markdown file.

Not tested: a Longshot release with it (the next one will be the first).

Must be tested: None

Risks

What could break: nothing in the game or the builder. A wrong skill step could tag a wrong commit; the skill runs check-tag before pushing, as CI does.

Turning it off: revert the commit

Compatibility: Nothing changes

Checklist

Everyone

  • One topic.
  • The title is a Conventional Commit (type(scope): description) of the status line's type.
  • Why gives the reason plainly and links the issues that fit (the tracker searched).
  • Measurements has a verdict, or one line saying why there is nothing to measure.
  • Testing names what was tested, what wasn't, and what must still be tested, where and how.
  • Rebased on current main.
  • python -I -B tests/run_all.py passes (any failure that also fails on main is named).
  • No game files, dumps, build output or generated files.
  • third_party/ untouched (a new folder with a PROVENANCE.md instead).
  • The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled.

When it applies

  • AI assistance recorded with Assisted-by: / Co-Authored-By: trailers.
  • Docs updated.

🤖 Generated with Claude Code

**Type:** chore · **Risk:** low · **Tested on:** Linux (cut the launcher's v1.0.0-rc.6 with it) · **Needs:** none ## Why Cutting a release is several steps from RELEASING.md, and CI writes only git-cliff's notes, so the player-friendly "What's new" at the top of a release page (v3.0.0-rc.4) is written by hand each time. A `/release` skill lets an agent do all of it the same way every time. ## What changed `/release rc` or `/release stable` follows RELEASING.md: it tags the next rc on `main` (or the tested rc's commit as stable), checks the tag with `release.py check-tag` and pushes it. Then it waits for CI and writes the summary between the downloads' `---` and the version's heading. - Before an rc (Longshot only), it asks which of RELEASING's pre-release refreshes to do first, each a PR merged before the tag: the pipeline tour with the renderer's play profile (one run, `--vk-profile`), and the build times (docs/development.md). - `.claude/skills/release/SKILL.md`: the skill. It is the same file in LongshotLauncher (like RELEASING.md), and finds the `MagicBeanDev/*` remote itself. - The summary copies each repository's earlier ones: Longshot's v3.0.0-rc.4 (bold themes with the measured numbers, **New:**, **Fixed:**, its own `---`), the launcher's v1.0.0-rc.4 (bold-led bullets, **Fixes:**). - It signs in through `scripts/forge.py` (`import forge`, `forge.api`), never touching the token, and edits only the body: CI's last step sets only `draft` and `prerelease`, so the summary survives the publish. ## Measurements **Verdict:** nothing to measure: a Markdown file for agents, no code. ### Flags and settings None ## Testing **Tested:** cut the launcher's `v1.0.0-rc.6` with these steps (tag, `check-tag`, push, CI on the release runner, the summary patched in through `forge.api`): https://git.magicbean.dev/MagicBeanDev/LongshotLauncher/releases/tag/v1.0.0-rc.6. `python -I -B tests/run_all.py`: 509 passed, 14 failed, 70 skipped. The 14 (test_make_game_cache, test_lift_cleanup_error, test_bake_portability, test_crash_dialog, test_cpm_discovery, test_env_on, test_appimage_player_build, test_linux_preflight, test_options_budget_once, test_pipeline_tour, test_mods_size_table, test_readback_late, test_vk_pgo, test_walk_key) fail on `main` too: this branch is `main` plus one Markdown file. **Not tested:** a Longshot release with it (the next one will be the first). **Must be tested:** None ## Risks **What could break:** nothing in the game or the builder. A wrong skill step could tag a wrong commit; the skill runs `check-tag` before pushing, as CI does. **Turning it off:** revert the commit **Compatibility:** Nothing changes ## Checklist ### Everyone - [x] One topic. - [x] The title is a Conventional Commit (`type(scope): description`) of the status line's type. - [x] Why gives the reason plainly and links the issues that fit (the tracker searched). - [x] Measurements has a verdict, or one line saying why there is nothing to measure. - [x] Testing names what was tested, what wasn't, and what must still be tested, where and how. - [x] Rebased on current `main`. - [x] `python -I -B tests/run_all.py` passes (any failure that also fails on `main` is named). - [x] No game files, dumps, build output or generated files. - [x] `third_party/` untouched (a new folder with a `PROVENANCE.md` instead). - [x] The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled. ### When it applies - [x] AI assistance recorded with `Assisted-by:` / `Co-Authored-By:` trailers. - [x] Docs updated. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chore(agents): /release, a skill that tags an rc or a stable and writes the release page's What's new
Some checks failed
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been skipped
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been skipped
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been skipped
Third-party parts / The same as upstream (pull_request) Has been skipped
PR description / Description follows the template (pull_request_target) Successful in 17s
CI / Conventional Commit title (pull_request) Successful in 14s
CI / Workflow lint (actionlint) (pull_request) Successful in 20s
Guide screenshots / Guide images and local UI source review (pull_request) Failing after 19s
Third-party parts / As their notes say (pull_request) Successful in 30s
08f2e7ed3d
Co-Authored-By: Claude Opus 5.5 <[email protected]>
HumanBean force-pushed chore/release-skill from 08f2e7ed3d
Some checks failed
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been skipped
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been skipped
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been skipped
Third-party parts / The same as upstream (pull_request) Has been skipped
PR description / Description follows the template (pull_request_target) Successful in 17s
CI / Conventional Commit title (pull_request) Successful in 14s
CI / Workflow lint (actionlint) (pull_request) Successful in 20s
Guide screenshots / Guide images and local UI source review (pull_request) Failing after 19s
Third-party parts / As their notes say (pull_request) Successful in 30s
to 5ae8ff2f24
Some checks failed
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been skipped
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been skipped
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been skipped
Third-party parts / The same as upstream (pull_request) Has been skipped
PR description / Description follows the template (pull_request_target) Has been cancelled
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Guide screenshots / Guide images and local UI source review (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
2026-11-15 09:06:32 +00:00
Compare
HumanBean force-pushed chore/release-skill from 5ae8ff2f24
Some checks failed
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been skipped
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been skipped
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been skipped
Third-party parts / The same as upstream (pull_request) Has been skipped
PR description / Description follows the template (pull_request_target) Has been cancelled
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Guide screenshots / Guide images and local UI source review (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
to f3ddf7225b
Some checks failed
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been skipped
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been skipped
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been skipped
Third-party parts / The same as upstream (pull_request) Has been skipped
CI / Conventional Commit title (pull_request) Successful in 11s
CI / Workflow lint (actionlint) (pull_request) Successful in 16s
Guide screenshots / Guide images and local UI source review (pull_request) Failing after 9s
Third-party parts / As their notes say (pull_request) Successful in 14s
PR description / Description follows the template (pull_request_target) Successful in 4s
2026-11-15 09:06:45 +00:00
Compare
HumanBean deleted branch chore/release-skill 2026-11-15 09:08:00 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MagicBeanDev/Longshot!742
No description provided.