Cutting A Release
TriliumNext/Trilium
A skill your agent uses when cutting, preparing, or debugging a Trilium release — bumping the monorepo version, tagging, or diagnosing a failed "Release" workflow run.
Generates GitHub release notes by comparing commits since the last tag.
$ npx skills add letehaha/moneymatter --skill release-notes-generator -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install letehaha/moneymatter release-notes-generator --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/letehaha/moneymatter.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/release-notes-generator .claude/skills/release-notes-generator && 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 "release-notes-generator" agent skill from https://github.com/letehaha/moneymatter/tree/dev/.claude/skills/release-notes-generator into .claude/skills/release-notes-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-notes-generator", 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/letehaha/moneymatter/tree/dev/.claude/skills/release-notes-generatorType 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 letehaha/moneymatter --skill release-notes-generator -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install letehaha/moneymatter release-notes-generator --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/letehaha/moneymatter.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/release-notes-generator .agents/skills/release-notes-generator && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "release-notes-generator" agent skill from https://github.com/letehaha/moneymatter/tree/dev/.claude/skills/release-notes-generator into .agents/skills/release-notes-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-notes-generator", 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 letehaha/moneymatter --skill release-notes-generator -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install letehaha/moneymatter release-notes-generator --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/letehaha/moneymatter.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/release-notes-generator .cursor/skills/release-notes-generator && 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 "release-notes-generator" agent skill from https://github.com/letehaha/moneymatter/tree/dev/.claude/skills/release-notes-generator into .cursor/skills/release-notes-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-notes-generator", 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/letehaha/moneymatter.git --path .claude/skills/release-notes-generator--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 letehaha/moneymatter --skill release-notes-generator -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install letehaha/moneymatter release-notes-generator --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/letehaha/moneymatter.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/release-notes-generator .gemini/skills/release-notes-generator && 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 "release-notes-generator" agent skill from https://github.com/letehaha/moneymatter/tree/dev/.claude/skills/release-notes-generator into .gemini/skills/release-notes-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-notes-generator", 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 letehaha/moneymatter release-notes-generatorInstalls 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 letehaha/moneymatter --skill release-notes-generator -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/letehaha/moneymatter.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/release-notes-generator .github/skills/release-notes-generator && 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 "release-notes-generator" agent skill from https://github.com/letehaha/moneymatter/tree/dev/.claude/skills/release-notes-generator into .github/skills/release-notes-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-notes-generator", 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 letehaha/moneymatter --skill release-notes-generator -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install letehaha/moneymatter release-notes-generator --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/letehaha/moneymatter.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/release-notes-generator .opencode/skills/release-notes-generator && 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 "release-notes-generator" agent skill from https://github.com/letehaha/moneymatter/tree/dev/.claude/skills/release-notes-generator into .opencode/skills/release-notes-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-notes-generator", 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.
release-notes-generatorGenerates GitHub release notes by comparing commits since the last tag.
Release Notes Generator is an agent skill from letehaha/moneymatter. Generates GitHub release notes by comparing commits since the last tag. Use when user says "prepare release", "release notes", "next release", "release text", "prepare next release text", or "create release".
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Changelog and release notes. It works with GitHub. The repository describes itself as: A personal budget tracking application. Track your balances and transactions with bank connections or manual entry, categorize and analyze expenses and income, and many more. The licence is AGPL-3.0.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 5cb7306. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadSkillFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitghjqbrewFrom 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:
moneymatter.appFrom 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.
Release Notes Generator loads about 3.8k tokens when it runs. Until then it costs about 58 tokens; SKILL.md has 2,043 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, SkillAutomated 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 letehaha/moneymatter at commit 5cb7306, republished under its AGPL-3.0 licence (© letehaha). 2,043 words, ~3,809 tokens.
.claude/skills/release-notes-generator/SKILL.md (or your agent's skills folder).Generates formatted release notes for the next GitHub release by analyzing commits and PRs since the last tag, following the project's established release format.
This skill is a direct execution workflow — no questions needed. Gather all context from git history and PRs, produce the release text, then run it through the stop-slop skill (Step 6) before showing it to the user.
Run these commands to identify the latest release tag and its format:
# Get the latest tag
git tag --sort=-creatordate | head -1
# View the latest release body to match its format
gh release view <latest-tag>Also view 1-2 previous releases to understand the format pattern.
# All commits (including merges) since last tag
git log <latest-tag>..HEAD --oneline
# Non-merge commits only — these are the primary source of truth for understanding changes
git log <latest-tag>..HEAD --oneline --no-merges
# Merged PRs with URLs (needed for the Code Changes section)
gh pr list --state merged --base dev --limit 30 --json number,title,url | jq -r '.[] | "#\(.number) \(.title) \(.url)"'Feature and fix PRs are merged into dev; the only PR with --base main is the
Release vX.Y.Z PR itself, which is the release being written up rather than a
change within it.
Filter PRs to only those merged AFTER the latest tag date.
For each PR, use a priority chain to understand what changed:
# Check PR description first
gh pr view <number> --json title,body
# If empty, read commit messages
git log <latest-tag>..HEAD --oneline --no-merges
# Last resort — check what files changed
git show <commit-hash> --statCategorize by commit prefix:
feat: commits = new user-facing functionalityfix: commits = bug fixesrefactor: / chore: commits = internal improvementsFor fix: commits, the priority chain above is not enough — it tells you what was changed, not who the bug hit. Before writing the fix line, also check the linked issue (gh issue view <n>, often referenced as "Closes #N" in the PR body) and, when the condition is still unclear, read the actual call site to see when the broken path was taken. See the bug-fix scope rule under Format rules — a fix line that can't name the affected flow and condition isn't ready to ship.
Group changes into these categories (skip empty ones):
v0.10.6)v0.10.6 → v0.10.7), regardless of the scope of changes.Bump the app version. Set "version" in packages/frontend/package.json to the new version without the v prefix (e.g. "0.10.7"). The UI shows this value, and it has to be committed before the Release vX.Y.Z PR merges: the image for the merge commit is built from it. Edit the file only; the user commits it.
Follow the exact format observed from recent releases. The format is:
## What's Changed
### [Feature/Section Title]
[2-4 sentence description of the main feature, written for end users — what it does, how to use it]
### [Another Section if needed]
[Description]
### Bug Fixes / Other Improvements (if applicable)
- [Concise description of fix/improvement]
- [Another one]
### Code Changes
- [commit type]: [PR title] by @letehaha in [PR URL]
- [repeat for each PR]
**Full Changelog**: https://github.com/letehaha/moneymatter/compare/<previous-tag>...<new-tag>Format rules:
## for the top "What's Changed" heading### for section titles within### section title to visually separate features. Pick emojis that match the feature's purpose (e.g., 🔔 for notifications, 🔗 for linking, 👀 for monitoring, ✨ for improvements, 📝 for code changes).[MoneyMatter](https://moneymatter.app). Subsequent mentions can be plain "MoneyMatter"..well-known/ files, OAuth discovery, AI agent discoverability, API metadata, build/deploy improvements that are user-visible but niche) belong lower in the document — after primary user features.chore: commits from feature descriptions (but still list in Code Changes)Release notes go out to every user, so the draft gets an editing pass before anyone sees it.
Invoke the stop-slop skill (Skill tool, skill: "stop-slop") and apply its rules to the draft from Step 5. This step is not optional and not something to approximate from memory — load the skill and follow what it says.
Run the pass over the prose only: section titles, feature descriptions, and bug-fix lines. Leave these alone:
[MoneyMatter](https://moneymatter.app) linkWatch for the patterns that show up most in release notes specifically:
Where a stop-slop rule collides with a rule from Step 5, Step 5 wins. In particular, keep the bug-fix scope requirement (which flow, under what condition, what was unaffected) even when stop-slop's density rule tempts you to cut it — specificity is the point of both rules.
Report the edit briefly to the user after Step 8: what you cut, and the stop-slop score.
Suggest a title following the pattern: v<version> – <short description>
Examples from past releases:
v0.10.6 – Walutomat integrationv0.10.5 – "Balance Trend" spikes markersv0.10.4 - Stats on budget's details pageOutput the release text as a markdown code block so the user can copy it directly. Also state the suggested release title separately.
Remind the user that the packages/frontend/package.json version bump from Step 4 must be committed to the Release vX.Y.Z PR before it merges.
Do NOT create the release. Only prepare the text and let the user decide when to publish.
User says: "prepare next release text" Actions:
v0.10.6feat: complete portfolio transfers, fix: balance trend calculation, etc.v0.10.7 – Portfolio transfers & stats fixesUser says: "create release notes" Actions:
fix: and chore: prefixed[chore] prefix in title, simpler format
Result: Release text with bug fix list + suggested title [chore] v0.10.8 – Bug fixes and improvementsCause: HEAD is at the same commit as the latest tag Solution: Inform the user there are no changes to release.
gh command not foundCause: GitHub CLI not installed
Solution: Ask user to install via brew install gh.
© letehaha, AGPL-3.0. 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 .claude/skills/release-notes-generator of letehaha/moneymatter.
Open the folder on GitHubat commit 5cb7306
Release Notes Generator 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 |
|---|---|---|---|---|---|---|
| Release Notes Generator this skillletehaha/moneymatter | 158 | — | ~3.8k | Automated safety check: Notes | AGPL-3.0 | |
| Cutting A ReleaseTriliumNext/Trilium | 38k | — | ~3.2k | Automated safety check: Pass | AGPL-3.0 | |
| Mole CLI Release Flowtw93/Mole | 69k | — | ~2.5k | Automated safety check: Pass | GPL-3.0 | |
| Draft Release Notesjamiepine/voicebox | 57k | — | ~941 | Automated safety check: Pass | MIT | |
| Mole Release Notes Publishertw93/Mole | 69k | — | ~1.9k | Automated safety check: Pass | GPL-3.0 | |
| Release Bumpjamiepine/voicebox | 57k | — | ~1.1k | Automated safety check: Pass | MIT |
TriliumNext/Trilium
A skill your agent uses when cutting, preparing, or debugging a Trilium release — bumping the monorepo version, tagging, or diagnosing a failed "Release" workflow run.
tw93/Mole
Runbook for assessing and executing a Mole CLI release: distribution channels, pre-flight checks, capital-V tags, build artifacts and the handoff to curated release notes.
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.
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.
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.
jfernandez/bpftop
Cut a new versioned release of bpftop — pick the version, open a version-bump PR, sign-tag the merge commit on main, and draft GitHub release notes in the project's established format.
letehaha/moneymatter
Deep-dive specification planner. An agent skill from letehaha/moneymatter.
letehaha/moneymatter
Add a new tool to the MoneyMatter MCP server. An agent skill from letehaha/moneymatter.
letehaha/moneymatter
Hunt "AI slop" in this codebase — duplication, reinvented wheels, over-engineering, defensive cruft, dead code, comment slop, performance antipatterns.
letehaha/moneymatter
Frontend conventions and component usage rules. An agent skill from letehaha/moneymatter.
letehaha/moneymatter
Occasional i18n catch-up: strip unused en keys, then fill any uk translations that slipped through via i18n-editor subagents.
letehaha/moneymatter
Creates backend e2e tests for new or existing endpoints. An agent skill from letehaha/moneymatter.
Works with
Categories
Generates GitHub release notes by comparing commits since the last tag. Release Notes Generator is an agent skill from letehaha/moneymatter. Generates GitHub release notes by comparing commits since the last tag.
Release Notes Generator fits situations like: user says prepare release; prepare next release text.
Run `npx skills add letehaha/moneymatter --skill release-notes-generator -a claude-code`. Or copy the skill folder (.claude/skills/release-notes-generator in letehaha/moneymatter) into .claude/skills/release-notes-generator in your project. Claude Code loads it when a task matches its description.
Run `npx skills add letehaha/moneymatter --skill release-notes-generator -a codex`. Or copy the skill folder (.claude/skills/release-notes-generator in letehaha/moneymatter) into .agents/skills/release-notes-generator 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 letehaha/moneymatter --skill release-notes-generator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/release-notes-generator, .gemini/skills/release-notes-generator, .github/skills/release-notes-generator and .opencode/skills/release-notes-generator in your project.
Going by SKILL.md and its folder, Release Notes Generator needs the command-line tools its instructions call (git, gh, jq and brew). Its frontmatter pre-approves these tools: Bash, Read, Skill.
SKILL.md names 1 domain. In commands or code: moneymatter.app; 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 notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Release Notes Generator is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k 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 Release Notes Generator: Cutting A Release (TriliumNext/Trilium, 38k stars), Mole CLI Release Flow (tw93/Mole, 69k stars), Draft Release Notes (jamiepine/voicebox, 57k stars) and Mole Release Notes Publisher (tw93/Mole, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
letehaha (a GitHub user) maintains it in letehaha/moneymatter, which has 158 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on October 5, 2026.
Source: letehaha/moneymatter on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.