xiaohongshu
xiaohongshu
bump-release
Execute automated release workflow for Rust projects using Conventional Emoji Commits. Analyze commits since last release, determine semantic version bump (MAJOR/MINOR/PATCH), update Cargo.toml, generate changelog with git-cliff, create git tags, and publish GitHub releases. Use when the user req...
Full skill instructions
This skill executes the complete automated release workflow for Rust projects that follow Conventional Emoji Commits. Execute this workflow when a user requests to create a release, bump the version, or publish a new version of the project.
The workflow:
Use this skill when the user:
Examples:
Before executing the release workflow, verify the following requirements are met:
Check that these tools are installed:
git - Version controlgh (GitHub CLI) - For creating GitHub releasesgit-cliff - Changelog generation (install with cargo install git-cliff)python3 (version 3.7+) - For analysis scriptscargo - Rust build tool (for validation)Installation check:
command -v git && command -v gh && command -v git-cliff && command -v python3 && command -v cargo
Verify GitHub CLI is authenticated:
gh auth status
If not authenticated, run:
gh auth login
Ensure:
While optional, having a .cliff.toml or cliff.toml configuration file at the project root improves changelog formatting. The skill will use default git-cliff configuration if no config file exists.
Choose the appropriate workflow based on the user's request:
User requests release?
├─ Yes → Determine workflow type:
│ ├─ "What would the next release be?" → Execute DRY-RUN workflow
│ ├─ "Create a release but don't push" → Execute LOCAL-ONLY workflow
│ ├─ "Create a pre-release" → Execute PRERELEASE workflow
│ └─ "Create a release" → Execute FULL workflow
└─ No → Not applicable for this skill
Execute this workflow for standard releases that will be pushed to GitHub.
Steps:
Verify prerequisites - Check all required tools are installed and repository state is valid
Execute the main script:
./scripts/bump_release.sh
The script will automatically:
cargo check to validate changes🔖 release: bump version to vX.Y.Zv1.2.3)Verify the release:
Execute this workflow when the user wants to see what would happen without making any changes.
Steps:
Execute with dry-run flag:
./scripts/bump_release.sh --dry-run
Review output:
Explain findings to user:
If no releasable commits:
Execute this workflow when the user wants to prepare a release locally without pushing to GitHub.
Steps:
Execute with no-push flag:
./scripts/bump_release.sh --no-push
The script will:
Inform user:
git push && git push origin vX.Y.Z"gh release create vX.Y.Z"Execute this workflow for alpha, beta, or release candidate versions.
Steps:
Execute with prerelease flag:
./scripts/bump_release.sh --prerelease
The script will:
Note: Pre-release versions should follow semantic versioning prerelease format:
1.0.0-alpha.11.0.0-beta.21.0.0-rc.1Execute this workflow when releasing from a branch other than main.
Steps:
Specify branch:
./scripts/bump_release.sh --branch develop
Use case: For projects that release from different branches (e.g., develop, release, stable)
The skill parses Conventional Emoji Commits to determine version bumps. Refer to references/conventional-emoji-commits.md for complete details.
Quick reference:
| Commit Type | Version Bump | Examples |
|---|---|---|
🚨 BREAKING CHANGE or BREAKING CHANGE: footer | MAJOR (1.0.0 → 2.0.0) | Breaking API changes |
✨ feat or ✨ feature | MINOR (1.0.0 → 1.1.0) | New features |
🩹 fix or ⚡️ perf | PATCH (1.0.0 → 1.0.1) | Bug fixes, performance |
📚 docs, 🎨 style, ♻️ refactor, 🧪 test, 🔧 build, 🤖 ci, 📦 chore | NONE | Non-releasable |
Priority: MAJOR > MINOR > PATCH > NONE
When multiple commits exist, the highest priority bump is used.
analyze_commits.pyAnalyzes git commits since last release and determines version bump.
Usage:
./scripts/analyze_commits.py [OPTIONS]
Options:
--current-version VERSION - Specify current version (default: last git tag or 0.0.0)--format {bump-type|new-version|json} - Output format (default: bump-type)--verbose - Show detailed analysisExamples:
# Get bump type
./scripts/analyze_commits.py --format bump-type
# Output: major, minor, patch, or none
# Get new version
./scripts/analyze_commits.py --format new-version
# Output: 1.2.3
# Get full JSON analysis
./scripts/analyze_commits.py --format json
# Output: {"current_version": "1.2.2", "bump_type": "minor", "new_version": "1.3.0", ...}
# Verbose mode shows commit analysis
./scripts/analyze_commits.py --verbose
Use this script when:
bump_version.pyUpdates version field in Cargo.toml file(s).
Usage:
./scripts/bump_version.py NEW_VERSION [OPTIONS]
Options:
--root PATH - Project root directory (default: current directory)--dry-run - Preview changes without modifying files--workspace-deps - Also update workspace dependency version references--verbose - Show detailed outputExamples:
# Update version to 1.2.3
./scripts/bump_version.py 1.2.3
# Dry-run to preview
./scripts/bump_version.py 1.2.3 --dry-run
# Update workspace dependencies too
./scripts/bump_version.py 1.2.3 --workspace-deps
# Specify project root
./scripts/bump_version.py 1.2.3 --root /path/to/project
Use this script when:
bump_release.shMain orchestration script that executes complete release workflow.
Usage:
./scripts/bump_release.sh [OPTIONS]
Options:
-d, --dry-run - Preview without making changes-s, --skip-checks - Skip pre-release checks (dirty tree, branch)-n, --no-push - Local release only (don't push or create GitHub release)-p, --prerelease - Mark as pre-release on GitHub-b, --branch BRANCH - Specify main branch (default: main)-c, --changelog FILE - Specify changelog file (default: CHANGELOG.md)-h, --help - Show help messageExamples:
# Standard release
./scripts/bump_release.sh
# Preview what would happen
./scripts/bump_release.sh --dry-run
# Create pre-release
./scripts/bump_release.sh --prerelease
# Release from develop branch
./scripts/bump_release.sh --branch develop
# Prepare locally without pushing
./scripts/bump_release.sh --no-push
# Skip checks (useful in CI)
./scripts/bump_release.sh --skip-checks
Use this script:
Cause: All commits since last release are non-releasable types (docs, style, refactor, test, build, ci, chore).
Solution:
git log $(git describe --tags --abbrev=0)..HEAD --onelinefeat, fix, perf, or BREAKING CHANGECause: Uncommitted changes in working directory.
Solution:
# Check status
git status
# Commit or stash changes
git add .
git commit -m "🔧 build: prepare for release"
# Or stash
git stash
Cause: Currently on a different branch.
Solution:
# Switch to main
git checkout main
git pull
# Or specify different branch
./scripts/bump_release.sh --branch develop
Cause: git-cliff is not installed.
Solution:
cargo install git-cliff
Cause: GitHub CLI is not authenticated.
Solution:
gh auth login
Cause: Cargo.toml changes caused compilation errors.
Solution:
cargo check output for errorsCause: No permission or network issues.
Solution:
# Check remote
git remote -v
# Try manual push
git push
git push origin v1.2.3
# Check GitHub permissions
gh auth status
Cause: No version bump needed (all commits are non-releasable).
Solution:
--dry-run to see analysisCreate .cliff.toml or cliff.toml at project root to customize changelog formatting.
Example configuration:
[changelog]
header = "# Changelog\n\n"
body = """
{% for group, commits in commits | group_by(attribute="group") %}
### {{ group | upper_first }}
{% for commit in commits %}
- {{ commit.message | split(pat="\n") | first | trim }}\
{% if commit.github.pr_number %} ([#{{ commit.github.pr_number }}]({{ commit.github.pr_url }})){% endif %}\
{% if commit.breaking %} **BREAKING**{% endif %}
{% endfor %}
{% endfor %}
"""
[git]
conventional_commits = true
filter_unconventional = true
commit_parsers = [
{ message = "^feat", group = "Features" },
{ message = "^fix", group = "Bug Fixes" },
{ message = "^perf", group = "Performance" },
{ message = "^doc", group = "Documentation" },
{ message = "^refactor", group = "Refactoring" },
{ message = "^test", group = "Testing" },
{ message = "^build", group = "Build" },
{ message = ".*: add", group = "Features" },
{ message = ".*: support", group = "Features" },
{ message = ".*: remove", group = "Removal" },
{ body = ".*BREAKING[- ]CHANGE.*", group = "BREAKING CHANGES" },
]
Execute releases automatically on push to main:
GitHub Actions example:
name: Release
on:
push:
branches: [main]
workflow_dispatch:
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch all history for tags
- name: Install git-cliff
run: cargo install git-cliff
- name: Fetch skill
run: |
# Download skill from repository or artifact
- name: Execute release
run: |
cd skill-directory
./scripts/bump_release.sh --skip-checks
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Override automatic version determination:
# 1. Manually set version
./scripts/bump_version.py 2.0.0
# 2. Validate
cargo check
# 3. Generate changelog for specific version
git-cliff --tag v2.0.0 > CHANGELOG_ENTRY.md
# 4. Update CHANGELOG.md manually
# 5. Create commit and tag
git add Cargo.toml Cargo.lock CHANGELOG.md
git commit -m "🔖 release: bump version to v2.0.0"
git tag -a v2.0.0 -m "Release v2.0.0"
# 6. Push
git push && git push origin v2.0.0
# 7. Create GitHub release
gh release create v2.0.0 --notes-file CHANGELOG_ENTRY.md
For Rust workspaces with multiple crates:
Single versioning (recommended):
bump_version.py updates all Cargo.toml files--workspace-deps flag to update dependency referencesIndependent versioning:
--root to target specific crate directorysdk-v1.0.0, cli-v1.0.0)If release was created locally but not pushed:
# Delete tag
git tag -d v1.2.3
# Reset to before release commit
git reset --hard HEAD~1
# Changes are undone
If release was pushed to GitHub:
# 1. Delete GitHub release
gh release delete v1.2.3 --yes
# 2. Delete remote tag
git push origin :refs/tags/v1.2.3
# 3. Delete local tag
git tag -d v1.2.3
# 4. Revert release commit
git revert HEAD
git push
# 5. Fix issues and create new release
If changelog needs corrections after release:
# 1. Edit CHANGELOG.md manually
# 2. Amend release commit (if not pushed yet)
git add CHANGELOG.md
git commit --amend --no-edit
# 3. Or create new commit (if already pushed)
git add CHANGELOG.md
git commit -m "📚 docs: fix changelog formatting"
git push
# 4. Update GitHub release notes
gh release edit v1.2.3 --notes "$(git-cliff --latest)"
Review commits:
git log $(git describe --tags --abbrev=0)..HEAD --oneline
Run dry-run first:
./scripts/bump_release.sh --dry-run
Verify tests pass:
cargo test --workspace
Check for uncommitted changes:
git status
feat(auth): vs feat:Fixes #421.0.0-beta.1This skill automates the entire Rust project release workflow using Conventional Emoji Commits for version determination. Execute the main script (bump_release.sh) to automatically analyze commits, bump versions, generate changelogs, and create GitHub releases. Use --dry-run to preview changes, and individual scripts for specialized tasks. Ensure all prerequisites are met and follow best practices for smooth releases.
xiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience