Release
Generic repo-aware release assistant that analyzes release rules, caches them in .omc/RELEASE_RULE.md, then guides the release
Overview
Release is a thin, repo-aware release assistant. On first run it inspects the project and CI to derive release rules, stores them in .omc/RELEASE_RULE.md for future runs, then walks you through a release using those rules.
It is not hardcoded to any single stack. It detects npm / PyPI / Cargo / Docker / GitHub Packages, finds where versions live (package.json, pyproject.toml, Cargo.toml, VERSION, etc.), figures out the release trigger (tag push, manual dispatch, merge), and adapts accordingly.
Usage
/oh-my-claudecode:release [version]
/oh-my-claudecode:release --refreshversionis optional. Acceptspatch,minor,major, or an explicit semver like2.4.0. If omitted the skill asks.--refreshforces re-analysis of the repo even when a cached rule file exists.
Execution Flow
Step 0 — Load or Build Release Rules
- If
.omc/RELEASE_RULE.mddoes not exist (or--refreshwas passed): run the full repo analysis and write the file. - If it does exist: read it, then do a delta check — scan
.github/workflows/,.circleci/,.travis.yml,Jenkinsfile,bitbucket-pipelines.yml,gitlab-ci.ymlfor modifications newer than the cachedlast-analyzedtimestamp. If CI changed, refresh just those sections.
Step 1 — Repo Analysis
The skill inspects:
- Version sources — files containing the current version, plus any release automation script (
scripts/release.*,bump2version,release-it,semantic-release,changesets,goreleaser,Makefiletarget). - Registry / distribution — npm, PyPI, Cargo, Docker, GitHub Packages, and which CI job publishes.
- Release trigger — tag push (
v*), manual dispatch, merge to main, release-branch merge, or commit-message pattern. - Test gate — the test command and whether CI requires it to pass before publishing.
- Release notes / changelog — existence and convention (Keep a Changelog, Conventional Commits, GitHub auto-generated, release-body file, or none).
- First-time setup gaps — missing release workflow, missing
.gitignoreentries for build artifacts, no git tags yet.
Step 2 — Write .omc/RELEASE_RULE.md
The cached file uses this structure:
# Release Rules
<!-- last-analyzed: YYYY-MM-DDTHH:MM:SSZ -->
## Version Sources
## Release Trigger
## Test Gate
## Registry / Distribution
## Release Notes Strategy
## CI Workflow Files
## First-Time Setup GapsStep 3 — Determine Version
If the user did not pass a version, the skill shows the current version and what patch / minor / major would produce, then asks.
Step 4 — Pre-Release Checklist
Before proceeding, the skill confirms (minimally):
- All intended changes committed and pushed
- CI green on the target branch
- Tests pass locally (run the test-gate command)
- Version bump applied to every version source file
- Release notes / changelog prepared
Step 5 — Release Notes Guidance
Applies the repo's detected convention. With no convention, it defaults to:
- Lead with what changed for users, not internal details.
- Group by type:
New Features,Bug Fixes,Breaking Changes,Deprecations,Internal / Chores. - One sentence per item, PR/issue link, credit external contributors.
- Breaking changes go first with a migration path.
- Omit invisible changes (refactors, CI tweaks, test-only) unless they affect reproducibility.
For Conventional Commits repos it generates a draft from git log <prev-tag>..HEAD --no-merges --format="%s" grouped by commit type.
Step 6 — Execute Release
- Bump version across every source file.
- Run tests via the test-gate command.
- Commit
git add <version files> CHANGELOG.md→chore(release): bump version to vX.Y.Z. - Tag — annotated:
git tag -a vX.Y.Z -m "vX.Y.Z". - Push branch + tag.
- CI takes over — if the release trigger is a tag push, CI handles publish + GitHub Release. Otherwise the skill shows the manual publish command (
npm publish --access public,twine upload dist/*, etc.).
Step 7 — First-Time Setup Suggestions
If Step 1 flagged gaps, the skill offers to:
- Scaffold a
.github/workflows/release.ymlfor the detected stack - Add build artifacts to
.gitignore - Explain git-tag best practice for repos with no tags yet
Step 8 — Verify
After the push:
gh run list --workflow=<release workflow> --limit=3(ifghis installed)- Check the registry for the new version after a few minutes
gh release view vX.Y.Z
Notes
- Nothing is hardcoded to a specific project — everything is derived from repo inspection.
.omc/RELEASE_RULE.mdis a local cache. Commit it to share derived rules with your team, or.gitignoreit if you prefer it local.- Monorepos / workspaces (npm / pnpm / Cargo) are detected and handled.
Related Skills
- omc-setup — Apply configuration after an update
Reference
| Item | Value |
|---|---|
| Invocation | /oh-my-claudecode:release |
| Magic Keyword | - |
| Category | Utility |