release-notes
Ensures consistent, high-quality narratives for GitHub release notes that go beyond auto-generated changelogs.
Install
mkdir -p .claude/skills/release-notes-certamesh && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/13214" && unzip -o skill.zip -d .claude/skills/release-notes-certamesh && rm skill.zipInstalls to .claude/skills/release-notes-certamesh
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Use when drafting GitHub release notes for piinuts/gaze, gaze-lens, or gaze-laravel — including new releases, RC pre-releases, and re-writes of auto-generated notes. Enforces the curated-narrative voice destilled from v0.4.5 (TL;DR → Highlights → Known limitations → Adopter notes → Download → CHANGELOG link), past-tense PR-anchored prose, and a North-Star tie. Counter-pattern: auto-generated Keep-a-Changelog dumps with Added/Changed bullets are NOT acceptable as release-notes voice (they are fine in CHANGELOG.md only). Trigger phrases: "draft release notes", "release notes for vX.Y.Z", "rewrite the release body", "publish v…".Key capabilities
- →Draft GitHub release notes for `piinuts/*` repositories
- →Rewrite auto-generated release bodies into a curated narrative
- →Apply a specific structure and voice to release notes
- →Anchor release notes to the project's North-Star principle
- →Include known limitations with documentation links and todo numbers
- →Provide adopter notes with concrete migration recipes
How it works
The skill applies a predefined structure and voice to release notes, ensuring they are a curated narrative rather than a raw changelog dump, and includes specific sections like TL;DR, Highlights, and Adopter notes.
Inputs & outputs
When to use release-notes
- →Drafting release notes
- →Rewriting auto-generated release bodies
- →Reviewing release note quality
About this skill
Release Notes — Voice & Structure for piinuts/gaze
Canonical voice, locked 2026-04-29 by Naoray. Reference release: v0.4.5. Counter-example (do NOT imitate): v0.5.2 — auto-generated Keep-a-Changelog dump with Added/Changed bullets and backslash-escaped backticks.
This skill applies to release notes published on GitHub Releases. It does NOT replace CHANGELOG.md — that file stays in Keep-a-Changelog format. Release notes are the curated narrative on top of the changelog.
When to use
- Drafting GitHub release notes for any
piinuts/*repo (gaze, gaze-lens, gaze-laravel, future siblings). - Rewriting auto-generated release bodies that arrived as raw CHANGELOG dumps.
- Reviewing a release-notes PR before publish — gate against this skill's checklist.
Required structure (in this order, do not reorder)
[Opening paragraph]
## TL;DR
## Highlights
## Known limitations
## Adopter notes
## Download
## Full CHANGELOG
Skip-allowed sections: ## Known limitations may be omitted if the release truly has none. Every other section is required.
1. Opening paragraph (1–3 sentences)
- Release identifier + bundle context. Examples:
"v0.4.5 is the S1-S6 bundle release for the v0.4 line.","v1.2.0 ships the WebSocket replay rewrite alongside two follow-up bug fixes." - High-level statement of what the release adds, in one breath.
- North-Star tie: at least once anchor the release against
"fail closed, preserve reversibility, keep PII out of agent-visible surfaces"or a faithful paraphrase. The tie shows up here OR in the TL;DR — at least one of the two must carry it.
2. ## TL;DR
One paragraph. Dense narrative. No bullets. Covers all major deltas in one flow so a busy adopter can read the section and stop. Should answer: what landed, what flag/feature gates it, what the most important behavior shift is.
3. ## Highlights
Prose paragraphs (NOT bullets), one per major item. The pattern:
[Feature/Subsystem] landed in PR #N. [WHAT it does] using [HOW, in one sentence — crate, feature, validator, gate]. [WHY / implication for adopters or for the trust contract.]
Hard rules:
- Past-tense, third-person. "DE and US national phone recognizers landed", not "We added DE/US national phone recognizers" and not "Add DE/US recognizers".
- PR anchor inline. Always
"…landed in PR #58"inside the prose, never as a footer reference. - Subjects are artifacts, not authors. "the gate enforces", "the recognizer validates", "
gaze audit purgedeletes". Do not introduce humans. - Exact crate / flag / feature names.
core-extended,phone-parser,--rulepack-bundled,RulepackError::UnsupportedValidator— verbatim. No paraphrase. - No marketing words. Forbidden vocabulary: blazing, powerful, seamless, now you can, magic, effortless. If a sentence reads like a tweet from a startup CEO, rewrite it.
- No emojis.
4. ## Known limitations
Accepted-risk paragraph. Names intentional gaps the release ships with. Always references:
- The
docs/page that documents the limitation in detail. - The follow-up todo number or planned-fix release (
"see todo #181","planned for the v0.5 dylint pivot").
This section is a trust-signal. It is the strongest competitive differentiator vs. Presidio and Tonic — they don't publish their gaps, we do. Phrase as "intentionally syntax-based", "documented accepted-risk for this release", never as an apology.
5. ## Adopter notes
Behavior shifts that adopters need to know about, with concrete migration recipes. Includes:
- Default-behavior changes (e.g. new locale activation, new fail-closed paths).
- Repository-URL or distribution moves.
- Platform / dependency constraint changes (versioned exact:
"glibc 2.39+ (Ubuntu 24.04, Debian 13, RHEL 10, or newer)", never"modern Linux"). - Migration recipes as exact commands or flag changes (
"To restore prior behavior, pass --locale=global or use a policy with narrower locale gating.").
6. ## Download
Bullet list. Per platform: binary URL, then SHA256 sidecar URL. Order by adopter mass: Apple Silicon macOS, Linux x86_64, then any others. Future Linux aarch64 and Apple Silicon SHA-2 alternatives go in the same pattern.
7. ## Full CHANGELOG
Single line, single link. Anchor to the release section in CHANGELOG.md:
https://github.com/piinuts/gaze/blob/main/CHANGELOG.md#045
Voice rules (quick reference)
| Rule | Example | Counter-example |
|---|---|---|
| Past-tense narrative | "Audit retention manual purge landed in PR #59." | "Add gaze audit purge command." |
| Third person, no we/you | "Adopters using the bundle without a policy may see…" | "You'll see new tokens for…" |
| PR anchor inline | "…landed in PR #58." | "PR: #58" in footer |
| Subjects = artifacts | "the gate enforces", "the recognizer validates" | "We added a gate that…" |
| Exact constraints | "glibc 2.39+ (Ubuntu 24.04, Debian 13, RHEL 10)" | "modern Linux distros" |
| North-Star tie | "fail closed, preserve reversibility, keep PII out of agent-visible surfaces" | (omitted) |
| Limits before adopter notes | ## Known limitations precedes ## Adopter notes | adopter notes first |
| No hype words | "uses the phonenumber crate for E.164 region-aware validation" | "blazing-fast E.164 validation" |
| No emojis | (plain text) | 🚀 ✨ 🎉 |
Worked skeleton
Copy the block below into the GitHub release body and fill in. Keep the section headers verbatim.
[OPENING — 1-3 sentences. Release id + bundle context + high-level new + North-Star tie if not in TL;DR.]
## TL;DR
[ONE paragraph dense narrative. No bullets. All major deltas in one flow. North-Star tie if not in opening.]
## Highlights
[FEATURE A] landed in PR #N. [WHAT it does] using [HOW]. [WHY / implication.]
[FEATURE B] landed in PR #N. [WHAT it does] using [HOW]. [WHY / implication.]
[Optional: third-and-beyond highlights paragraph. Stop at 4 unless release truly has more standalone items.]
## Known limitations
[ACCEPTED-RISK paragraph. Document the gap, link to `docs/` page, reference follow-up todo / planned release. Phrase honestly, never apologetically.]
## Adopter notes
[BEHAVIOR SHIFT 1] — [migration recipe with exact flag/command].
[BEHAVIOR SHIFT 2] — [migration recipe].
[Repository / distribution / platform constraint changes, exact versions.]
## Download
- Apple Silicon macOS: https://github.com/piinuts/gaze/releases/download/vX.Y.Z/gaze-aarch64-apple-darwin
- Apple Silicon macOS SHA256: https://github.com/piinuts/gaze/releases/download/vX.Y.Z/gaze-aarch64-apple-darwin.sha256
- Linux x86_64: https://github.com/piinuts/gaze/releases/download/vX.Y.Z/gaze-x86_64-unknown-linux-gnu
- Linux x86_64 SHA256: https://github.com/piinuts/gaze/releases/download/vX.Y.Z/gaze-x86_64-unknown-linux-gnu.sha256
## Full CHANGELOG
https://github.com/piinuts/gaze/blob/main/CHANGELOG.md#XYZ
Annotated reference — v0.4.5 (the canonical example)
The opening of v0.4.5 carries every voice rule in one paragraph:
v0.4.5 is the S1-S6 bundle release for the v0.4 line. It adds parser-backed national phone recognition, ships manual audit retention purge, and hardens restore-path audit boundaries while keeping the release focused on Gaze's core contract: fail closed, preserve reversibility, and keep PII out of agent-visible surfaces.
Notice: release-id + bundle context + three deltas in one sentence + explicit North-Star tie at the end. No emojis, no marketing words, no first person.
The Highlights paragraphs in v0.4.5 follow the pattern strictly:
DE and US national phone recognizers landed in PR #58. The recognizers use the
phonenumbercrate for E.164 region-aware validation, cooperate with the broader structural phone recognizer, and are available through the bundledcore-extendedrulepack.
Subject = "the recognizers", verbs = past-tense + present descriptive, PR anchor inline, exact crate name (phonenumber), exact bundle name (core-extended).
The Known-limitations paragraph in v0.4.5 demonstrates the trust-signal frame:
The v0.4.5
audit_metadata_onlygate is intentionally syntax-based. It covers natural-code escape routes that have caused drift risk in this codebase, but fully-qualified path references,include!, let-else diverge cases, and macro-emitted imports remain documented accepted-risk limitations for this release. Seedocs/explanation/contributing/xtask-gates.mdfor the current coverage table andPIInuts/business:research/v0.5-dylint-audit-gate.mdfor the planned v0.5 pivot to a dylint-based name-resolution lint (todo #181).
Pattern: "intentionally" framing + named exception classes + two docs/ links + one todo number for the planned-fix release.
Counter-example — what NOT to do
The v0.5.2 release body is a Keep-a-Changelog dump:
### Added
- **NER adopter assets (todo #301, GH issue #90 items 1+4):** promoted...
### Changed
- **Pinned default NER artifact source (todo #292, GH issue #90 item 2):** \`scripts/...\`
Why this fails the voice:
### Added/### Changedheaders are CHANGELOG schema, not release-notes structure.- Backslash-escaped backticks (
\scripts/...``) reveal an auto-generation step that did not get human-curated before publish. - No TL;DR, no Highlights prose, no Known-limitations section, no Adopter-notes structure.
- "PR: #94 (squash-merge
4776ff49)" sits in a footer block instead of inline anchors.
If you find yourself starting from this shape, treat it as raw input and rewrite into the curated structure above before publishing.
Pre-publish checklist
Run this checklist before clicking Publish on GitHub Releases. Every item must pass.
- Opening paragraph present, 1–3 sentences, names the release id and what it ships.
- North-Star tie present in opening OR TL;DR ("fail closed, preserve reversibi
Content truncated.
When not to use it
- →When generating `CHANGELOG.md` files
- →When writing internal commit messages
- →When drafting pull-request descriptions
Limitations
- →It does not replace `CHANGELOG.md`
- →It does not govern internal commit messages
- →It does not govern pull-request descriptions
How it compares
This skill enforces a specific, curated narrative voice and structure for GitHub release notes, explicitly avoiding auto-generated changelog dumps and integrating project-specific principles, unlike generic release note generation.
Compared to similar skills
release-notes side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| release-notes (this skill) | 0 | 1mo | Review | Intermediate |
| docs-write | 22 | 6mo | No flags | Beginner |
| content-research-writer | 15 | 10mo | No flags | Beginner |
| doc-coauthoring | 16 | 8mo | No flags | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
docs-write
metabase
Write documentation following Metabase's conversational, clear, and user-focused style. Use when creating or editing documentation files (markdown, MDX, etc.).
content-research-writer
ComposioHQ
Assists in writing high-quality content by conducting research, adding citations, improving hooks, iterating on outlines, and providing real-time feedback on each section. Transforms your writing process from solo effort to collaborative partnership.
doc-coauthoring
anthropics
Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.
research-grants
davila7
Write competitive research proposals for NSF, NIH, DOE, and DARPA. Agency-specific formatting, review criteria, budget preparation, broader impacts, significance statements, innovation narratives, and compliance with submission requirements.
teams-channel-post-writer
daymade
Creates educational Teams channel posts for internal knowledge sharing about Claude Code features, tools, and best practices. Applies when writing posts, announcements, or documentation to teach colleagues effective Claude Code usage, announce new features, share productivity tips, or document lessons learned. Provides templates, writing guidelines, and structured approaches emphasizing concrete examples, underlying principles, and connections to best practices like context engineering. Activates for content involving Teams posts, channel announcements, feature documentation, or tip sharing.
write-docs
tldraw
Writing SDK documentation for tldraw. Use when creating new documentation articles, updating existing docs, or when documentation writing guidance is needed. Applies to docs in apps/docs/content/.