Mole Release Notes Publisher
tw93/Mole
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.
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.
$ npx skills add jamiepine/voicebox --skill draft-release-notes -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jamiepine/voicebox draft-release-notes --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "draft-release-notes" agent skill from https://github.com/jamiepine/voicebox/tree/main/.agents/skills/draft-release-notes into .claude/skills/draft-release-notes/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-release-notes", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/jamiepine/voicebox/tree/main/.agents/skills/draft-release-notesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add jamiepine/voicebox --skill draft-release-notes -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jamiepine/voicebox draft-release-notes --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jamiepine/voicebox.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/draft-release-notes .agents/skills/draft-release-notes && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "draft-release-notes" agent skill from https://github.com/jamiepine/voicebox/tree/main/.agents/skills/draft-release-notes into .agents/skills/draft-release-notes/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-release-notes", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jamiepine/voicebox --skill draft-release-notes -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jamiepine/voicebox draft-release-notes --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jamiepine/voicebox.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/draft-release-notes .cursor/skills/draft-release-notes && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "draft-release-notes" agent skill from https://github.com/jamiepine/voicebox/tree/main/.agents/skills/draft-release-notes into .cursor/skills/draft-release-notes/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-release-notes", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/jamiepine/voicebox.git --path .agents/skills/draft-release-notes--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add jamiepine/voicebox --skill draft-release-notes -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jamiepine/voicebox draft-release-notes --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jamiepine/voicebox.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/draft-release-notes .gemini/skills/draft-release-notes && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "draft-release-notes" agent skill from https://github.com/jamiepine/voicebox/tree/main/.agents/skills/draft-release-notes into .gemini/skills/draft-release-notes/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-release-notes", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install jamiepine/voicebox draft-release-notesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add jamiepine/voicebox --skill draft-release-notes -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jamiepine/voicebox.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/draft-release-notes .github/skills/draft-release-notes && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "draft-release-notes" agent skill from https://github.com/jamiepine/voicebox/tree/main/.agents/skills/draft-release-notes into .github/skills/draft-release-notes/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-release-notes", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jamiepine/voicebox --skill draft-release-notes -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jamiepine/voicebox draft-release-notes --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jamiepine/voicebox.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/draft-release-notes .opencode/skills/draft-release-notes && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "draft-release-notes" agent skill from https://github.com/jamiepine/voicebox/tree/main/.agents/skills/draft-release-notes into .opencode/skills/draft-release-notes/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-release-notes", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
draft-release-notesWrites 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.
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.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 8af7efe. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
gitghFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
capy.aiFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from jamiepine/voicebox at commit 8af7efe, republished under its MIT licence (© jamiepine). 369 words, ~941 tokens.
.claude/skills/draft-release-notes/SKILL.md (or your agent's skills folder).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.
Identify the last release tag and gather changes.
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:
git log --oneline "$LAST_TAG"..HEADb. GitHub-generated release notes preview (PR titles, new contributors):
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:
git diff --stat "$LAST_TAG"..HEADDraft the release narrative.
Write markdown for the [Unreleased] section following the format below. Do not include the ## [Unreleased] heading itself — just the body content.
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.
Do NOT commit, tag, or bump versions. Just leave the file modified in the working tree.
Structure the [Unreleased] section like this:
## [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)._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.
[Unreleased] section. It never modifies stamped release sections.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
Just SKILL.md in .agents/skills/draft-release-notes of jamiepine/voicebox.
Open the folder on GitHubat commit 8af7efe
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Draft Release Notes this skilljamiepine/voicebox | 57k | — | ~941 | Automated safety check: Pass | MIT | |
| Mole Release Notes Publishertw93/Mole | 69k | — | ~1.9k | Automated safety check: Pass | GPL-3.0 | |
| Verdaccio Pull Request Workflowverdaccio/verdaccio | 18k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Go-Redis Release Preparationredis/go-redis | 22k | — | ~1.1k | Automated safety check: Pass | BSD-2-Clause | |
| Hunk Release Workflowmodem-dev/hunk | 9.5k | — | ~3.8k | Automated safety check: Pass | MIT | |
| Release NotesRAIT-09/obsidian-agent-client | 2.4k | — | ~4.2k | Automated safety check: Pass | Apache-2.0 |
tw93/Mole
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.
verdaccio/verdaccio
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.
redis/go-redis
Prepares a go-redis release locally: picks the next semver, gathers merged PRs, writes the RELEASE-NOTES entry and bumps versions, without publishing.
modem-dev/hunk
Maintainer workflow for preparing, publishing, verifying and curating Hunk releases, with confirmation gates before tags, publishes and public edits.
RAIT-09/obsidian-agent-client
Generate a GitHub release note draft for this Obsidian plugin repository.
max-sixty/worktrunk
Walks a maintainer through cutting a Worktrunk release: sync the release branch, pass two test gates, review the changes, then publish.
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.
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.
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.
Categories
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.