manage-pr について
`gh`でGitHubのプルリクエストを作成・更新し、積み重ねたPRを調整するスキルです。リポジトリの規約と実施済みの検証を重視し、マージはユーザーに委ねます。
主な機能
- 01コミット、差分、PR状態の確認
- 02タイトルとテンプレート本文の作成
- 03ブランチをメインのリモートへプッシュ
- 04積み重ねたPRのリベース調整
- 05マージはユーザーに委任
活用シーン
- 01ブランチ作業後のPR作成
- 02リポジトリ規約に沿った既存PRの更新
- 03PRマージ後のスタック進行
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ klausborges/ workflow-skills --skill manage-prインストール後、Claude Code で/manage-prを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yamlskill.toml
詳細
PR の管理
タイトル、スタイル、リモート名の規則には git-conventions スキルに従います。PR はリポジトリのプライマリリモートに作成します。このスキルでは gh を使って GitHub に対応します。PR テンプレート、タイトルチェック、コントリビューションガイドなど、リポジトリに明示的な規則がある場合は、ここでのデフォルトより優先されます。
作成または更新
- まず状態を確認します:
git log <base>..HEAD --oneline、git diff <base>...HEAD --stat、既存 PR の状態を確認するgh pr view。 - タイトル:
type(scope): description。 - 以下のテンプレートを
--body-fileで渡します。ghがプロンプトを表示しないよう、明示的なフラグを指定します。 - 先にブランチをプライマリリモートへプッシュします(
git push -u <primary> <branch>。通常、リポジトリにはリモートが 2 つあり、upstream が設定されていないとghがプロンプトを表示します)。 - レビュー可能な状態で作成し、自分を割り当てます:
gh pr create --assignee @me --base <base> --title <title> --body-file <file>。 - Verification には、実際に実行したコマンドとその結果のみを記載します。
テンプレート(空の場合は Notes を省略します):
## Summary
- 変更内容とその理由を示す、簡潔な箇条書き 2~5 項目。
- #N をベースにしています。(スタック PR の場合のみ)
## Verification
- 実行したコマンドとその結果。
## Notes
- リスク、移行順序、またはレビュー時の参考情報。
スタック
複数の PR にまたがる作業では、ブランチを下から上へ連結します。最初の PR はデフォルトブランチをベースにし、それ以降の PR はそれぞれ直前のブランチをベースにします。すべての PR が個別にグリーンである状態を保ち、スタックが論旨のように順序立って読めるようにします。
マージの手順
「PR をマージしましょう」と言われたら、スタックを下から上へ確認し、各ブランチの現在の tip を記録して、最下位の PR のリンクを返し、待ちます。「merged #N」と言われるたびに(マージ方法は問いませんが、squash がよく使われます)、次の手順を実行します。
- プライマリリモートをフェッチし、ローカルのデフォルトブランチを fast-forward します。
- 記録した tip を使って、次のブランチを最新のデフォルトブランチへリベースします:
git rebase --onto <default> <old-base-tip> <branch>。その後、残りの各ブランチも同様に、書き換え後の親ブランチへリベースします:git rebase --onto <parent> <old-parent-tip> <branch>。新しい tip を記録します。 - コンフリクトが発生したら停止して報告します。半端に解決されたリベースはプッシュしません。
- 各ブランチの内容が保持されていることを確認します:
git range-diff <old-base-tip>..<old-tip> <new-base>..<branch>に表示されるのがベースの変更のみであることを確認します。その後に限り、--force-with-leaseを付けてプッシュします。 - 次の PR のベースを変更します(
gh pr edit <next> --base <default>)。その PR のリンクを返し、次の「merged #N」を待ちます。マージが squash 以外の場合も、同じ手順で同期し直します。最後の PR の後、スタックが完了したことを確認し、ローカルのクリーンアップを提案します(worktree でチェックアウトされているブランチは、先にgit worktree removeが必要です)。
ガードレール
- マージするのはユーザーです。このスキルはマージしません。
- プライマリリモートは名前で特定します。これらのリポジトリには
originというリモートはありません。 - 計画やマイルストーンの情報をタイトルや本文に含めないでください。
出力
PR の URL、またはマージの手順中は次の PR のリンクと残りのスタックを出力します。
コメント
Markdown 対応