draft-release-notes について
draft-release-notesは、前回のタグ以降の変更を基に、CHANGELOG.mdの[Unreleased]欄にリリースの説明を作成するスキルです。開発中やリリース前の下書きに使え、バージョン更新やコミットは行いません。
主な機能
- 01コミットとリリースノートのプレビューを収集
- 02差分統計からテーマを把握
- 03[Unreleased]欄のみを書き換え
- 04確定済みリリース記録を保持
- 05未コミットかつ未タグの状態を維持
活用シーン
- 01開発中のリリースノート作成
- 02前回タグ以降の変更の要約
- 03バージョン更新前のノート刷新
- 04変更がない場合に欄を空のまま維持
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jamiepine/ voicebox --skill draft-release-notesインストール後、Claude Code で/draft-release-notesを入力して読み込まれたか確認します。
詳細
リリースノートの下書き
目的
CHANGELOG.md の先頭にある [Unreleased] セクションを、前回のタグ以降の実際の変更に基づいたストーリー性のあるリリース内容で更新します。これは非破壊的な作業コピーです。開発中は何度でも実行できます。
ワークフロー
-
前回のリリースタグを特定し、変更を収集します。
LAST_TAG=$(git tag --list "v*" --sort=-v:refname | head -n 1) echo "Last tag: $LAST_TAG"次に、3 つのソースから素材を収集します。
a. 前回のタグ以降のコミットログ:
git log --oneline "$LAST_TAG"..HEADb. GitHub が生成するリリースノートのプレビュー (PR タイトル、新しいコントリビューター):
gh api repos/:owner/:repo/releases/generate-notes \ -f tag_name="vNEXT" \ -f target_commitish="$(git rev-parse HEAD)" \ -f previous_tag_name="$LAST_TAG" \ --jq '.body'c. テーマ分析のための diff 統計:
git diff --stat "$LAST_TAG"..HEAD -
リリースのストーリーを下書きします。
以下の形式に従って、
[Unreleased]セクション用の Markdown を書きます。## [Unreleased]という見出し自体は含めず、本文の内容だけを書きます。 -
CHANGELOG.md を更新します。
## [Unreleased]と次の## [見出しの間にあるすべてを、新しい下書きで置き換えます。HTML コメントのヘッダーと、その下にある既存のリリースセクションはすべて保持します。[Unreleased]セクションは常に存在し、ヘッダーコメントの直後の最初のセクションでなければなりません。 -
コミット、タグ付け、バージョンの更新は行わないでください。 ファイルをワーキングツリー内で変更したままにしておきます。
リリースストーリーの形式
[Unreleased] セクションは次のように構成します。
## [Unreleased]
<One strong opening paragraph: what this release is about and why it matters.
Tie it to concrete shipped changes. No vague hype.>
<One paragraph on major technical shifts, if applicable.>
### <Feature/Theme Group>
- Bullet points with specifics
- Reference PRs where available: ([#123](https://github.com/jamiepine/voicebox/pull/123))
### <Another Group>
- ...
### Bug Fixes
- ...
_Voicebox is free and open source, built with [Capy](https://capy.ai?utm_source=voicebox&utm_medium=changelog&utm_campaign=built-with-capy)._
スタイルガイドライン
- 事実に基づき、具体的に。 すべての記述は実際のコミットまたは PR にひも付けられるべきです。
- 箇条書きよりもストーリー性を重視。 ストーリーを語る段落を先に置き、その後を箇条書きで補足します。
- コミット単位ではなくテーマ単位でグループ化。 関連する変更を説明的な見出しの下にまとめます。
- PR が存在する場合は参照する ただし、でっち上げないこと。
- 些細な雑務は省略(タイプミス修正、CI の調整)ただしそれがリリースの大部分を占める場合を除きます。
- Capy の行で締めくくる。 すべてのリリースセクションは、テンプレートにある斜体の「built with Capy」の行で変更なく終わります。これはクレジットであり、Capy や未出荷の作業について主張する場ではありません。
- 既存のリリースの語調に合わせる — トーンの参考として、CHANGELOG.md の v0.2.1 と v0.2.3 のエントリを参照してください。
変更がない場合
git log "$LAST_TAG"..HEAD が空の場合、[Unreleased] セクションを空のまま (見出しのみ) にし、下書きするものがないことをユーザーに伝えます。
注意事項
- このスキルは
[Unreleased]セクションにのみ触れます。確定済みのリリースセクションを変更することはありません。 - エージェントは、機能開発の途中、PR の前、リリースを切る直前など、いつでもこのスキルの実行を求められることがあります。
release-bumpスキルは、確定する前にこの下書きが最新であることに依存しています。