Agent Skillsredis/go-redis › prepare-release

prepare-release

GitHub

用于准备 go-redis 版本发布,包括确定语义化版本号、收集合并的 PR、编写 RELEASE-NOTES.md 以及运行脚本更新依赖和版本文件。仅生成可审查的差异,不执行推送或提交操作。

.claude/skills/prepare-release/SKILL.md redis/go-redis

Trigger Scenarios

准备新的 go-redis 版本 更新 version.go 或 go.mod 编写 RELEASE-NOTES.md

Install

npx skills add redis/go-redis --skill prepare-release -g -y
More Options

Non-standard path

npx skills add https://github.com/redis/go-redis/tree/master/.claude/skills/prepare-release -g -y

Use without installing

npx skills use redis/go-redis@prepare-release

指定 Agent (Claude Code)

npx skills add redis/go-redis --skill prepare-release -a claude-code -g -y

安装 repo 全部 skill

npx skills add redis/go-redis --all -g -y

预览 repo 内 skill

npx skills add redis/go-redis --list

SKILL.md

Frontmatter
{
    "name": "prepare-release",
    "description": "Use when preparing a go-redis release — cutting a new version, bumping version.go, updating the go-redis dependency version in submodule go.mod files, or writing the RELEASE-NOTES.md entry for a new vX.Y.Z. Covers choosing the next semver, finding the last release and gathering merged PRs since then, the release-notes format and what to exclude, running scripts\/release.sh to bump versions, and verifying with the scripts\/tag.sh dry-run. Does NOT create tags, push, or commit — publishing stays a manual maintainer step.",
    "allowed-tools": "Bash(git describe:*), Bash(gh pr list:*)"
}

Preparing a go-redis release

Stage everything for a release locally, then stop before anything is published.

This skill never publishes

  • Never run scripts/tag.sh ... -t — the -t flag creates and pushes git tags.
  • Never git push anything (no commits, no tags).
  • Never commit on the maintainer's behalf unless they explicitly ask.

The deliverable is a reviewable diff: bumped versions plus a new RELEASE-NOTES.md entry. A human reviews it and runs the publish step.

1. Pick the next version

The current version is the source of truth in version.go:

grep 'return' version.go        # e.g. return "9.21.0"

Choose the next vX.Y.Z by semver, based on what shipped since the last release:

  • patch (Z) — bug fixes only; drop-in upgrade.
  • minor (Y) — new features, no breaking changes; drop-in upgrade.
  • major (X) — breaking changes.

Confirm the level with the user if the changeset is ambiguous.

2. Find the last release and gather changes

scripts/tag.sh also tags every public submodule (extra/redisotel/vX.Y.Z, …), so a naive git describe returns a submodule tag. Match the root tag only:

LAST=$(git describe --tags --abbrev=0 --match 'v[0-9]*')   # e.g. v9.21.0
git log "$LAST"..HEAD --oneline
gh pr list --state merged --limit 100 \
  --json number,title,author,mergedAt,url --search "merged:>=<last-release-date>"

Categorize the PRs: highlights, new features, bug fixes, performance, testing/infrastructure. Exclude dependabot bumps, typo-only doc fixes, internal refactors with no user-facing effect, and dependabot[bot] from the contributor list.

3. Write the release notes

Prepend a new # X.Y.Z (YYYY-MM-DD) section to the top of RELEASE-NOTES.md (newest first; leave older entries untouched). Follow .github/RELEASE_NOTES_TEMPLATE.md exactly — section order, emoji headers, the ([#PR](url)) by [@user](url) link format, and the **Full Changelog** compare link ${LAST}...vX.Y.Z. Open the lead line with the release type and whether it is a drop-in upgrade, matching the existing entries.

That template carries the full "what to exclude" and formatting rules — read it, don't reinvent them. release-drafter separately auto-drafts a GitHub release from PR labels (.github/release-drafter-config.yml); RELEASE-NOTES.md is the curated, hand-written record and is the file you edit.

4. Bump versions

Run the repo's bump script. It rewrites the go-redis dependency version in every submodule go.mod, runs go mod tidy, and bumps version.go. It does not commit, push, or switch branches:

TAG=vX.Y.Z ./scripts/release.sh

5. Verify (dry run only)

Run the tag script's dry run — it checks that version.go and every go.mod already match the tag, and prints the tags it would push. No -t:

./scripts/tag.sh vX.Y.Z         # DRY RUN — must pass cleanly; never add -t here
make build
git diff --stat                 # review version.go, submodule go.mod, RELEASE-NOTES.md

Fix anything the dry run flags before handing off.

6. Hand off

Report that the release is staged and list the publish steps for the maintainer to run themselves (this skill does not do them):

  1. Review git diff, then commit (chore(release): vX.Y.Z — see the commit-style skill; no AI-attribution trailer).
  2. Open and merge the release PR.
  3. After merge, tag and push: ./scripts/tag.sh vX.Y.Z -t.
  4. release-drafter publishes the GitHub release; reconcile it with the RELEASE-NOTES.md entry if needed.

Stop after step 5. Do not commit, tag, or push.

Version History

  • ceba4fb Current 2026-08-20 20:09

Same Skill Collection

.claude/skills/add-command/SKILL.md
.claude/skills/commit-style/SKILL.md
.claude/skills/testing/SKILL.md
.claude/skills/update-ci-image/SKILL.md

Metadata

Files
0
Version
6c87f94
Hash
cac8fbde
Indexed
2026-08-20 20:09

Accueil - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-31 23:46
浙ICP备14020137号-1 $Carte des visiteurs$