agentleFS
mikeyobrienmikeyobrien/rho/skills/release-changelog/SKILL.md

release-changelog

Skill372 starsChanged 8 months agoMITView on GitHub

Keep CHANGELOG.md idiomatic (Keep a Changelog) and cut a tag-based GitHub release that triggers npm publish CI.

  • Commits and pushes

20 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

13 rules. 0 are common, 5 are distinctive, and 8 are very specific to this project.

  • 0

    Common

    Most of the 19 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 8

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use this SOP to run a clean release process for rho:

    line 11
  2. Very specific:

    ensure package.json version, git tag, and changelog section match,

    line 14
  3. Distinctive:

    Verify the local repository is safe to release.

    line 45
  4. Very specific:

    Create/normalize CHANGELOG.md using Keep a Changelog format.

    line 56
  5. Very specific:

    If {changelog_path} does not exist, you MUST create it with:

    line 59
  6. Very specific:

    If {run_tests}=true, you MUST run project test gates before tagging

    line 86
  7. Distinctive:

    Commit version/changelog updates before tagging.

    line 91
  8. Distinctive:

    Create the release tag from the release commit.

    line 101
  9. Very specific:

    If {push_tag_and_branch}=true, you MUST push branch and tag to origin

    line 113
  10. Very specific:

    If {create_github_release}=true, you MUST create GitHub Release with notes from {version} changelog section

    line 114
  11. Very specific:

    package.json mismatch with tag: update version and re-commit before creating release

    line 151
  12. Distinctive:

    Tag already exists: stop and decide whether to bump version or intentionally re-release

    line 152
  13. Very specific:

    Release created but npm not published: check publish.yml run logs and npm environment permissions

    line 153

“Common” is measured: kept by at least 6 in 10 of the 19 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Release + CHANGELOG Workflow

Overview

Use this SOP to run a clean release process for rho:

  1. maintain an idiomatic CHANGELOG.md (Keep a Changelog + SemVer),
  2. ensure package.json version, git tag, and changelog section match,
  3. publish a GitHub Release from changelog notes,
  4. 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 v prefix (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 version as SemVer (X.Y.Z)
  • You MUST derive tag as v{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 tag already exists locally or on origin
  • You MUST verify gh auth status succeeds 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 Unreleased into [{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.json version 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-tag when 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.json mismatch 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.yml run logs and npm environment permissions
  • Empty release notes: extract notes from the matching ## [{version}] section only

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.