.agents/skills/release-note-writer/SKILL.md
Write release notes in English only. Convert technical history into reader-facing changes grouped by audience and outcome. Do not mirror commit scopes directly.
Before drafting, gather the release context:
git tag --sort=-v:refname.pnpm dlx changelogithub --dry --from <previous-version>git show --stat --oneline <sha> or equivalent targeted commands.Use a compact, aggregated structure. Prefer fewer major sections with useful subheadings over many small scope-based sections. Use multiple heading levels when that makes the audience or product surface clearer.
Recommended order:
### To developers near the end.### To contributors last.### Upgrade notes only when action is required.Product-facing sections can be nested by surface:
### Product updates#### Local#### Cloud#### New providers#### Chat and settingsDo not force every release into these exact headings. Pick headings that make the release easy to scan.
Use a dedicated bug-fix section when fixes include critical regressions, blocked primary workflows, or issues users may scan the notes to confirm. Critical bugs deserve plain, concrete language because users may be checking whether their blocker was fixed. Minor visual, wording, and low-impact cleanup can stay grouped as polish, but do not bury important fixes inside broad product updates.
Use To developers for external developer impact:
apps/server business logic unless users of AIRI Cloud or external operators need to act on it.Use To contributors for internal project work:
vishot, cap-vite, CI, dev scripts, repo build/test/lint workflow, docs generation, internal-only packages, release automation, test harnesses, screenshots, evaluation tools.chore commits even when changelogithub does not surface them prominently.For UI, apps/stage-*, packages/stage-*, and packages/ui changes, emphasize what the user can now do and what annoyance was removed.
Use patterns like:
Avoid exposing implementation names unless they are user-visible product names or provider names. Keep technical terms out of end-user sections when a plain description works.
Release notes should speak from the user's experience, not from the implementation. For fixes, write what the user saw, what workflow was blocked or degraded, and what now works. Do not describe internal causes such as lifecycle order, handler registration, IPC timing, stale stores, or runtime plumbing unless the term is part of the user-facing product. Critical fixes should be plain and concrete, not softened into vague polish.
If commit titles, diffs, tests, and surrounding files do not make the user-facing effect clear, do not invent one. Ask the user one concise question about what happened and how it affected users before drafting that bullet.
Good:
Avoid:
stage-ui chat action menu state."stage-pages."Create a provider section when provider changes exist. Keep it concise and grouped by capability. Prefer placing it under a product-facing parent when the release has multiple product surfaces, for example ### Product updates -> #### Local -> ##### New providers.
Example:
### Product updates
#### Local
##### New providers
- You can now use Amazon Bedrock as a chat provider.
- You can now use MiniMax Speech as a TTS provider.
- Artistry now supports image providers such as ComfyUI, Replicate, and Nano Banana.
Put account, billing, credits, Flux, Stripe, paid TTS, and commercial usage changes together when they affect users. Use a cloud-related heading only when the release note itself makes the Cloud context understandable.
Prefer:
Avoid assuming AIRI Cloud is self-explanatory as a top-level section for every reader. When needed, split it into clearer subtopics such as Account, Billing, or Cloud TTS.
Do not create a broad self-hoster section for internal server details. Mention self-hosting only when there is a required action or externally visible deployment change.
Be clear, warm, and lightly playful. The notes may have personality, but the information must stay precise.
Do:
Do not:
When the user gives wording, grammar, structure, or tone feedback after a draft, ask whether to update this skill with the underlying rule.
Do not add narrow rules like "never write this exact sentence." Instead infer the durable reason:
Then propose a concise abstract rule and ask before editing the skill.
When the user asks for commit traceability, prefer Markdown footnotes over inline commit links. Put footnote markers next to the release-note bullet they support, then list the commit link and author attribution below the notes.
Use footnotes to preserve readable release prose while still declaring where each claim came from and who contributed it. Multiple commits may support one bullet; attach multiple footnotes to that bullet only when each commit adds distinct context.
Format:
- User-facing release note sentence.[^1]
[^1]: Commit [`abcdef123`](https://github.com/moeru-ai/airi/commit/abcdef123) by @contributor.
Use GitHub handles from changelogithub, PR metadata, or commit metadata when available. If the commit author name differs from the GitHub handle and the handle is not known, use the available author name without inventing a handle.
Return Markdown unless the user asks for another format.
Example shape:
## vX.Y.Z Highlights
### Product updates
#### Account
- ...
#### Local
##### New providers
- ...
##### Experience improvements
- ...
#### Cloud
##### Billing
### To developers
- ...
### To contributors
- ...
### Upgrade notes
- ...
This is an example, not a required template. Adjust section names and heading depth to match the actual release. Do not emit empty sections.