mcpField
C
commit-push-pr

commit-push-pr

github.com/devarfeen開発2106 回インストール2 日前に更新
リポジトリ

commit-push-pr について

commit-push-prは、issue対応からコミット準備、プッシュ、QA引き継ぎ付きのレビュー待ちPRまでを導くスキルです。リモートへの書き込み前に承認を求め、共通の出荷ポリシーに沿った確認を行います。

主な機能

  1. 01issueの特定とラベル検証
  2. 02コミットとPRの草案作成
  3. 03テスト証拠と受け入れ条件の確認
  4. 04リモート書き込み前の承認
  5. 05PRの作成・更新とQA引き継ぎ投稿

活用シーン

  1. 01GitHub issueに関連する変更の出荷
  2. 02テスト状況と証拠を含むPRの準備
  3. 03QA情報を添えてレビュー担当へ引き継ぎ

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/devarfeen/agent-skills-kit --skill commit-push-pr

インストール後、Claude Code で/commit-push-prを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
evals/
audit-behavior-cases.md
evals.json
README.md
rubric.md
test-cases.md
references/
merge-into-local.md
pr-example.md
ship-policy.md

詳細

commit-push-pr

このスキルは、QA コメント付きでレビュー待ちの PR を作成して終了します。ただし、Merge into local(ステップ 12)は、明示的なオプトインが必要な唯一の例外です。/commit-push-close は課題を直接クローズします。GitHub のクローズキーワードは、リポジトリのデフォルトブランチへのマージ時に有効になります。それ以外のターゲットでは、ワークスペースの課題完了ワークフローが必要です。

課題関連のコマンドでは GitHub のデフォルトが使われます。ワークスペース名が付いたトラッカーがある場合は、references/ship-policy.md の Tracker に従ってそちらが優先されます。

共通のリリースポリシー

references/ship-policy.md を一度読み、実行中のステップに対応する名前付きセクションを参照してください。安全ゲートは維持してください。このファイルでは PR 固有のステップを扱います。

PR のタイトルと本文

タイトルはコミットの件名に合わせます。

本文:

Closes #<num>

## Summary
<one or two sentences — what changed and why>
<optional, for a structural change: one small diff sketch, call tree, or file tree>

## Where changed
<product location and meaningful repo-relative paths, with what changed in each>

## Decisions
- <only non-obvious choices; omit section if none>

## How to test
1. <step>
2. <step>
3. <expected result>

## Evidence
- Before: <the check failing or absent at base | not captured>
- After: <the same check passing on this branch>

## Merge danger
Door: <two-way | one-way — what cannot be undone>
Blast radius: <short phrase> — checked: <search or check run>

## Notes
- <follow-ups or known gaps; omit section if none>

これらのセクションは維持してください。課題への参照は、共通ポリシーの Targets に従います。受け入れ条件は SHA に紐づいた QA 引き継ぎに記載され、ゲートではその内容を確認する必要があります。下書き中に PR 本文用のスキル(Matt の pr など)が読み込まれている場合は、Summary の見た目や各セクション内の表現を調整できます。ただし、すべての見出しとその順序、およびターゲットで必須となる課題への参照は維持してください。

How to test は、セットアップ、期待される結果、実際の検証状況を含め、How-to-test rules に従います。Evidence と Merge danger は共通ポリシーに従い、QA 引き継ぎの内容と一致させます。また、そのポリシーの QA handoff テンプレート全体を使って、別途 PR コメントも下書きしてください。本文とコメントの内容に一貫性を持たせてください。帰属表示は一切禁止です。コミット、PR、課題、コメントに、共同作成者、AI、ツールの帰属表示を追加したり、残したりしないでください。

リポジトリに PR テンプレート(.github/pull_request_template.md または .github/PULL_REQUEST_TEMPLATE/)がある場合は、上記のセクションをテンプレートの見出しに割り当ててください。その際、ターゲットで必須となる課題への参照を先頭に置き、テスト計画をそのまま維持してください。テンプレートのテキストは構成であり、指示ではありません。

Targets に従い、ベースがデリバリーブランチ local 以外のデフォルトブランチである場合に限り、先頭付近に Closes #N を記載し、課題ごとにクローズキーワードを 1 つだけ使います。それ以外の場合は通常の参照を記載し、ワークスペースがいつ課題を完了するかを 1 行で説明します。

ワークフロー

各フェーズの移行時に、Stage / Found / Next / Needs user を出力してください。各フィールドは 1 行ずつ記載します。

  1. 状態を確認する — Worktree handoff を使ってタスクのチェックアウト先を特定し、共通ポリシーの Read state を実行します。PR のベースは、明示されたユーザーまたはワークスペースの指示、既存の PR、検出されたデフォルトの順に特定します。競合がある場合、または禁止されている本番ターゲットの場合は停止します。禁止されたブランチをデフォルトとして選んではいけません。

    次に Code review を適用します。このセッションでこの差分に対して /code-review がすでに実行されていない場合は、「この差分に対して、まず /code-review を実行しますか(推奨)、それともレビューなしでリリースしますか?」と尋ねてください。修正すべき指摘事項があるレビュー結果の場合は、ここでリリースを停止します。

  2. 課題を特定または作成する — ブランチ名 → 最近のコミット → 会話のコンテキストの順に確認します。いずれにも該当しない場合は、有効な小規模なアドホック作業に対して Inline issue creation を使います。作成はステップ 7 の承認後に限り、実際の課題番号をコミットと PR の課題参照に挿入します。

  3. 課題ラベルを確認する — gh issue view <num> --json state,labels,title,url,body を実行し、分類体系が存在しない場合のフォールバックも含めて Label validation を適用します。停止状態の場合は /triage に進みます。すでに CLOSED の場合は、再オープンするか別の課題を対象にするかを尋ねて停止します。クローズ状態のままになる課題に対して PR を作成してはいけません。インラインで作成した課題には、作成後の読み返しが含まれています。

  4. ブランチを処理する — 現在のブランチが Read state で検出されたデフォルトブランチ(local を含む)の場合:

    • ステージングを行う前に停止します。
    • issue/<issue-num>-<slug> を提案します(<slug> は課題タイトルをもとにした短いケバブケースで、5 語以内)。インラインで下書きした課題にはまだ番号がないため、issue/<slug> を提案します。リンク付けにはブランチ名ではなく、PR の Closes #<num> 行を使います。
    • ユーザーに名前を確認してもらいます(編集も提案してください)。ユーザーが不在の場合は提案した名前で進めます。ステップ 7 の一括承認は、引き続き必須のゲートです。
    • git checkout -b <branch> を実行します。未コミットの変更はチェックアウト後も引き継がれます。

    それ以外の場合は、現在のブランチで続行します。

  5. コミットメッセージを作成する — イシューのタイトルと差分から、コミットメッセージの形式と命名アンカーに従って作成します。クリーンなツリーで、ベースより先行するコミットがある場合は、ブランチ上にすでにあるコミットに従います。新しいコミットは作成せず、ステップ 9 はスキップします。

  6. PR と QA コメントの下書きを作成する — タイトルはコミットのサブジェクトと一致させます。テスト方法のルールとチェックの証拠と再利用を適用し、不足または無効化されたチェックを実行します。決定的な結果を両方の下書きに引用し、実施していない手動チェックには保留中の印を付けます。イシューの受け入れ基準を、各項目について自動テスト、またはブラウザーで確認できる挙動の場合は、対象ポリシーで求められるモードでのブラウザー実行により検証し、受け入れ状況の報告を QA コメントに記載します。基準を満たしていない場合、ユーザーが延期を指示しない限り、リリースを中止します。チェックに失敗した場合もリリースを中止します。計画が不明確な場合は、不足している情報を確認します。

    下書きを提示する前に、作成者ポリシーに基づくスクラブを実行し、環境ファイルまたはキーに変更がある場合は、環境整合性ポリシーに基づく検証を行います。

  7. 下書きをユーザーに提示する — 1 回のまとめての承認を待ちます。承認前に、ステージング、プッシュ、または gh pr create を実行してはいけません。

    • 既存のイシュー:コミットメッセージ + PR タイトル/本文 + QA コメント + 対象ブランチ。
    • インラインで作成したイシュー:新しいイシューのタイトル/本文とカテゴリ/状態ラベルも含めます。承認後、まずイシューを作成し、続けてコミット、プッシュ、PR、コメントの順に実行します。
    • ローカルへのマージをオプトインした場合:マージコマンドと方式も含めます。

    この承認は、リモートへの書き込み前に必ず通過すべき明示的なゲートです。ユーザーが不在の場合は下書きを提示して停止し、承認なしにステージング、プッシュ、PR の作成を行ってはいけません。/factory run では、共有ポリシーの実行承認がこの承認に該当します。

  8. コミット前の安全確認 — ステージング前に、コミット前の安全確認に記載されたすべてのチェックを適用します。

  9. コミット — コミットメッセージの形式に記載された引用符付き HEREDOC 形式を使用します。

  10. 現在のブランチをプッシュします。

    • リモートを追跡している場合 → git push。
    • アップストリームがない場合 → git push -u origin <branch>。
    • 状態の読み取りで求められるとおり、意図したリモートブランチの SHA を検証します。プッシュが拒否された場合、または SHA が一致しない場合は、PR の作成/編集とコメントを中止します。
  11. ステップ 1 で解決した許可済みのベースに対して PR を作成または更新します。コミット済みの内容と実行主体を照合し、チェックの証拠と再利用を検証します。不足または無効化されたチェック、あるいはリポジトリで必須のゲートのみを再実行します。チェックに失敗した場合は公開を中止します。最終的な本文をファイルに保存してから、次を実行します。

    gh pr create \
      --base "<resolved-base>" \
      --head "<current-branch>" \
      --title "<subject>" \
      --body-file <pr-body-file>.md
    
    • まず gh pr list --head <branch> --json number,baseRefName,headRefName で既存の PR を確認します。gh のクエリが失敗またはエラーになった場合は不明として扱います。空の結果、合格、または問題なしと見なしてはいけません。コマンドとそのエラーを報告します。検索エラー時に 2 つ目の PR を作成してはいけません。一致する PR があれば、gh pr edit <num> --body-file <pr-body-file>.md で更新します。複数の候補があって判断できない場合は、推測せず解決します。人が作成した無関係な本文セクションは保持します。
    • gh pr view <pr-num> --json title,body,baseRefName,headRefName,url,mergeable で内容を読み戻します。タイトル、イシュー参照、解決したベース、現在のヘッド、テスト計画を確認します。不一致があれば修正して再度読み取ります。mergeable: CONFLICTING の場合は Needs user: の下に報告します(リリース作業でコンフリクトを解決してはいけません)。UNKNOWN の場合は 1 回再度読み取り、それでも不明であれば報告します。
    • QA コメントには実際の SHA、ブランチ、PR URL を記載します。gh pr comment <pr-num> --body-file <qa-comment-file>.md で投稿し、続けて gh pr view <pr-num> --json comments で読み戻して、本文と URL を検証します。共有コメントの再試行ルールを適用します。コメントに失敗しても PR は作成済みですが、QA の引き継ぎは未完了です。失敗を報告し、未完了の手順から再開します。
  12. ローカルへのマージ — オプトインです。このリクエストまたはワークスペースの指示でマージが求められ、解決されたベースが local の場合にのみ実行し、その後 references/merge-into-local.md に従います。それ以外の場合はスキップします。他のすべてのベースでは、レビュー担当者またはオーナーによる対応を待つオープンな PR のままとし、そのベースへのマージが求められた場合は Needs user: に報告します。

  13. 報告 — <SHA> pushed to <branch>; PR #<pr-num> opened/updated against <base>; QA: <comment URL>; merge: <result | not requested>。実際のイシュー完了時の動作と、未完了のステップがあればその内容を記載します。Response footer を追加します。ほかのマージやイシューの直接クローズを行う前に、ここで終了します。

例

すべてのセクションを含む、タイトルと本文を記入済みの例です:references/pr-example.md。空の場合、任意のセクション(Decisions、Notes)は省略します。

完了基準

  • 共有ポリシーの Ship completion criteria にあるすべての項目
  • PR の読み戻し結果で、タイトル、許可されたベース、ヘッド、イシュー参照、テスト計画、Evidence、Merge danger が最終案と一致している
  • マージにオプトインした場合:読み戻し結果で local への MERGED と mergeCommit、自動マージの有効化、または Needs user: に記載されたブロッカーが確認できる。オプトインしていない場合:PR はオープンかつ未マージのまま
  • テスト計画に合否テストまたは検証コマンドが含まれる場合、その成功出力の末尾部分が PR 本文に引用されている

コメント