pr-creator
現在のブランチの変更からGitHub PRを作成する。
PR説明文の生成は pr-description スキルに委譲し、その出力をPR本文として使用する。
ユーザーとのやり取りはすべて日本語で行う。
スコープの境界
- PR説明文の生成ロジックはこのスキルに含まない。
pr-descriptionスキルを呼び出して委譲する - PRの作成(
gh pr create)、ブランチのpush、メタデータ(ラベル・レビュアー)の設定がこのスキルの責務 - PR作成後のレビュー・CI修正は対象外(pr-reviewer / local-autofix-pr の領域)
Degrees of Freedom
- PR説明文: No freedom —
pr-descriptionスキルの出力をそのまま使用する - タイトル選定: Low freedom —
pr-descriptionが提示するタイトル候補から選択。ユーザーが別案を指定した場合はそれに従う - ブランチ操作: Low freedom — push先・ベースブランチの判断。必ずユーザーに確認
- メタデータ設定: Medium freedom — ラベル・レビュアーの提案。引数で指定されたものは必ず設定、追加提案はユーザー確認
引数
pr-creator スキル(--base <ブランチ> --draft --reviewer <ユーザー,...> --label <ラベル,...> --template <テンプレートパス> --format <フォーマット指示> の各オプション指定可)
--base <ブランチ>(任意): マージ先のベースブランチ。省略時は main → master の順で自動検出--draft(任意): ドラフトPRとして作成--reviewer <ユーザー,...>(任意): レビュアーをカンマ区切りで指定--label <ラベル,...>(任意): ラベルをカンマ区切りで指定--template <パス>(任意): PR説明文テンプレートのパス(pr-descriptionに渡す)--format <指示>(任意): PR説明文のフォーマット指示(pr-descriptionに渡す)
実行フロー
Step 1: 前提条件の確認
以下を順に確認し、一つでも失敗したら作業に入らずユーザーに通知する。
- gitリポジトリ内 —
git rev-parse --is-inside-work-tree - gh CLIで認証済み —
gh auth status - 現ブランチがmain/masterではない — main/masterから直接PRを作ろうとしている場合は警告し、ブランチ作成を提案
- コミット済みの変更がある — ベースブランチとの差分が存在すること(
git log <base>..HEAD --onelineが空でないこと) - 同一ブランチの既存PRがない —
gh pr view --json number,state,urlで確認。既にOpen PRがあれば、そのURLを提示して「既存PRを更新しますか? 新規PRを作りますか?」と確認
Step 2: 未コミット変更の確認
git status --porcelain で未コミット・未追跡ファイルを確認する。
- 未コミット変更がある場合: 変更内容を一覧表示し、推奨案を含む複数の選択肢を提示してユーザーに確認:
- コミットしてからPR作成:
commiterスキルに委譲してコミットし、その後Step 3に進む - 現状のコミット済み内容でPR作成: 未コミット変更は無視してPR作成を進める
- 中止: PR作成を取りやめ
- コミットしてからPR作成:
- クリーンな場合: そのままStep 3に進む
Step 3: ベースブランチの決定
--base 引数が指定されている場合はそれを使用。未指定の場合:
- リモートに
mainが存在するか確認:git ls-remote --heads origin main - 存在しなければ
masterを確認:git ls-remote --heads origin master - どちらもなければユーザーにベースブランチを確認
Step 4: リモートへのpush
現ブランチがリモートに追跡ブランチを持つか確認し、pushする。
git rev-parse --abbrev-ref --symbolic-full-name @{u}でリモート追跡ブランチを確認- 追跡ブランチがない場合:
git push -u origin <branch>で初回push - 追跡ブランチがある場合: ローカルがリモートより先行しているか確認し、先行分があれば
git push - push失敗時はエラー内容をそのまま報告し、ユーザーに対応を委ねる
Step 5: PR説明文の生成
pr-description スキルを呼び出してPR説明文を生成する。
呼び出し時の引数構成(Skillツールの args に渡す文字列):
/tmp/pr-body-<branch-name>.md --base <ベースブランチ> [--template <パス>] [--format <指示>]
- 先頭の positional argument(出力先パス)は必須。必ず
/tmp/pr-body-<branch-name>.mdを渡す --base: Step 3で決定したベースブランチ--template: 引数で指定されていれば転送--format: 引数で指定されていれば転送
pr-description の出力からPRタイトル候補も得られるので、以降のStep 6で使用する。
⚠️ フロー継続の注意: pr-description の出力(ファイル生成 + タイトル候補提示)が完了したら、ユーザーの追加入力を待たず、同一ターン内で即座に Step 6 に進むこと。pr-description の出力はこのスキルの中間成果物であり、ユーザーへの最終報告ではない。
Step 6: PRタイトルの選定
pr-description スキルが提示するPRタイトル候補(Conventional Commits形式・72文字以内)をユーザーに提示し、推奨案を含む複数の選択肢を提示してユーザーに選定してもらう。
選択肢:
- 推奨案(第1候補)
- 第2候補
- 第3候補
- 自由入力(ユーザーが独自のタイトルを指定)
Step 7: PR作成前の最終確認
以下の情報をまとめて提示し、「作成」「修正」「中止」の選択肢を提示してユーザーに確認する。
## PR作成確認
- タイトル: <選択されたタイトル>
- ベースブランチ: <base> ← <head>
- ドラフト: はい / いいえ
- レビュアー: <指定されていれば表示>
- ラベル: <指定されていれば表示>
- 説明文: <pr-descriptionが生成した概要の冒頭数行>
「修正」が選択された場合、修正したい箇所をユーザーから受け取り該当Stepに戻る。
Step 8: PRの作成
gh pr create でPRを作成する。
gh pr create \
--title "<タイトル>" \
--body-file /tmp/pr-body-<branch-name>.md \
--base <ベースブランチ> \
[--draft] \
[--reviewer <ユーザー>] \
[--label <ラベル>]
引数の構成:
--title: Step 6で選定したタイトル--body-file: Step 5で生成したPR説明文ファイル--base: Step 3で決定したベースブランチ--draft:--draft引数が指定されている場合のみ付与--reviewer:--reviewer引数が指定されている場合のみ付与(カンマ区切りの場合は複数回--reviewerを指定)--label:--label引数が指定されている場合のみ付与
Step 9: 完了報告
PR作成成功後、以下を報告する。
## PR作成完了
**URL**: <PR URL>
**タイトル**: <タイトル>
**ベースブランチ**: <base> ← <head>
**状態**: Open / Draft
### 次のアクション
- CIの実行結果を確認
- レビュアーへの依頼(未設定の場合)
一時ファイル /tmp/pr-body-<branch-name>.md はPR作成後も残す(ユーザーが参照・再利用できるように)。
エラーハンドリング
gh CLI 未認証
gh auth status 失敗時は gh auth login を案内。
リモートリポジトリなし
git remote -v が空の場合、リモート設定を案内。
push権限なし
git push が 403 や denied で失敗した場合、フォークリポジトリの可能性を確認し、ユーザーに対応方法を提示。
PR作成失敗
gh pr create がエラーの場合、エラーメッセージをそのまま報告。よくある原因:
- リポジトリの権限不足 → コラボレータ追加 or フォークPRを案内
- ベースブランチが存在しない → 正しいブランチ名を確認
- 同名PRが既に存在 → 既存PRのURLを提示
pr-description スキルの呼び出し失敗
PR説明文の生成に失敗した場合、手動でのPR説明文入力へのフォールバックは行わず、エラー内容を報告して原因の解消を促す。
ガイドライン
- すべてのやり取りは日本語(コード・コマンド・タイトルは原語のまま)
- push前にユーザー確認を省略しない — 特にmain/masterへの直接pushは追加警告
- PR説明文の生成は必ず
pr-descriptionスキルに委譲 — このスキル内で独自にPR説明文を組み立てない - 一時ファイルのパスは固定パターン —
/tmp/pr-body-<branch-name>.mdで予測可能にする - PRタイトルはConventional Commits形式 —
pr-descriptionスキルの出力を尊重 - 既存PRの検出を怠らない — 重複PR作成を防ぐ