Changelog
Skill rnrn/op/skills/changelog
Generate a keepachangelog-format changelog section from git history and BMAD stories, shown as a conversation preview by default. Use when the user asks to generate, update, or draft a changelog or release notes from commits. Default mode writes nothing; writing or updating CHANGELOG.md requires explicit --apply in the same request.From its SKILL.md
npx -y skills add rnrn/op --skill changelogAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.8 KB, as published. Nobody here has run it
Changelog Skill
Generate a Keep a Changelog section from git
history (and BMAD BMM stories when present). By default the section is shown
as a preview in the conversation only; --apply materializes it into
CHANGELOG.md.
Safety Contract
Default mode is preview-only: the generated changelog section goes to the
conversation and NO files are created, modified, or deleted. Writing or
updating CHANGELOG.md requires explicit --apply in the same request.
Git is read-only input (git log, git describe); never run git add,
git commit, or any mutating git command from this skill.
Usage
/changelog # Preview section since the latest tag (no writes)
/changelog --from v1.2.0 # Preview section since a specific tag/commit
/changelog --apply # Write/update CHANGELOG.md with the section
| Argument | Meaning | Default |
|---|---|---|
--from <tag> | Starting tag or commit for git log <from>..HEAD | latest tag (git describe --tags --abbrev=0); all commits if no tags |
--apply | Actually write/update CHANGELOG.md | off (preview only) |
Workflow
-
Determine the range — use
--fromif given; otherwise the latest tag viagit describe --tags --abbrev=0; if no tags exist, use all commits. -
Gather history —
git log --oneline <from>..HEAD. -
Categorize commits by conventional prefix into keepachangelog categories:
Prefix Category feat:,add:Added fix:,bugfix:Fixed refactor:,docs:,chore:,change:,update:Changed deprecate:Deprecated remove:,delete:Removed security:Security -
Link stories — search
docs/*/stories/for related BMAD stories by keywords or explicit references; add links to matching entries. -
Preview — print the generated section in the conversation. Without
--apply, STOP here: write nothing. -
Apply (only with
--apply) — ifCHANGELOG.mdexists, prepend the new section after the header; otherwise create the file with the standard header (# Changelog, the "All notable changes..." line, and the Keep a Changelog reference) before the section.
Output
One concrete preview example (default mode, conversation only):
## [Unreleased] - 2026-06-10
### Added
- Cursor-based pagination for the list API ([story-3.2](docs/api/stories/story-3.2.md))
- CSV export for usage reports
### Fixed
- Webhook retries no longer duplicate deliveries
- JWT expiry check uses server time
### Changed
- Storage adapter refactored behind a single interface
Without --apply, the response ends after this preview and an explicit note
that CHANGELOG.md was not modified.
Completion Status
Protocol (non-negotiable): the VERY LAST line of every run MUST start with exactly one of these tokens, as plain text — no markdown emphasis or backticks around the token. An optional — <one-line reason> may follow the token; nothing else. Do not invent other status wording:
DONE— preview generated (default) orCHANGELOG.mdupdated (--apply).DONE_WITH_CONCERNS— section generated but some commits could not be categorized or story links are uncertain.BLOCKED— not a git repository or git history is unavailable.NEEDS_CONTEXT— ambiguous range or target file; ask before proceeding.