mcpField
M
manage-pr

manage-pr

github.com/klausborges開発1110 回インストール2 週間前に更新
リポジトリ

manage-pr について

`gh`でGitHubのプルリクエストを作成・更新し、積み重ねたPRを調整するスキルです。リポジトリの規約と実施済みの検証を重視し、マージはユーザーに委ねます。

主な機能

  1. 01コミット、差分、PR状態の確認
  2. 02タイトルとテンプレート本文の作成
  3. 03ブランチをメインのリモートへプッシュ
  4. 04積み重ねたPRのリベース調整
  5. 05マージはユーザーに委任

活用シーン

  1. 01ブランチ作業後のPR作成
  2. 02リポジトリ規約に沿った既存PRの更新
  3. 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 テンプレート、タイトルチェック、コントリビューションガイドなど、リポジトリに明示的な規則がある場合は、ここでのデフォルトより優先されます。

作成または更新

  1. まず状態を確認します:git log <base>..HEAD --oneline、git diff <base>...HEAD --stat、既存 PR の状態を確認する gh pr view。
  2. タイトル:type(scope): description。
  3. 以下のテンプレートを --body-file で渡します。gh がプロンプトを表示しないよう、明示的なフラグを指定します。
  4. 先にブランチをプライマリリモートへプッシュします(git push -u <primary> <branch>。通常、リポジトリにはリモートが 2 つあり、upstream が設定されていないと gh がプロンプトを表示します)。
  5. レビュー可能な状態で作成し、自分を割り当てます:gh pr create --assignee @me --base <base> --title <title> --body-file <file>。
  6. Verification には、実際に実行したコマンドとその結果のみを記載します。

テンプレート(空の場合は Notes を省略します):

## Summary

- 変更内容とその理由を示す、簡潔な箇条書き 2~5 項目。
- #N をベースにしています。(スタック PR の場合のみ)

## Verification

- 実行したコマンドとその結果。

## Notes

- リスク、移行順序、またはレビュー時の参考情報。

スタック

複数の PR にまたがる作業では、ブランチを下から上へ連結します。最初の PR はデフォルトブランチをベースにし、それ以降の PR はそれぞれ直前のブランチをベースにします。すべての PR が個別にグリーンである状態を保ち、スタックが論旨のように順序立って読めるようにします。

マージの手順

「PR をマージしましょう」と言われたら、スタックを下から上へ確認し、各ブランチの現在の tip を記録して、最下位の PR のリンクを返し、待ちます。「merged #N」と言われるたびに(マージ方法は問いませんが、squash がよく使われます)、次の手順を実行します。

  1. プライマリリモートをフェッチし、ローカルのデフォルトブランチを fast-forward します。
  2. 記録した tip を使って、次のブランチを最新のデフォルトブランチへリベースします:git rebase --onto <default> <old-base-tip> <branch>。その後、残りの各ブランチも同様に、書き換え後の親ブランチへリベースします:git rebase --onto <parent> <old-parent-tip> <branch>。新しい tip を記録します。
  3. コンフリクトが発生したら停止して報告します。半端に解決されたリベースはプッシュしません。
  4. 各ブランチの内容が保持されていることを確認します:git range-diff <old-base-tip>..<old-tip> <new-base>..<branch> に表示されるのがベースの変更のみであることを確認します。その後に限り、--force-with-lease を付けてプッシュします。
  5. 次の PR のベースを変更します(gh pr edit <next> --base <default>)。その PR のリンクを返し、次の「merged #N」を待ちます。マージが squash 以外の場合も、同じ手順で同期し直します。最後の PR の後、スタックが完了したことを確認し、ローカルのクリーンアップを提案します(worktree でチェックアウトされているブランチは、先に git worktree remove が必要です)。

ガードレール

  • マージするのはユーザーです。このスキルはマージしません。
  • プライマリリモートは名前で特定します。これらのリポジトリには origin というリモートはありません。
  • 計画やマイルストーンの情報をタイトルや本文に含めないでください。

出力

PR の URL、またはマージの手順中は次の PR のリンクと残りのスタックを出力します。

コメント