Openclaw-go release-tag
Create a GitHub release with tag after a PR merge — follows the repo's tag and gh release create workflow
install
source · Clone the upstream repo
git clone https://github.com/a3tai/openclaw-go
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/a3tai/openclaw-go "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.opencode/skills/release-tag" ~/.claude/skills/a3tai-openclaw-go-release-tag && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/a3tai/openclaw-go "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/.opencode/skills/release-tag" ~/.openclaw/skills/a3tai-openclaw-go-release-tag && rm -rf "$T"
manifest:
.opencode/skills/release-tag/SKILL.mdsource content
What I do
Create a Git tag and GitHub release after a release PR has been merged to
main.
When to use me
Use this skill only after a release PR has been merged to
main and all CI checks have passed. Never use this before the PR is merged.
Pre-conditions
Before proceeding, verify ALL of these:
- The release PR is merged to
main - CI passed on the merge commit
passes locally ongo test ./... -racemain
has entries under the version being releasedCHANGELOG.md- No other release is in-flight
Workflow
-
Checkout and pull main:
git checkout main git pull origin main -
Determine version — read from
:CHANGELOG.md- Find the first
heading that isn't## [x.y.z][Unreleased] - The tag will be
v<x.y.z>
- Find the first
-
Verify the tag doesn't exist:
git tag -l "v<x.y.z>" -
Build release notes from the CHANGELOG section for this version. Include:
- Summary of what changed
- Link to the upstream OpenClaw version if this is a sync release
- Link to the PR that was merged
-
Create the tag and release:
git tag v<x.y.z> git push origin v<x.y.z> gh release create v<x.y.z> --title "v<x.y.z>" --notes "<release notes>" -
Verify the release:
gh release view v<x.y.z> -
Close related issues — if there's an upstream-release issue, close it with a link to the release.
Version format
This project uses semantic versioning:
- Patch (
) — bug fixes, test improvements, doc updatesx.y.Z - Minor (
) — new features (new RPC methods, new packages), backward compatiblex.Y.0 - Major (
) — breaking changes to exported API (should be rare)X.0.0
Rules
- Never create a tag from an unmerged branch
- Never create a release without passing tests
- Never skip the CHANGELOG — if there's no entry, something was missed
- One release per merged PR — do not batch
- The docs-deploy workflow triggers automatically on
tagsv*