| name | pr-description |
| description | GitHubのPRのtitleとdescriptionを自動生成し、直接PRに反映する。PRのURL、PRの番号、または「PRのdescriptionを作成して」のようなリクエストで起動する。gh CLIでPRの差分・コミット履歴を取得し、適切なタイトルとテンプレートに沿った日本語のdescriptionを生成して `gh pr edit` で直接更新する。 |
PR Description 作成・反映スキル
GitHub PRのURLまたは番号を受け取り、titleとdescriptionを自動生成して直接PRに反映する。
ワークフロー
1. PR情報の取得
$ARGUMENTS からPR URLまたは番号を取得する。引数がない場合は現在のブランチのPRを対象とする。
以下のコマンドで情報を収集する:
gh pr view <PR_NUMBER_OR_URL> --json title,body,baseRefName,headRefName,commits,labels,number
gh pr diff <PR_NUMBER_OR_URL>
gh pr view <PR_NUMBER_OR_URL> --json commits --jq '.commits[].messageHeadline'
2. 関連issueの特定
以下の手順で関連するissue番号を特定する:
- ブランチ名から抽出: ブランチ名に含まれるissue番号を確認(例:
feature/123-some-feature → #123、fix/issue-45 → #45)
- コミットメッセージから抽出:
#123、close #123、fix #123 などのパターンを検索
- GitHub Projects から検索: 上記で見つからない場合、PRの内容に関連するissueをGitHub Projectsから検索する
gh issue list --repo <REPO_OWNER>/<REPO_NAME> --state open --limit 30 --json number,title,body
PRの対象リポジトリ(PRのURLから判定)に対して検索する。見つかった場合は close #ISSUE_NUMBER に設定する。
注意: issueはメインリポジトリ(ippei-shimizu/buzzbase)に集約されている場合があるため、サブモジュールのPRでもメインリポジトリのissueを検索すること。
3. 差分の分析
取得した差分とコミット履歴から以下を分析する:
- 変更されたファイルとその種類(新規/変更/削除)
- 実装の目的と内容
- 影響範囲(どのモジュール・機能に影響するか)
大きなPR(差分が多い場合)はサブエージェントを使って差分を分析する。
4. タイトルの生成
コミット履歴と差分から変更の主目的を要約し、適切なPRタイトルを生成する:
- 70文字以内の簡潔な日本語タイトル
- 変更内容の「何を」「なぜ」が一目でわかるようにする
- 既存のタイトルが適切でない場合は改善する
5. descriptionの生成
以下のテンプレートに沿ってdescriptionを生成する。差分から読み取れる事実に基づいて各セクションを埋める:
## issue
close #ISSUE_NUMBER
## 実装概要
<!-- 何をしたかを簡潔に(1-3行) -->
## 背景
<!-- なぜこの変更が必要だったか -->
## やらなかったこと
<!-- スコープ外にしたこと。なければ「特になし」 -->
## 受入基準
<!-- この PR がマージ可能と判断するための条件をチェックリストで -->
- [ ] 基準1
- [ ] 基準2
## 実装詳細
<!-- 技術的な実装内容。ファイル単位やモジュール単位で説明 -->
## スクリーンショット
<!-- UI変更がある場合のみ。なければ「なし」 -->
## 確認手順
<!-- レビュワーが動作確認するための具体的な手順 -->
1. 手順1
2. 手順2
## 影響範囲
<!-- この変更が影響する画面・機能・モジュール -->
## コード上の懸念点
<!-- レビュワーに特に見てほしい箇所や、判断に迷った実装 -->
## その他
<!-- 補足情報。なければ「特になし」 -->
6. PRへの直接反映
生成したtitleとdescriptionを gh pr edit で直接PRに反映する:
gh pr edit <PR_NUMBER> --title "<タイトル>" --add-assignee ippei-shimizu --body "$(cat <<'EOF'
<description内容>
EOF
)"
反映後、更新したtitleとdescriptionの要約をユーザーに報告する。
注意事項
- Assigneeは常に
ippei-shimizu を設定する
- 日本語で記述する
- 差分から読み取れる事実に基づいて記述し、推測が入る箇所は明示する
- issue番号が特定できない場合は
close # の行は空欄にする(推測で番号を入れない)
- 関連issueが見つかった場合は必ず
close #ISSUE_NUMBER を設定する
- 対話での確認は行わず、即座に生成・反映する