跳到正文
cccskills
免费在 GitHub 公开

release

Create a release PR with version bump and changelog update

中文简介正在准备中。当前显示原文说明。

集成工具GitHub
查看安装方法

包含的文件(1)

  • SKILL.md6.0 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Create a release PR that bumps the version and updates the changelog. After the PR is merged, a GitHub workflow will automatically tag the release, create a GitHub release, and bump to the next development version.

Arguments

The skill accepts a version level argument:

  • patch - 5.5.0 -> 5.5.1
  • minor - 5.5.0 -> 5.6.0
  • major - 5.5.0 -> 6.0.0
  • Or an explicit version like 5.6.0

Example: /release minor

Steps

  1. Verify prerequisites:

    • Must be on main branch
    • Working directory must be clean
    • Must be up to date with origin/main
    git fetch origin
    if [ "$(git branch --show-current)" != "main" ]; then
      echo "Error: Must be on main branch"
      exit 1
    fi
    if [ -n "$(git status --porcelain)" ]; then
      echo "Error: Working directory not clean"
      exit 1
    fi
    if [ "$(git rev-parse HEAD)" != "$(git rev-parse origin/main)" ]; then
      echo "Error: Not up to date with origin/main"
      exit 1
    fi
    
  2. Run local checks:

    cargo clippy --all-targets -- -D warnings
    cargo test
    

    If checks fail, stop and report the errors.

  3. Determine the new version:

    # Get current version from Cargo.toml (strip -alpha.N suffix if present)
    CURRENT=$(grep '^version = ' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/')
    echo "Current version: $CURRENT"
    
    # Use cargo-release to calculate new version (handles alpha suffix removal)
    cargo release version <LEVEL> --dry-run 2>&1 | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+' | head -1
    

    Note: cargo-release will strip the -alpha.N suffix when bumping to a release version.

  4. Create release branch:

    NEW_VERSION="X.Y.Z"  # from step 3
    git checkout -b release/v${NEW_VERSION}
    
  5. Bump version using cargo-release:

    cargo release version <LEVEL> --execute --no-confirm
    
  6. Update CHANGELOG.md:

    • Rename "Unreleased" section to new version with today's date
    • Create new empty "Unreleased" section at the top
    • Update the comparison links at the bottom of the file:
      • Add a new [unreleased] link pointing to compare/vX.Y.Z...HEAD
      • Add a new [X.Y.Z] link comparing to the previous version

    The changelog follows Keep a Changelog format. Ask the user if they want to review/edit the changelog before proceeding.

  7. Commit changes:

    git add -A
    git commit -m "release: prepare v${NEW_VERSION}"
    
  8. Push and create PR:

    IMPORTANT: The PR title must name the version being released. When the PR is squash-merged (the repo default), the squash commit takes the PR title as its message, and that message is what the tag workflow checks.

    Both release: prepare v${NEW_VERSION} and release: v${NEW_VERSION} are accepted. What is not accepted is a title naming a version other than the one in Cargo.toml — that fails the run with an error rather than skipping it quietly, so a retitled or rebased release PR cannot tag the wrong version.

    The guard is not in this repository. .github/workflows/tag-release.yml calls the shared workflow at brayniac/rust-workflows@v1, which is where the accepted forms and the version check live.

    git push -u origin release/v${NEW_VERSION}
    
    gh pr create \
      --repo iopsystems/rezolus \
      --title "release: prepare v${NEW_VERSION}" \
      --body "$(cat <<'EOF'
    ## Release v${NEW_VERSION}
    
    This PR prepares the release of v${NEW_VERSION}.
    
    ### Changes
    - Version bump in Cargo.toml
    - Changelog update
    
    ### After Merge
    The release workflows will automatically:
    1. Create git tag `v${NEW_VERSION}` and bump to next dev version
    2. Build and publish packages (deb, rpm, Homebrew)
    3. Create GitHub release with all artifacts
    4. Publish to crates.io
    
    ---
    See CHANGELOG.md for details.
    EOF
    )"
    
  9. Report the PR URL to the user.

After PR Merge

When the PR is merged to main, the following workflow chain runs automatically:

  1. tag-release.yml (triggered by every push to main) — an eight-line caller for the shared workflow at brayniac/rust-workflows@v1, which:

    • Stops unless the head commit names a release, logging why. An ordinary push therefore produces a green run saying "not a release commit" rather than no run at all, which is how you tell a failed release apart from a commit that was never a release.
    • Reads the version from Cargo.toml
    • Fails the run if the commit does not name that version
    • Creates and pushes the git tag vX.Y.Z
    • Bumps to next dev version (e.g., 5.19.2-alpha.0) and pushes to main
  2. release.yml (triggered by the tag push):

    • Builds .deb packages for all supported distros and architectures
    • Builds .rpm packages for Rocky Linux and Amazon Linux
    • Uploads packages to GCP Artifact Registry
    • Creates GitHub release with all package artifacts
    • Publishes to crates.io (stable releases only)
    • Updates Homebrew formula (stable releases only)

Troubleshooting

  • cargo-release not installed: cargo install cargo-release

  • gh CLI not installed: brew install gh or see https://cli.github.com/

  • Not authenticated with gh: gh auth login

  • The release merged but no tag appeared: check the run, not the merge.

    git fetch --tags upstream && git tag --sort=-creatordate | head -3
    gh run list --repo iopsystems/rezolus --workflow tag-release.yml --limit 5
    

    A run always exists, so read what it says. Head commit is not a release commit means the squash message did not name the version — check the PR title. A failure at Verify the commit names this version means the title and Cargo.toml disagree. No run at all means the caller is not wired up, which is a .github/workflows/tag-release.yml problem, not a release one.

    Sort tags by date: v5.9.1 sorts after v5.19.1 lexically, so a plain git tag | tail will tell you the newest tag is missing when it is not.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Write or update the CLI `--help` text and README section for a new or changed rezolus feature (a subcommand, flag, mode, or behavior change), then prove the help is usable by dispatching a fresh subagent that has never seen the code. Use this whenever you add or change how rezolus is invoked — new `rezolus <subcommand>`, new flags/args on an existing mode, renamed options, or changed defaults — and any time the user says the help/README is thin, stale, confusing, or "an agent couldn't figure this out." Treats help text as an interface under test, not prose.

中文简介正在准备中。当前显示原文说明。

iopsystems/rezolus2772026年10月20日 更新

Use when starting or picking up a non-trivial effort (feature, investigation, perf probe, refactor, migration) in a shared repo where teammates or future agents must coordinate or hand off; when a repo has no durable in-tree record of decisions and dead-ends; when you're about to drop a well-measured negative result; or when bootstrapping a journal from a repo's commit history.

中文简介正在准备中。当前显示原文说明。

iopsystems/rezolus2772026年10月20日 更新

pr

免费

Create a feature branch, commit changes, push, and open a PR against iopsystems/rezolus

中文简介正在准备中。当前显示原文说明。

iopsystems/rezolus2772026年10月20日 更新

Tag and push a prerelease from the current Cargo.toml version. Use when the user wants to cut an alpha/beta/rc prerelease. Aborts on stable versions (no `-` in version string) and if the tag already exists.

中文简介正在准备中。当前显示原文说明。

iopsystems/rezolus2772026年10月20日 更新

Use when reviewing a Rezolus sampler change before merge — a new sampler, a change to an existing sampler's probes/refresh/metrics, or core changes that affect samplers; or whenever a sampler's overhead, cadence, or data source is in question.

中文简介正在准备中。当前显示原文说明。

iopsystems/rezolus2772026年10月20日 更新

Investigate a Rezolus performance recording (.parquet, .rez, .dendro) through the rezolus MCP server. Discovery before query, verdicts and marks written back, links to the viewer.

中文简介正在准备中。当前显示原文说明。

iopsystems/rezolus2772026年10月20日 更新

查看 iopsystems 的全部技能

报告此技能的问题