Agent skill
release-changelog
Keep CHANGELOG.md idiomatic (Keep a Changelog) and cut a tag-based GitHub release that triggers npm publish CI.
Install this agent skill to your Project
npx add-skill https://github.com/mikeyobrien/rho/tree/main/skills/release-changelog
SKILL.md
Release + CHANGELOG Workflow
Overview
Use this SOP to run a clean release process for rho:
- maintain an idiomatic
CHANGELOG.md(Keep a Changelog + SemVer), - ensure
package.jsonversion, git tag, and changelog section match, - publish a GitHub Release from changelog notes,
- let CI publish npm from the release event.
This SOP is designed for the existing workflow in .github/workflows/publish.yml (release.published trigger).
Parameters
- version (required): SemVer version without
vprefix (example:0.1.8) - date (optional, default: current UTC date
YYYY-MM-DD): Release date for changelog header - changelog_path (optional, default:
CHANGELOG.md): Path to changelog file - release_branch (optional, default:
main): Branch to release from - run_tests (optional, default:
true): Run validation tests before release - create_github_release (optional, default:
true): Create GitHub Release with notes from changelog - push_tag_and_branch (optional, default:
false): Push branch/tag after explicit confirmation
Steps
1. Gather release inputs
Confirm version/date and whether this is a stable release.
Constraints:
- You MUST validate
versionas SemVer (X.Y.Z) - You MUST derive
tagasv{version} - You MUST confirm risky external actions before executing them:
- pushing to remote
- creating GitHub Release
2. Preflight repository state
Verify the local repository is safe to release.
Constraints:
- You MUST verify working tree is clean (
git status --short) - You MUST verify current branch matches
{release_branch} - You MUST fetch tags and remote state before release (
git fetch --tags origin) - You MUST fail fast if
tagalready exists locally or on origin - You MUST verify
gh auth statussucceeds before attempting release creation
3. Ensure idiomatic changelog structure
Create/normalize CHANGELOG.md using Keep a Changelog format.
Constraints:
- If
{changelog_path}does not exist, you MUST create it with:# Changelog- intro lines for Keep a Changelog + SemVer
## [Unreleased]- compare-link section at file bottom
- You MUST keep section format exactly:
## [Unreleased]## [{version}] - {date}
- You SHOULD use standard subsections where applicable:
### Added### Changed### Fixed### Removed### Security
- You MUST move release-ready content from
Unreleasedinto[{version}] - You MUST update compare links at bottom:
[Unreleased]: ...compare/{tag}...HEAD[{version}]: ...compare/{previous_tag}...{tag}(or repo root page for first release)
4. Validate version contract
Validate the release contract expected by CI.
Constraints:
- You MUST verify
package.jsonversion equals{version} - You MUST verify changelog contains
## [{version}] - {date} - You MUST verify changelog section for
{version}is non-empty - If
{run_tests}=true, you MUST run project test gates before tagging - You MUST NOT proceed to tag/release when any validation fails
5. Commit release metadata
Commit version/changelog updates before tagging.
Constraints:
- You MUST stage only intended release files (at minimum
CHANGELOG.md, plus version bumps) - You MUST use a conventional release commit message, recommended:
chore(release): v{version}
- You MUST verify commit succeeds before continuing
6. Create tag
Create the release tag from the release commit.
Constraints:
- You MUST create annotated tag
v{version} - You MUST verify tag points to the release commit (
git show v{version} --no-patch)
7. Push and create GitHub release
Push release artifacts and create release notes from changelog.
Constraints:
- You MUST ask for explicit confirmation before push/release actions
- If
{push_tag_and_branch}=true, you MUST push branch and tag to origin - If
{create_github_release}=true, you MUST create GitHub Release with notes from{version}changelog section - You MUST ensure release title matches tag (
v{version}) - You SHOULD use
--verify-tagwhen creating the GitHub Release
Suggested command shape:
gh release create "v{version}" \
--title "v{version}" \
--notes-file /tmp/release-notes-v{version}.md \
--verify-tag
8. Post-release verification
Confirm CI and package publication status.
Constraints:
- You MUST verify GitHub release exists for
v{version} - You MUST verify Publish workflow started/completed
- You SHOULD verify npm version after publish:
npm view @rhobot-dev/rho version
- You MUST report final status with links to tag, release, and workflow run
Output
When complete, report:
- released version/tag
- commit hash
- changelog path updated
- GitHub release URL
- publish workflow URL/status
- npm version observed
Troubleshooting
package.jsonmismatch with tag: update version and re-commit before creating release- Tag already exists: stop and decide whether to bump version or intentionally re-release
- Release created but npm not published: check
publish.ymlrun logs and npm environment permissions - Empty release notes: extract notes from the matching
## [{version}]section only
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
tts
Text-to-speech on macOS -- make the device speak text aloud. Use for voice announcements, reading content aloud, or accessibility.
clipboard
Read or write the macOS clipboard. Use when copying/pasting text, transferring data between apps, or accessing clipboard contents.
notification
Show macOS system notifications with title, body, and optional sound. Use for alerts, reminders, or status updates.
open-url
Open URLs, files, and applications on macOS. Use for launching browsers, opening documents, or starting apps.
tts
Text-to-speech — make the device speak text aloud. Use for voice announcements, reading content aloud, or accessibility.
clipboard
Read or write the system clipboard. Use when copying/pasting text, transferring data between apps, or accessing clipboard contents.
Didn't find tool you were looking for?