Agent skill

Release Notes Writer

by tailcallhq in tailcallhq/forgecode

Pulls a GitHub release and every linked pull request, then writes polished, factual release notes from the combined set of changes.

Apache-2.0Auto-check passedDevelopment

Install Release Notes Writer

skills CLI
$ npx skills add tailcallhq/forgecode --skill write-release-notes -a claude-code

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

GitHub CLI
$ gh skill install tailcallhq/forgecode write-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/tailcallhq/forgecode.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.forge/skills/write-release-notes .claude/skills/write-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
write-release-notes
GitHub stars
7.6k
Token cost
~1.4k tokens
SKILL.md length
503 words
Files
3 (incl. scripts)
Skills in repo
14
Repo updated
First seen
Licence
Apache-2.0

At a glance

Pulls a GitHub release and every linked pull request, then writes polished, factual release notes from the combined set of changes.

  • Works in 7 steps: Fetch Release Data → Categorize Changes → Write the Release Notes → …
  • Writing release notes for a tagged version
  • SKILL.md covers Workflow and Notes
  • Runs Shell scripts from its folder; calls bash and gh

What it does

This skill runs a bundled script that fetches a release's metadata and every linked pull request's title, body, labels, author and merge date from GitHub in one call, then groups the pull requests into Features, Bug Fixes, Performance, Refactors and Maintenance by their conventional-commit prefix or label, folding dependency bumps into Maintenance and skipping any PR the script could not find.

From that grouped data it writes a Markdown document with a one-sentence summary, a tagline following a version-and-theme formula, and short, specific paragraphs that lead with what changed rather than who did it, translate internal jargon into plain language, and credit contributors by handle.

Style guidance explicitly rules out vague marketing adjectives in favor of naming the concrete improvement, such as describing exactly what a performance fix stopped doing rather than just calling the result fast.

When your agent uses it

  • Writing release notes for a tagged version
  • Turning a batch of merged PRs into a readable changelog entry
  • Summarizing what changed in the latest release for users

Example prompts

  • “Write release notes for v1.32.0.”
  • “Generate release notes for the latest tagged release.”
  • “Create a changelog entry for v2.0 from its linked PRs.”

Requirements

  • GitHub CLI authenticated against the repository

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Fetch Release Data
  2. Categorize Changes
  3. Write the Release Notes
  4. Tone & Style Guidelines
  5. Contributors Filter
  6. Validate Length
  7. Output

What it can do on your machine

Read from SKILL.md and the folder at commit 92a5699. 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

    Ships 2 files in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • bash
    • gh

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

  • Network

    No URLs in SKILL.md. Its commands use gh, which can reach the network depending on how they are called.

    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

Release Notes Writer loads about 1.4k tokens when it runs. Until then it costs about 118 tokens; SKILL.md has 503 words of instructions outside code blocks.

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

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); the scripts in this folder are not scanned.

SKILL.md

The full file from tailcallhq/forgecode at commit 92a5699, republished under its Apache-2.0 licence (© tailcallhq). 503 words, ~1,395 tokens.

Download SKILL.mdSave it as .claude/skills/write-release-notes/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
write-release-notes
description
Generate engaging, high-energy release notes for a given version tag. Fetches the release from GitHub, retrieves every linked PR's title and description, then synthesizes all changes into a polished, user-facing release note with an enthusiastic tone. Use when the user asks to write, generate, or create release notes for a version (e.g. "write release notes for v1.32.0", "generate release notes for the latest release", "create changelog for v2.0").

Write Release Notes

Generate clear, informative, and enthusiastic release notes by pulling live data from GitHub and synthesizing every PR into a cohesive narrative.

Workflow

1. Fetch Release Data

Run the bundled script to pull the release metadata and all linked PR details in one shot:

bash
bash .forge/skills/write-release-notes/scripts/fetch-release-data.sh <version> [owner/repo]
  • <version>: The release tag (e.g. v1.32.0)
  • [owner/repo]: Optional. Defaults to the current repo detected via gh repo view.

The script outputs two sections:

  • ### RELEASE METADATA ### — tag name, publish date, release name, raw body
  • ### PR DETAILS ### — one JSON object per PR with: number, title, body, labels, author, mergedAt, url
2. Categorize Changes

Group PRs by their conventional commit prefix or label:

CategoryPrefixes / Labels
Featuresfeat, type: feature
Bug Fixesfix, type: fix
Performanceperf
Refactorsrefactor
Maintenancechore, docs, ci, build, deps

Dependency bumps (e.g. Dependabot PRs) go into Maintenance. Skip PRs with error: "not found".

3. Write the Release Notes

Produce a Markdown document with the following structure. Keep the tone informative and enthusiastic — explain what changed and why it matters, without resorting to marketing fluff.

markdown
# [Product Name] [Version] — [Descriptive Tagline]

> One-sentence summary of what this release focuses on.

## What's New

[2-4 sentence narrative covering the biggest features and fixes. 
Describe what changed and what users can now do. Use active voice. Be factual but upbeat.]

## Highlights

### [Feature/Fix Category]
**[PR Title rephrased as a clear description of the change]**
[1-2 sentences expanding on the PR description. Explain what changed and what users can now do differently. 
If the PR body has useful context, distill it. If empty, infer from the title.]

[Repeat for each significant PR — skip pure chores/dep bumps unless noteworthy]

## Bug Fixes & Reliability

[Bullet list of fixes, each with a brief impact statement]

## Under the Hood

[Brief paragraph or bullet list covering refactors, maintenance, and dep updates — 
keep it light, acknowledge the work without boring the reader]

## Contributors

A huge thank you to everyone who made this release happen: [list @handles — exclude bots like @dependabot]

---
**Full changelog**: [GitHub Release link]
4. Tone & Style Guidelines
  • Lead with what changed: "You can now..." or "Forge now..." beats "We added..."
  • Be specific: Name the feature and describe what it does, not just the category
  • Be informative, not marketty: Avoid vague adjectives like "seamless", "smarter", "blazing", "powerful", "rock-solid". Instead, state the concrete fact (e.g. "editor no longer spawns a git process on every keystroke" beats "blazing-fast editor")
  • Enthusiasm through substance: Let the actual improvement speak for itself. Use active, direct language.
  • Short paragraphs: Max 3 sentences per block
  • Skip internal jargon: Translate crate names and internal concepts into plain language
  • Celebrate contributors: Name them by handle
  • Tagline formula: [Version] — [Factual Theme Description] (e.g. "v1.32.0 — Terminal Context, File Drop Support, Windows Performance")
  • No implementation details: Do not mention internal module names, struct names, function names, crate names, or how something was implemented. Focus purely on what the user experiences or gains.
  • No PR/issue references: Do not include PR numbers, issue numbers, or links to GitHub PRs/issues in the release notes. Focus on the changes themselves, not their tracking identifiers.
Show full SKILL.md (162 more words)Show less
5. Contributors Filter

Only include external contributors in the Contributors section — exclude the core team:

  • @tusharmath
  • @amitksingh1490
  • @laststylebender14
  • Bots (e.g. @dependabot)

If no external contributors exist, omit the Contributors section entirely.

6. Validate Length

After writing the release notes, run the bundled validation script to confirm the output is under 2000 characters:

bash
echo "<release notes>" | bash .forge/skills/write-release-notes/scripts/validate-release-notes.sh

If it prints FAIL, trim the draft and re-run until it prints PASS:

  • Remove the Under the Hood section first
  • Consolidate Bug Fixes into a shorter bullet list
  • Shorten individual PR descriptions to one tight sentence
  • Remove the least impactful Highlights entries
7. Output

Print the final release notes directly in the chat. Do not write to a file unless the user explicitly asks.

Notes

  • The script handles ANSI color codes injected by gh CLI automatically.
  • PRs not found (closed without merge, private, etc.) are silently skipped.
  • If the release has no linked PRs in its body, fall back to listing commits between tags:
    bash
    gh api repos/<owner>/<repo>/compare/<prev_tag>...<version> --jq '.commits[].commit.message'

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

Files

SKILL.md and 2 other files (scripts) in .forge/skills/write-release-notes of tailcallhq/forgecode.

  • SKILL.md
  • scripts/fetch-release-data.sh
  • scripts/validate-release-notes.sh

Open the folder on GitHubat commit 92a5699

Compare with similar skills

Release Notes Writer 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.

Release Notes Writer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Release Notes Writer this skilltailcallhq/forgecode7.6k—~1.4kAutomated safety check: PassApache-2.0
Verdaccio Pull Request Workflowverdaccio/verdaccio18k—~1.9kAutomated safety check: PassMIT
Plannotator Release Preparationbacknotprop/plannotator9.2k—~4.6kAutomated safety check: PassApache-2.0
Ansible Pull Request Reviewansible/ansible71k—~570Automated safety check: PassGPL-3.0
Plane Release Notes Generatormakeplane/plane60k—~2.5kAutomated safety check: PassAGPL-3.0
Pair GitHub PRNVIDIA/Personal-AI-Router1.6k—~1.3kAutomated safety check: PassApache-2.0

Similar skills

  • 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
  • Plannotator Release Preparation

    backnotprop/plannotator

    Drafts Plannotator release notes with full contributor credit, bumps versions in dependency order, builds, and starts the tag-driven release pipeline, in four reviewed phases.

    9.2k GitHub stars~4.6k tokensUpdated today
    DevelopmentAuto-check passed
  • Reviews an Ansible pull request by number, following the steps in the project's CLAUDE.md, with early checks for changelog fragments and tests.

    71k GitHub stars~570 tokensUpdated today
    DevelopmentAuto-check passed
  • Builds categorized release notes for a Plane release pull request from its commits and writes them into the PR description, for both the plane-cloud and plane-ee repos.

    60k GitHub stars~2.5k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Pair GitHub PR

    NVIDIA/Personal-AI-Router

    Official

    Fills GitHub pull request descriptions with the required PAIR pair-release-intent:v1 block so the release-intent check passes.

    1.6k GitHub stars~1.3k tokensUpdated today
    DevelopmentAuto-check passed
  • Handsontable Changelog Entry

    handsontable/handsontable

    Decides whether a code change needs a changelog entry and creates the JSON file in .changelogs with the right type, framework and user-facing title.

    22k GitHub stars~1.6k tokensUpdated today
    DevelopmentAuto-check passed

More from tailcallhq/forgecode

All 14 skills in this repo
  • Git Merge Conflict Resolver

    tailcallhq/forgecode

    Resolves Git merge conflicts with a plan-first workflow that keeps both sides' intent, regenerates lock files and backs up deleted-but-modified files.

    7.6k GitHub starsUsed in 1 repo~4.5k tokens
    Auto-check passed
  • Forge CLI Debug Workflow

    tailcallhq/forgecode

    Gives a systematic process for debugging the forge CLI: build in debug mode, check the latest help output, test with the non-interactive -p flag, and clone conversations before reproducing bugs.

    7.6k GitHub starsUsed in 1 repo~1.6k tokens
    Auto-check passed
  • FIXME Resolver

    tailcallhq/forgecode

    Finds every FIXME comment in a codebase, groups related ones across files into one task, implements the work they describe and removes the comments once it is done.

    7.6k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Reasoning Serialization Tests

    tailcallhq/forgecode

    Checks that ReasoningConfig fields are serialized into the right provider-specific JSON for OpenRouter, Anthropic, GitHub Copilot and Codex requests.

    7.6k GitHub stars~1k tokensUpdated today
    Auto-check passed
  • Implementation Plan Creator

    tailcallhq/forgecode

    Writes a structured Markdown implementation plan with checkbox tasks, verification criteria and risks, then checks it with a validation script; no code changes.

    7.6k GitHub starsUsed in 1 repo~1.1k tokens
    Auto-check passed
  • Skill Creation Guide

    tailcallhq/forgecode

    Guidance for creating and updating agent skills: what skills provide, keeping context lean, choosing how specific to be, and how SKILL.md and bundled resources are laid out.

    7.6k GitHub starsUsed in 1 repo~4.6k tokens
    Auto-check passed

Works with

Categories

Questions about Release Notes Writer

What does Release Notes Writer do?

Pulls a GitHub release and every linked pull request, then writes polished, factual release notes from the combined set of changes. This skill runs a bundled script that fetches a release's metadata and every linked pull request's title, body, labels, author and merge date from GitHub in one call, then groups the pull requests into Features, Bug Fixes, Performance, Refactors and Maintenance by their conventional-commit prefix or label, folding dependency bumps into Maintenance and skipping any PR the script could not find.

When should I use Release Notes Writer?

Release Notes Writer fits situations like: writing release notes for a tagged version; turning a batch of merged PRs into a readable changelog entry; summarizing what changed in the latest release for users.

How do I install Release Notes Writer in Claude Code?

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

How do I install Release Notes Writer in Codex?

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

Can I use Release Notes Writer 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 tailcallhq/forgecode --skill write-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/write-release-notes, .gemini/skills/write-release-notes, .github/skills/write-release-notes and .opencode/skills/write-release-notes in your project.

What does Release Notes Writer need to run?

Going by SKILL.md and its folder, Release Notes Writer needs a shell for the scripts in its folder and the command-line tools its instructions call (bash and gh). Our summary lists: GitHub CLI authenticated against the repository.

Does Release Notes Writer access the network?

SKILL.md contains no URLs. Its commands use gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Release Notes Writer 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Release Notes Writer use?

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

How many tokens does Release Notes Writer use?

About 1.4k tokens (SKILL.md is roughly 5.6k 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 Release Notes Writer?

Skills that share tags, products or a category with Release Notes Writer: Verdaccio Pull Request Workflow (verdaccio/verdaccio, 18k stars), Plannotator Release Preparation (backnotprop/plannotator, 9.2k stars), Ansible Pull Request Review (ansible/ansible, 71k stars) and Plane Release Notes Generator (makeplane/plane, 60k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Release Notes Writer?

tailcallhq (a GitHub organization) maintains it in tailcallhq/forgecode, which has 7,642 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 7, 2026.

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