| name | release-process |
| description | Guide the release process for emoji_gen including version bumping, tagging, and automated CI deployment. Use when releasing a new version, the user mentions "release", "version bump", "publish", or "tag a release". Use when this capability is needed. |
| metadata | {"author":"francisfuzz"} |
Release Process for emoji_gen
This Skill guides the complete release process for emoji_gen, which uses automated GitHub Actions for building and publishing.
Overview
Releases are fully automated via GitHub Actions. When you push a version tag, CI automatically:
- Builds binaries for Linux (x86_64, ARM64), macOS (Intel, Apple Silicon), Windows (x86_64)
- Publishes multi-platform Docker images to
ghcr.io/francisfuzz/emoji_gen
- Creates GitHub Release with all artifacts and checksums
- Tags Docker images with version and
latest
Semantic Versioning
Follow Semantic Versioning:
| Version Type | When to Use | Example |
|---|
| MAJOR (X.0.0) | Breaking changes | 1.0.0 → 2.0.0 |
| MINOR (0.X.0) | New features, backwards compatible | 0.1.0 → 0.2.0 |
| PATCH (0.0.X) | Bug fixes, backwards compatible | 0.1.0 → 0.1.1 |
Breaking changes indicators:
- Commits with
! after type: feat!:, fix!:
- Commits with
BREAKING CHANGE: footer
- Changes that require user code updates
Release Steps
1. Determine Version Number
Review recent commits to decide version bump:
git log $(git describe --tags --abbrev=0)..HEAD --oneline
git log $(git describe --tags --abbrev=0)..HEAD
Decision tree:
- Has
BREAKING CHANGE: or ! → MAJOR bump
- Has
feat: commits → MINOR bump
- Only
fix:, docs:, build:, etc. → PATCH bump
2. Update Version in Cargo.toml
Edit Cargo.toml:
grep '^version = ' Cargo.toml
Use the Edit tool to update the version.
3. Commit Version Bump
git add Cargo.toml Cargo.lock
git commit -m "$(cat <<'EOF'
chore: bump version to X.Y.Z
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
EOF
)"
4. Create and Push Tag
git tag -a vX.Y.Z -m "Release vX.Y.Z"
git push origin main
git push origin vX.Y.Z
The tag push triggers the release workflow automatically.
5. Monitor Release
gh run watch
gh run view --web
gh release view vX.Y.Z
6. Verify Release Artifacts
Once CI completes, verify:
GitHub Release:
Docker Registry:
gh api repos/francisfuzz/emoji_gen/packages
docker pull ghcr.io/francisfuzz/emoji_gen:vX.Y.Z
docker run --rm ghcr.io/francisfuzz/emoji_gen:vX.Y.Z --version
Complete Release Example
git log $(git describe --tags --abbrev=0)..HEAD --oneline
git add Cargo.toml Cargo.lock
git commit -m "$(cat <<'EOF'
chore: bump version to 0.2.0
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
EOF
)"
git tag -a v0.2.0 -m "Release v0.2.0"
git push origin main
git push origin v0.2.0
gh run watch
gh release view v0.2.0
docker pull ghcr.io/francisfuzz/emoji_gen:v0.2.0
Pre-release Versions
For alpha, beta, or release candidates:
git tag -a v0.2.0-beta.1 -m "Release v0.2.0-beta.1"
git push origin v0.2.0-beta.1
Pre-releases:
- Marked as prerelease in GitHub
- Don't update the
latest Docker tag
- Useful for testing before final release
Troubleshooting
Release workflow failed
gh run list --workflow=release.yml --limit 5
gh run view <run-id>
Docker image not published
gh run view --log
Wrong version in binaries
git tag -d vX.Y.Z
git push origin :refs/tags/vX.Y.Z
gh release delete vX.Y.Z
Post-Release (Optional)
Publish to crates.io
Manual step (not automated):
git checkout vX.Y.Z
cargo publish
git checkout main
Announce Release
- Update project README with latest version if needed
- Announce in project discussions or relevant channels
- Update documentation site if applicable
Distribution Channels
After release, artifacts are available via:
-
GitHub Releases: https://github.com/francisfuzz/emoji_gen/releases
- Pre-compiled binaries for all platforms
- SHA256 checksums
-
GitHub Container Registry:
ghcr.io/francisfuzz/emoji_gen:vX.Y.Z
ghcr.io/francisfuzz/emoji_gen:latest
-
crates.io (manual):
Checklist
Before releasing:
After releasing:
Quick Reference
grep '^version = ' Cargo.toml
git describe --tags --abbrev=0
git tag -l
git log $(git describe --tags --abbrev=0)..HEAD --oneline
git tag -a vX.Y.Z -m "Release vX.Y.Z"
git push origin main && git push origin vX.Y.Z
gh run watch
gh release view vX.Y.Z
Converted and distributed by TomeVault — claim your Tome and manage your conversions.