بنقرة واحدة
cut-release
Cut a clean release — bump versions across all files, update changelog, create GitHub release
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Cut a clean release — bump versions across all files, update changelog, create GitHub release
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | cut-release |
| description | Cut a clean release — bump versions across all files, update changelog, create GitHub release |
| category | workflow |
| tags | ["release","versioning","semver","automation"] |
| version | 1.0.0 |
Automated release workflow: determine version → delegate to cut-release.sh → commit → create PR → merge → publish GitHub release.
Invoke this skill whenever you are ready to cut a new release. Common triggers:
[Unreleased] in CHANGELOG.md has accumulated changes worth releasingCHANGELOG.md has entries under [Unreleased]Read current version from .template-version:
cat .template-version
Read changelog to understand what has changed under [Unreleased]:
head -30 CHANGELOG.md
Compute next version using semver:
feat: commits → minor bump (e.g. 1.2.0 → 1.3.0)fix: commits → patch bump (e.g. 1.2.0 → 1.2.1)feat!: or BREAKING CHANGE in body → major bump (e.g. 1.2.0 → 2.0.0)Ask user to confirm or override the computed version before proceeding.
If
[Unreleased]is empty, abort — nothing to release.
Run the automation script with the version bump:
bash .omp/skills/cut-release/scripts/cut-release.sh <OLD_VERSION> <NEW_VERSION>
Example:
bash .omp/skills/cut-release/scripts/cut-release.sh 0.5.0 0.6.0
| File | Pattern |
|---|---|
.template-version | whole file content |
README.md | template-vX.Y.Z in badge |
AGENTS.md | version **X.Y.Z** |
SETUP_GUIDE.md | `X.Y.Z` |
.omp/skills/template-guide/SKILL.md | (X.Y.Z) in examples |
.omp/skills/template-guide/scripts/audit.sh | TEMPLATE_VERSION=X.Y.Z line |
| CHANGELOG.md | Creates new version section from Unreleased |
audit.sh — must pass before proceeding.bash .omp/skills/cut-release/scripts/cut-release.sh <OLD> <NEW> --dry-run
Shows what would change without making any modifications.
Review changes:
git diff
Commit:
git add -A
git commit -m "chore: cut vX.Y.Z"
Push branch:
git push -u origin HEAD
Create PR (or use merge-to-main skill):
gh pr create --base main --title "chore: cut vX.Y.Z" --body "## Summary
Cut release vX.Y.Z.
## Changes
- Updated version references across all manifest files
- CHANGELOG.md updated with release section
## Verification
- audit.sh passes
- No stale version references remain"
Monitor CI and merge when all checks pass:
gh pr merge <pr-number> --squash
Switch to main and pull:
git checkout main && git pull
Create annotated tag:
git tag -a vX.Y.Z -m "Release vX.Y.Z"
Push tag:
git push origin vX.Y.Z
Create GitHub release:
gh release create vX.Y.Z --title "vX.Y.Z" --notes "<changelog-body>"
The release body should be the changelog section for this version (everything between ## [X.Y.Z] and the next ## [ or end of file).
Release exists and is not draft:
gh release list
gh release view vX.Y.Z
Release body matches CHANGELOG.md:
Compare gh release view vX.Y.Z --json body --jq '.body' with the corresponding section in CHANGELOG.md
All manifest files contain the new version:
cat .template-version # should show new version
grep "vX.Y.Z" README.md # should find badge
No stale references to old version remain:
grep -rn "vOLD-VERSION" . --include='*.md' --include='*.sh' # must be empty
| Situation | Handling |
|---|---|
Empty [Unreleased] section | Abort — nothing to release |
| Multiple version-like strings | Use anchored patterns (handled by script) |
| Tag already exists | Detect via git tag -l vX.Y.Z and abort |
| Wrong version passed | Pre-flight check catches missing OLD_VERSION |
| Audit fails after update | Script aborts; fix manually before committing |