Agent skill

Draft Release Notes

by jamiepine in jamiepine/voicebox

Writes or refreshes the Unreleased section of CHANGELOG.md as a themed narrative built from the commits, PRs and diff since the last version tag.

MITAuto-check passedDevelopment

Install Draft Release Notes

skills CLI
$ npx skills add jamiepine/voicebox --skill draft-release-notes -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jamiepine/voicebox draft-release-notes --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jamiepine/voicebox.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/draft-release-notes .claude/skills/draft-release-notes && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
draft-release-notes
GitHub stars
57k
Token cost
~941 tokens
SKILL.md length
369 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
MIT

At a glance

Writes or refreshes the Unreleased section of CHANGELOG.md as a themed narrative built from the commits, PRs and diff since the last version tag.

  • Works in 4 steps: Identify the last release tag and gather… → Draft the release narrative. → Update CHANGELOG.md. → …
  • Keeping a running changelog draft while a release is in development
  • SKILL.md covers Goal, Workflow, Release Story Format and When There Are No Changes, plus 1 more section
  • Calls git and gh; reaches capy.ai

What it does

A working draft of the release story is the output, and no release is cut. The agent finds the latest tag beginning with v, then gathers three kinds of raw material: the commit log since that tag, a preview of GitHub's generated release notes through the gh CLI, and a diff stat used to spot themes.

The draft goes into CHANGELOG.md between the Unreleased heading and the next release heading, leaving the file's comment header and earlier releases untouched. It never commits, tags or bumps a version, so you can rerun it as often as you like during development.

Style rules call for claims that trace back to a real commit or PR, an opening paragraph followed by bullets grouped by theme rather than by commit, no invented PR references, trivial chores skipped, and a closing credit line from the template kept unchanged.

When your agent uses it

  • Keeping a running changelog draft while a release is in development
  • Turning the commits since the last tag into a readable release narrative
  • Refreshing the Unreleased section before you prepare a release

Example prompts

  • “Update the Unreleased section of CHANGELOG.md from everything since the last tag.”
  • “Write up a release story for what changed since the last tag, grouped by theme.”
  • “Refresh the changelog draft, I merged three more pull requests today.”

Requirements

  • A git repository with version tags starting with v
  • GitHub CLI (`gh`) for the release-notes preview
  • A CHANGELOG.md file

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Identify the last release tag and gather changes.
  2. Draft the release narrative.
  3. Update CHANGELOG.md.
  4. Do NOT commit, tag, or bump versions. Just leave the file modified in the working tree.

What it can do on your machine

Read from SKILL.md and the folder at commit 8af7efe. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • gh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • capy.ai

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Draft Release Notes loads about 941 tokens when it runs. Until then it costs about 67 tokens; SKILL.md has 369 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~67
When it runs · the whole SKILL.md, loaded when a task matches
~941

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jamiepine/voicebox at commit 8af7efe, republished under its MIT licence (© jamiepine). 369 words, ~941 tokens.

Download SKILL.mdSave it as .claude/skills/draft-release-notes/SKILL.md (or your agent's skills folder).
name
draft-release-notes
description
Use this skill to draft or update the [Unreleased] section of CHANGELOG.md from the actual changes since the last tag. Run this at any point during development to keep a working copy of the release narrative. Does NOT bump versions or create tags.

Draft Release Notes

Goal

Update the [Unreleased] section at the top of CHANGELOG.md with a narrative release story based on the real changes since the last tag. This is a non-destructive working copy — run it as many times as you want during development.

Workflow

  1. Identify the last release tag and gather changes.

    bash
    LAST_TAG=$(git tag --list "v*" --sort=-v:refname | head -n 1)
    echo "Last tag: $LAST_TAG"

    Then collect raw material from three sources:

    a. Commit log since last tag:

    bash
    git log --oneline "$LAST_TAG"..HEAD

    b. GitHub-generated release notes preview (PR titles, new contributors):

    bash
    gh api repos/:owner/:repo/releases/generate-notes \
      -f tag_name="vNEXT" \
      -f target_commitish="$(git rev-parse HEAD)" \
      -f previous_tag_name="$LAST_TAG" \
      --jq '.body'

    c. Diff stat for theme analysis:

    bash
    git diff --stat "$LAST_TAG"..HEAD
  2. Draft the release narrative.

    Write markdown for the [Unreleased] section following the format below. Do not include the ## [Unreleased] heading itself — just the body content.

  3. Update CHANGELOG.md.

    Replace everything between ## [Unreleased] and the next ## [ heading with the new draft. Preserve the HTML comment header and all existing release sections below.

    The [Unreleased] section must always exist and always be the first section after the header comments.

  4. Do NOT commit, tag, or bump versions. Just leave the file modified in the working tree.

Release Story Format

Structure the [Unreleased] section like this:

markdown
## [Unreleased]

<One strong opening paragraph: what this release is about and why it matters.
Tie it to concrete shipped changes. No vague hype.>

<One paragraph on major technical shifts, if applicable.>

### <Feature/Theme Group>
- Bullet points with specifics
- Reference PRs where available: ([#123](https://github.com/jamiepine/voicebox/pull/123))

### <Another Group>
- ...

### Bug Fixes
- ...

_Voicebox is free and open source, built with [Capy](https://capy.ai?utm_source=voicebox&utm_medium=changelog&utm_campaign=built-with-capy)._
Show full SKILL.md (194 more words)Show less
Style Guidelines
  • Factual and specific. Every claim should trace to a real commit or PR.
  • Narrative over list. Lead with paragraphs that tell the story, then support with bullets.
  • Group by theme, not by commit. Cluster related changes under descriptive headings.
  • Reference PRs where they exist, but don't fabricate them.
  • Skip trivial chores (typo fixes, CI tweaks) unless they're the bulk of the release.
  • Close with the Capy line. Every release section ends with the italic "built with Capy" line from the template, unchanged. It is a credit, not a place for claims about Capy or about unshipped work.
  • Match the voice of existing releases — look at the v0.2.1 and v0.2.3 entries in CHANGELOG.md for tone reference.

When There Are No Changes

If git log "$LAST_TAG"..HEAD is empty, leave the [Unreleased] section empty (just the heading) and tell the user there's nothing to draft.

Notes

  • This skill only touches the [Unreleased] section. It never modifies stamped release sections.
  • The agent can be asked to run this skill at any point — mid-feature, before a PR, or right before cutting a release.
  • The release-bump skill depends on this draft being up to date before it finalizes.

© jamiepine, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/draft-release-notes of jamiepine/voicebox.

Open the folder on GitHubat commit 8af7efe

Compare with similar skills

Draft Release Notes next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Draft Release Notes compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Draft Release Notes this skilljamiepine/voicebox57k—~941Automated safety check: PassMIT
Mole Release Notes Publishertw93/Mole69k—~1.9kAutomated safety check: PassGPL-3.0
Verdaccio Pull Request Workflowverdaccio/verdaccio18k—~1.9kAutomated safety check: PassMIT
Go-Redis Release Preparationredis/go-redis22k—~1.1kAutomated safety check: PassBSD-2-Clause
Hunk Release Workflowmodem-dev/hunk9.5k—~3.8kAutomated safety check: PassMIT
Release NotesRAIT-09/obsidian-agent-client2.4k—~4.2kAutomated safety check: PassApache-2.0

Similar skills

  • Publishes curated, bilingual release notes for an existing Mole version tag with gh release edit, including contributor thanks and reactions, after the release workflow finishes.

    69k GitHub stars~1.9k tokensUpdated today
    DevelopmentAuto-check passed
  • Takes a change through a verdaccio pull request: branch, local checks, changeset, title and body, labels, CI and review rounds, and ports to other release lines.

    18k GitHub stars~1.9k tokensUpdated today
    DevelopmentAuto-check passed
  • Official

    Prepares a go-redis release locally: picks the next semver, gathers merged PRs, writes the RELEASE-NOTES entry and bumps versions, without publishing.

    22k GitHub stars~1.1k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Hunk Release Workflow

    modem-dev/hunk

    Maintainer workflow for preparing, publishing, verifying and curating Hunk releases, with confirmation gates before tags, publishes and public edits.

    9.5k GitHub stars~3.8k tokensUpdated today
    DevelopmentAuto-check passed
  • Release Notes

    RAIT-09/obsidian-agent-client

    Generate a GitHub release note draft for this Obsidian plugin repository.

    2.4k GitHub stars~4.2k tokensUpdated 5 days ago
    DevelopmentAuto-check passed
  • Worktrunk Release Workflow

    max-sixty/worktrunk

    Walks a maintainer through cutting a Worktrunk release: sync the release branch, pass two test gates, review the changes, then publish.

    8.9k GitHub stars~6.9k tokensUpdated today
    DevelopmentAuto-check passed

More from jamiepine/voicebox

  • Add TTS Engine to Voicebox

    jamiepine/voicebox

    Walks through adding a new text-to-speech engine to Voicebox end to end: dependency audit, backend, frontend wiring, PyInstaller bundling and frozen-build testing.

    57k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Release Bump

    jamiepine/voicebox

    Ends a release cycle by moving the Unreleased changelog notes under a dated version heading, bumping version files with bumpversion and tagging the commit.

    57k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Pre-Release PR Triage

    jamiepine/voicebox

    Sorts a backlog of open pull requests into must-merge, candidate, superseded and deferred, writes a triage doc and works the merge loop before a release.

    57k GitHub stars~3.1k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Draft Release Notes

What does Draft Release Notes do?

Writes or refreshes the Unreleased section of CHANGELOG.md as a themed narrative built from the commits, PRs and diff since the last version tag. A working draft of the release story is the output, and no release is cut. The agent finds the latest tag beginning with v, then gathers three kinds of raw material: the commit log since that tag, a preview of GitHub's generated release notes through the gh CLI, and a diff stat used to spot themes.

When should I use Draft Release Notes?

Draft Release Notes fits situations like: keeping a running changelog draft while a release is in development; turning the commits since the last tag into a readable release narrative; refreshing the Unreleased section before you prepare a release.

How do I install Draft Release Notes in Claude Code?

Run `npx skills add jamiepine/voicebox --skill draft-release-notes -a claude-code`. Or copy the skill folder (.agents/skills/draft-release-notes in jamiepine/voicebox) into .claude/skills/draft-release-notes in your project. Claude Code loads it when a task matches its description.

How do I install Draft Release Notes in Codex?

Run `npx skills add jamiepine/voicebox --skill draft-release-notes -a codex`. Or copy the skill folder (.agents/skills/draft-release-notes in jamiepine/voicebox) into .agents/skills/draft-release-notes in your project. Codex loads it when a task matches its description.

Can I use Draft Release Notes in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jamiepine/voicebox --skill draft-release-notes -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/draft-release-notes, .gemini/skills/draft-release-notes, .github/skills/draft-release-notes and .opencode/skills/draft-release-notes in your project.

What does Draft Release Notes need to run?

Going by SKILL.md and its folder, Draft Release Notes needs the command-line tools its instructions call (git and gh). Our summary lists: A git repository with version tags starting with v; GitHub CLI (`gh`) for the release-notes preview; A CHANGELOG.md file.

Does Draft Release Notes access the network?

SKILL.md names 1 domain. In commands or code: capy.ai; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Draft Release Notes safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Draft Release Notes use?

Draft Release Notes is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Draft Release Notes use?

About 941 tokens (SKILL.md is roughly 3.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Draft Release Notes?

Skills that share tags, products or a category with Draft Release Notes: Mole Release Notes Publisher (tw93/Mole, 69k stars), Verdaccio Pull Request Workflow (verdaccio/verdaccio, 18k stars), Go-Redis Release Preparation (redis/go-redis, 22k stars) and Hunk Release Workflow (modem-dev/hunk, 9.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Draft Release Notes?

jamiepine (a GitHub user) maintains it in jamiepine/voicebox, which has 56,524 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 7, 2026.

Source: jamiepine/voicebox on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.