用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/ringline-rs/ringline --skill release命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
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.
Create a feature branch, commit changes, push, and open a PR against ringline-rs/ringline
基于 SOC 职业分类
正在显示 SKILL.md
| name | release |
| description | Create a release PR with version bump and changelog update |
Create a release PR that bumps the version and updates the changelog. After the PR is merged, the tag-release.yml workflow will automatically tag the release, trigger cargo publish, and bump to the next development version.
The skill accepts a version level argument:
patch - 0.0.1 -> 0.0.2minor - 0.0.1 -> 0.1.0major - 0.0.1 -> 1.0.00.2.0Example: /release minor
Verify prerequisites:
main branchgit 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
Run local checks:
cargo fmt --all -- --check
cargo clippy --all-targets -- -D warnings
cargo test --all
If checks fail, stop and report the errors.
Determine the new version:
# Get current version from ringline/Cargo.toml
CURRENT=$(grep '^version = ' ringline/Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/')
echo "Current version: $CURRENT"
# Use cargo-release to calculate new version
cargo release version <LEVEL> --dry-run 2>&1 | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+'
Create release branch:
NEW_VERSION="X.Y.Z" # from step 3
git checkout -b release/v${NEW_VERSION}
Bump version using cargo-release:
cargo release version <LEVEL> --execute --no-confirm
Update CHANGELOG.md:
The changelog follows Keep a Changelog format. Ask the user if they want to review/edit the changelog before proceeding.
Commit changes:
CRITICAL: The commit message MUST start with release: v (no other words before the version).
The tag-release.yml workflow matches startsWith(message, 'release: v') on the merge commit.
When GitHub squash-merges a single-commit PR, the commit message becomes the merge commit message.
git add -A
git commit -m "release: v${NEW_VERSION}"
Push and create PR:
git push -u origin release/v${NEW_VERSION}
gh pr create \
--title "release: v${NEW_VERSION}" \
--body "$(cat <<EOF
## Release v${NEW_VERSION}
This PR prepares the release of v${NEW_VERSION}.
### Changes
- Version bump
- Changelog update
### After Merge
The tag-release workflow will automatically:
1. Create git tag \`v${NEW_VERSION}\`
2. Trigger CI + publish to crates.io
3. Create a GitHub Release
4. Bump to next development version (\`-alpha.0\`)
---
See CHANGELOG.md for details.
EOF
)"
Report the PR URL to the user.
When the PR is merged to main, the tag-release.yml workflow will:
ringline/Cargo.tomlvX.Y.Zrelease.yml workflow then runs CI and publishes to crates.io0.0.2-alpha.0)cargo install cargo-release --lockedgh auth logincontents: write stored as RELEASE_TOKEN in repo secrets (the default GITHUB_TOKEN can't trigger other workflows)CARGO_REGISTRY_TOKEN in repo secrets