---
description: "現在のブランチからプッシュされていないコミットでGitHub PRを作成 — テンプレートの検出、変更の分析、プッシュ"
argument-hint: "[base-branch](デフォルト: main)"
---
# プルリクエストの作成
> PRPs-agentic-engのWirasmによる適応。PRPワークフローシリーズの一部。
**入力**: `$ARGUMENTS` — オプション。ベースブランチ名やフラグ(例: `--draft`)を含む場合があります。
**`$ARGUMENTS`のパース**:
- 認識されたフラグを抽出(`--draft`)
- 残りの非フラグテキストをベースブランチ名として扱う
- 指定がなければベースブランチのデフォルトは`main`
---
## フェーズ 1 — VALIDATE
前提条件をチェック:
```bash
git branch --show-current
git status --short
git log origin/..HEAD --oneline
```
| チェック | 条件 | 失敗時のアクション |
|---|---|---|
| ベースブランチにいない | 現在のブランチ ≠ base | 停止: "まずフィーチャーブランチに切り替えてください。" |
| クリーンなワーキングディレクトリ | コミットされていない変更がない | 警告: "コミットされていない変更があります。コミットまたはスタッシュしてください。`/prp-commit`でコミットしてください。" |
| 先行コミットがある | `git log origin/..HEAD`が空でない | 停止: "``より先行するコミットがありません。PRにする内容がありません。" |
| 既存のPRがない | `gh pr list --head --json number`が空 | 停止: "PRは既に存在: #。`gh pr view --web`で開いてください。" |
すべてのチェックが通れば続行。
---
## フェーズ 2 — DISCOVER
### PRテンプレート
PRテンプレートを順番に検索:
1. `.github/PULL_REQUEST_TEMPLATE/`ディレクトリ — 存在する場合、ファイルを一覧しユーザーに選択させる(またはdefault.mdを使用)
2. `.github/PULL_REQUEST_TEMPLATE.md`
3. `.github/pull_request_template.md`
4. `docs/pull_request_template.md`
見つかった場合、読み取ってPR本文の構造に使用。
### コミット分析
```bash
git log origin/..HEAD --format="%h %s" --reverse
```
コミットを分析して以下を決定:
- **PRタイトル**: タイププレフィックス付きのconventional commitフォーマットを使用 — `feat: ...`、`fix: ...`など
- 複数のタイプがある場合、支配的なものを使用
- 単一コミットの場合、そのメッセージをそのまま使用
- **変更サマリー**: タイプ/領域別にコミットをグループ化
### ファイル分析
```bash
git diff origin/..HEAD --stat
git diff origin/..HEAD --name-only
```
変更ファイルをカテゴリ分類: ソース、テスト、ドキュメント、設定、マイグレーション。
### PRPアーティファクト
関連するPRPアーティファクトを確認:
- `.claude/PRPs/reports/` — 実装レポート
- `.claude/PRPs/plans/` — 実行された計画
- `.claude/PRPs/prds/` — 関連PRD
存在する場合、PR本文で参照。
---
## フェーズ 3 — PUSH
```bash
git push -u origin HEAD
```
ダイバージェンスによりプッシュが失敗した場合:
```bash
git fetch origin
git rebase origin/
git push -u origin HEAD
```
リベースコンフリクトが発生した場合、停止してユーザーに通知。
---
## フェーズ 4 — CREATE
### テンプレートあり
フェーズ 2でPRテンプレートが見つかった場合、コミットとファイル分析を使用して各セクションを記入。テンプレートのすべてのセクションを保持 — 該当しないセクションは削除せず"N/A"とする。
### テンプレートなし
このデフォルトフォーマットを使用:
```markdown
## Summary
<このPRが何をしてなぜかの1-2文の説明>
## Changes
<領域別にグループ化された変更の箇条書きリスト>
## Files Changed
<変更タイプ付きの変更ファイルのテーブルまたはリスト: Added/Modified/Deleted>
## Testing
<変更のテスト方法の説明、または"Needs testing">
## Related Issues
```
### PRの作成
```bash
gh pr create \
--title "" \
--base \
--body ""
# $ARGUMENTSから--draftフラグがパースされた場合は--draftを追加
```
---
## フェーズ 5 — VERIFY
```bash
gh pr view --json number,url,title,state,baseRefName,headRefName,additions,deletions,changedFiles
gh pr checks --json name,status,conclusion 2>/dev/null || true
```
---
## フェーズ 6 — OUTPUT
ユーザーへの報告:
```
PR #:
URL:
Branch: →
Changes: + - across files
CI Checks: <ステータスサマリー or "pending" or "none configured">
Artifacts referenced:
-
Next steps:
- gh pr view --web → ブラウザで開く
- /code-review → PRをレビュー
- gh pr merge → 準備ができたらマージ
```
---
## エッジケース
- **`gh` CLIがない**: 停止: "GitHub CLI (`gh`) が必要です。インストール: "
- **未認証**: 停止: "まず `gh auth login` を実行してください。"
- **フォースプッシュが必要**: リモートがダイバージしてリベースが行われた場合、`git push --force-with-lease`を使用(`--force`は使わない)。
- **複数のPRテンプレート**: `.github/PULL_REQUEST_TEMPLATE/`に複数のファイルがある場合、一覧してユーザーに選択させる。
- **大きなPR(20ファイル超)**: PRサイズについて警告。変更が論理的に分離可能なら分割を提案。