Draft Release Notes

VerifiedCaution

Draft user-facing release notes by analyzing PR diffs. Focuses on changes relevant to end-users.

Sby Skills Guide Bot
DocumentationIntermediate
7/22/2026
Claude Code
#release-notes#changelog#pull-requests#technical-writing#gh-cli

Recommended for

Automated summary

Drafts user-facing release notes from pull request diffs, filtering code and documentation changes through a repository-specific style guide and template.

Strengths

  • Always reads the style guide and release notes template first, making voice, tone and structure non-negotiable
  • Accepts PR numbers positionally or through named flags, with documentation PRs treated as optional
  • Drops internal-only changes (refactors, CI, tooling) that mode managers would never notice
  • Derives the output filename from the package.json version and keeps going when a diff fails, flagging the skipped PR

Limitations

  • Tightly coupled to one repository layout: .claude/style-guide.md, .claude/release-notes-template.md, the third line of package.json, and analysis under src/
  • Requires an authenticated gh CLI with access to the PRs; the skill stops if the context files are missing
  • The provided SKILL.md stops after analysis — review and publishing steps are not described
When to use it

Use it when you have a list of PR numbers and need a polished release notes draft for commanders who manage modes.

When not to use it

Avoid it on repositories without the .claude style guide and template, or when the PRs cannot be reached through gh.

Security analysis

Caution
Quality score85/100

The skill is a straightforward technical-writing workflow: it reads local style/template files, fetches PR diffs with gh, and writes a markdown file. No destructive commands, no credential exfiltration, no obfuscation, and no instruction to disable safety. It does rely on bash and network-authenticated gh calls plus writes files, and it ingests untrusted PR diff content, so 'caution' rather than 'safe' is appropriate.

Findings
  • •Instructs the agent to execute shell commands (cat, sed, gh pr diff, directory/file creation) via bash — legitimate but powerful
  • •Requires GitHub CLI authentication; PR diff content is untrusted external input that could contain prompt-injection text influencing generated output
  • •Reads repository-local files (.claude/style-guide.md, .claude/release-notes-template.md, package.json) whose contents shape agent behavior
  • •Writes files into release-notes/ based on version read from line 3 of package.json (brittle parsing, but low risk)
How this analysis is made

Examples

Positional PR lists
/release-notes 12,34,56
Code and docs PRs with flags
/release-notes --code-prs 12,34 --docs-prs 78,90
Free-text request
What changed in this release? Code PRs: 101, 102 — docs PRs: 88.

name: release-notes description: > Use this skill when the user asks to "draft release notes", "write release notes", "generate release notes", or "create release notes for PRs". Triggers when the user provides PR numbers and wants a user-facing release notes document as output. Also triggers on "summarize these PRs for release" or "what changed in this release". version: 1.1.0 args:

  • name: code_prs description: > Comma-separated list of code/source PR numbers from this repository (e.g. "12,34,56"). Pass as the first positional argument or with --code-prs. required: false
  • name: docs_prs description: > Comma-separated list of documentation PR numbers (e.g. "78,90"). Pass as the second positional argument or with --docs-prs. Optional. required: false

Release Notes Skill

You are a Senior Technical Writer for a World of Tanks documentation tool. Your task is to draft polished, user-facing release notes by analyzing the diffs of PRs in this repository. The audience is Commanders and Tankers who manage modes — creating, updating, and removing them — so only include changes that are visible and relevant to that workflow.


Inputs

Parse the PR numbers from the skill arguments. The user may provide them in any of these forms:

  • /release-notes 12,34 78,90 — positional: code PRs first, docs PRs second
  • /release-notes --code-prs 12,34 --docs-prs 78,90 — named flags
  • /release-notes 12,34 — code PRs only (docs PRs are optional)
  • Free text in the conversation: "code PRs: 12, 34 — docs PRs: 78, 90"

If no code PRs are provided, ask the user to supply them before proceeding. Docs PRs are optional — if omitted, the release notes are drafted from code changes alone.


Phase 1 — Assimilate Context

Read both files before doing anything else. They define the non-negotiable rules for all output.

# Style guide — voice, tone, terminology, formatting rules
cat .claude/style-guide.md

# Release notes template — the exact structure your output must match
cat .claude/release-notes-template.md

Also read the current version from package.json (line 3) and derive the output filename:

# Read version
sed -n '3p' package.json

The version string uses the format x.x.x. Convert it to the file naming convention by replacing dots with hyphens: x-x-x.md. For example, version 1.2.3 → filename 1-2-3.md.

If either context file is missing, stop and inform the user before proceeding.


Phase 2 — Fetch PR Diffs

Run gh pr diff for every PR number provided. Fetch code PRs and docs PRs in parallel where possible.

gh pr diff <PR_NUMBER>

If docs PRs were provided, fetch them alongside the code PRs. If no docs PRs were provided, skip this step for docs — code-only drafting is valid.

If a gh pr diff call fails (PR not found, auth error), report the specific PR number and error, skip it, and continue with the rest. Note any skipped PRs in a warning at the top of the draft.


Phase 3 — Analyze & Filter

For each PR diff, examine changes under src/:

  • Identify: new feature, improvement, or bug fix
  • Determine whether the change is relevant to mode managers (create, update, remove modes, configure mode settings, mode-related UI/UX). If a change has no visible effect on this workflow — refactors, CI, internal tooling, unrelated features — omit it.
  • Note any breaking changes or migration steps a mode manager would need to take.

When docs PRs are provided

Use them as the authoritative source for user-facing language: adopt the terminology, feature names, and UI labels from the docs diffs. Let the docs framing shape how benefits are described.

When no docs PRs are provided

Infer user-facing language directly from the code changes. Describe what the Commander or Tanker can now do, see, or avoid — not what the code does internally. Apply all terminology rules from .claude/style-guide.md.

Synthesis rules

  • Lead with the Commander/Tanker benefit, not the implementation detail.
  • Group related changes from multiple PRs into a single entry when they deliver one capability together.
  • Use the terminology from .claude/style-guide.md as the source of truth for UI labels and feature names. Never use internal code identifiers (function names, class names, flag names).
  • Omit PR numbers, branch names, author names, and internal ticket IDs from the output.

Phase 4 — Draft the Release Notes

Fill in the template from .claude/release-notes-template.md exactly. Replace both x.x.x placeholders (in the frontmatter title and the # Version x.x.x heading) with the actual version string from package.json (dots, not hyphens — e.g. 0.1.0).

Apply all voice, tone, terminology, and formatting rules from .claude/style-guide.md. Consider this toolkit's name is WoT Utils. Replace any other names or definitions with WoT Utils, for example, instead of Pie-WoT-Utils, use WoT Utils.

Additional structural rules:

  • Entries within a section: most impactful change first.
  • Bug fixes: describe the symptom the Commander saw, not the root cause.
  • Breaking changes: call them out explicitly — never bury them in a list.
  • Omit any of the three sections (## New, ## Improved, ## Fixed) that have no entries rather than leaving them empty.

Phase 5 — Write the File

Write the completed release notes to:

release-notes/<version-with-hyphens>.md

For example, if package.json reports version 1.2.3, write to release-notes/1-2-3.md.

Create the release-notes/ directory if it does not exist. Do not output the release notes as a fenced block in the conversation — write the file directly.

If any PRs were skipped in Phase 2, prepend this warning at the top of the file:

> **Warning:** The following PRs could not be fetched and are excluded from these
> release notes: #XX, #YY. Verify manually before publishing.

Quick-reference checklist

  • [ ] Both context files read successfully.
  • [ ] Version read from package.json; x.x.x in template replaced; filename uses hyphens (x-x-x.md).
  • [ ] Every provided PR number fetched (or skipped with a warning).
  • [ ] Only mode-manager-relevant changes included.
  • [ ] Output structure matches .claude/release-notes-template.md exactly.
  • [ ] All terminology matches .claude/style-guide.md.
  • [ ] No PR numbers, author names, or internal identifiers in the output.
  • [ ] Empty sections omitted.
  • [ ] Breaking changes (if any) are prominently called out.
  • [ ] File written to release-notes/<version-with-hyphens>.md.

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/draft-release-notes-mrwakelg/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/draft-release-notes-mrwakelg' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/draft-release-notes-mrwakelg/download' --output '.skill-downloads/draft-release-notes-mrwakelg/SKILL.md.part' && mv '.skill-downloads/draft-release-notes-mrwakelg/SKILL.md.part' '.skill-downloads/draft-release-notes-mrwakelg/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/draft-release-notes-mrwakelg/SKILL.md' && test -s '.skill-downloads/draft-release-notes-mrwakelg/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/release-notes' && cp -R '.skill-downloads/draft-release-notes-mrwakelg' '.claude/skills/release-notes'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/draft-release-notes-mrwakelg'

openskills read 'draft-release-notes-mrwakelg'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/draft-release-notes-mrwakelg/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills