write-pr について
write-prは、現在のブランチの変更からPRのタイトルと本文を作成する読み取り専用スキルです。履歴、差分、プロジェクトの慣例やPRテンプレートを確認し、PRの作成やプッシュは行いません。
主な機能
- 01ベースブランチの検出
- 02コミット履歴と差分の分析
- 03プロジェクトのPRテンプレート確認
- 04既存のタイトル慣例への準拠
- 05タイトルとPR本文の下書き
活用シーン
- 01ブランチのPR説明文の準備
- 02リポジトリのPRテンプレート記入
- 03プロジェクトの形式に沿ったPRタイトル作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ 2ykwang/ agent-skills --skill write-prインストール後、Claude Code で/write-prを入力して読み込まれたか確認します。
同梱ファイルREADME.ko.mdREADME.md
詳細
PR を作成する
現在のブランチの変更内容を、プロジェクト既存の慣例に沿った PR のタイトルと本文にまとめます。ファイル名だけでなく、Git の履歴と差分を分析して変更の意図を把握してください。
このスキルを使用する場合
- 現在のブランチのプルリクエストの説明を作成、または下書きする場合
- プロジェクトのコミット/PR のスタイルに沿った PR タイトルを作成する場合
- 実際のコード変更に基づいて PR テンプレートに記入する場合
このスキルを使用しない場合
- プルリクエストを実際に作成、またはプッシュする依頼の場合
- ベースブランチより先行するコミットがない場合
- ユーザーが PR の説明ではなく、コミットメッセージのみを求めている場合
このスキルは読み取り専用です。状態を変更するコマンドは絶対に実行しないでください:gh pr create、gh pr edit、git push、その他の書き込み操作。
コンテキスト
ユーザーは、現在のブランチでの変更内容に基づいた、そのまま使える PR タイトルと本文を求めています。生の差分出力ではなく、意図と影響に注目してください。プロジェクト既存の PR スタイルに従ってください。
手順
ステップ 1:ベースブランチを特定する
$ARGUMENTS が指定されている場合は、それをベースブランチとして使用してください。
指定されていない場合は、次の順序で自動検出します。
git symbolic-ref refs/remotes/origin/HEAD 2>/dev/nullを実行し、ブランチ名を取得します(例:origin/main→main)- 失敗した場合は、
main、master、developのうち存在するものを確認します:git branch -r | grep -E 'origin/(main|master|develop)' - 最初に見つかったものを使用します
ステップ 2:変更情報を収集する
次のコマンドを順番に実行します。
git log <base>..<HEAD> --oneline
git diff <base>...<HEAD> --stat
git diff <base>...<HEAD> --shortstat
--shortstat の出力(例:12 files changed, 340 insertions(+), 50 deletions(-))を使用して、差分の規模を判断します。
- 変更ファイルが 20 件以下、かつ追加と削除の合計が 500 以下の場合:
git diff <base>...<HEAD>で差分全体を読みます - 変更ファイルが 20 件を超える、または追加と削除の合計が 500 を超える場合:差分全体は読みません。
--statの出力から、ディレクトリ/モジュールごとに変更が最も多いファイルを特定し、代表的なファイルのみ読みます
ステップ 3:PR テンプレートを探す
このステップは必須です。省略したり、ファイルが存在しないと決めつけたりしないでください。
ファイル読み取りツールを使用して、以下のすべてのパスを並行して読み取ってください。
.github/PULL_REQUEST_TEMPLATE.md.github/pull_request_template.mddocs/pull_request_template.mdPULL_REQUEST_TEMPLATE.md
.github/PULL_REQUEST_TEMPLATE/ ディレクトリが存在するかどうかも確認してください。存在する場合は、ファイル一覧を取得し、最初のファイルを読み取ります。
正常に内容を取得できた最初のパスを使用してください。
テンプレートファイルを正常に読み取れた場合:
- PR 本文には、その構成をそのまま使用してください
- すべてのセクション、見出し、HTML コメント(``)を元の位置のまま維持してください
- 適切な箇所に内容を記入してください。差分から判断できないセクション(例:スクリーンショット、関連する Issue)は、元のプレースホルダーまたは HTML コメントをそのまま残してください。削除したり要約したりしないでください
- セクションを並べ替えたり、統合したり、省略したりしないでください
すべてのパスで失敗した場合(ファイルが見つからない場合): 次のデフォルト構成を使用してください。
## Summary
## Changes
## Test Plan
ステップ 4:PR タイトルのスタイルを特定する
次を実行します。
gh pr list --state merged --limit 10 --json title 2>/dev/null
gh が結果を返した場合は、タイトルのパターン(例:feat: ...、[PROJ-123] ...、Fix: ...)を分析します。
gh が何らかの理由で失敗した場合(インストールされていない、認証エラー、GitHub リポジトリではないなど)は、次の方法に切り替えます。
git log --oneline -20
コミットメッセージから主なパターンを見つけます。
明確なパターンが見つからない場合は、Conventional Commits 形式(type: description)を使用します。
ステップ 5:PR の内容を作成する
タイトル:
- ステップ 4 で検出したスタイルが明確で一貫している場合:タイトルを 1 つ作成します
- スタイルが曖昧または混在している場合:タイトル候補を 2~3 件作成し、明確にラベル付けします
PR 本文:
- ステップ 3 のテンプレート構成を使用します
- ステップ 2 の変更分析に基づいて各セクションを記入します
- 変更されたファイルだけでなく、変更した理由に焦点を当てます
- 差分に以下が含まれる場合は、明示的に記載します:
- 破壊的変更(API/インターフェースの変更、フィールドの削除)
- 追加された新しい依存関係
- アーキテクチャまたは構造の変更
- 本文に生の差分やファイル一覧を貼り付けないでください
- 記入できないセクション(例:スクリーンショット、デモ、関連する Issue)は、テンプレート内の元の HTML コメントまたはプレースホルダーを残します。セクションを削除しないでください
出力形式
次の順序で出力してください:
タイトル
<single best title>
(曖昧な場合は、Alt 1、Alt 2 のラベルを付けて候補を列挙します)
PR 本文
<filled-in PR body — exact template structure preserved>
ブランチ:
<base>←<current>· コミット数:N · 変更ファイル数:N