본문으로 건너뛰기
cccskills
무료GitHub에 공개

release

Create a release PR with version bump and changelog update

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구GitHub
설치 방법 보기

포함된 파일(1)

  • SKILL.md6.0 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

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 / 1,000자

이 양식은 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의 스킬 모두 보기

이 스킬의 문제 신고