| name | pr-check |
| description | PR がレビューを受け付けてよい前提条件を満たすかを判定し、結果を PR にコメントする。「pr-check」「PRをチェックして」と指示されたとき。 |
| argument-hint | [PR番号] |
PR Check
PRが、レビューを依頼する前に満たすべき前提条件を満たしているかを判定する中立ツール。レビュワーが「レビューを受け付けてよいか」を、レビュイーが「依頼してよい状態か」を確認するために、どちらの立場でも同じ基準で使える。判定結果(OK / NG)は必ず PR にコメントで残し、チェックが実施された事実を可視化する。
本スキルの役割と参照先
[!IMPORTANT]
(AI・必須) 判定基準(前提条件の中身・サイズの閾値など)は docs/policy/pr-review-policy.md の「PRを出す側が満たすべきレビューの前提条件」節が正。本スキルはそれを実行する手順だけを定義し、基準本文は再掲しない(二重管理を避けるため)。記述がポリシーと食い違うときは常にポリシーを正とする。
実行開始時に上記ポリシーの該当節と「PRは小さく保つほどレビュー品質が上がる」節を読み、その基準で判定すること。
チェック対象
ポリシーが挙げる前提条件のうち、本スキルが判定するのは次の表の項目だけ。
| 項目 | 判定方法 |
|---|
| PR説明の記載 | PR本文に「何を・なぜ変えたか」の実質があるかを AI が読んで判定する。空・テンプレート丸写し・「修正した」等の中身のない記述は NG |
| PRサイズ | 差分行数(追加+削除)が 400行以上(ポリシーの「大」)なら NG。自動生成ファイル・ロックファイル・スナップショット等の機械的変更はファイル毎差分を見て AI が除外して合計する |
[!NOTE]
前提条件のうち「CIの全成功」は 本スキルの対象外。GitHub の Checks 画面で確認できるため、ここでは判定しない。
処理フロー
1. 対象PRの特定
- 引数に PR 番号があればそれを対象にする。
- 無ければ
gh pr view --json number で現ブランチに紐づく PR を対象にする。
- PR が見つからない場合は、判定を止めてその旨を表示して終了する(本スキルは既存 PR が前提)。
2. PR情報の取得
1コマンドで本文とファイル毎差分を取得する。
gh pr view <PR番号> --json number,title,body,files
files は [{ path, additions, deletions }, ...] を返す。
3. 判定
ポリシーの基準に照らし、「チェック対象」の各項目を判定する。
- PR説明:
body を読み、実質があるか AI が判定する。
- PRサイズ:
files から機械的変更(*-lock.json・yarn.lock・pnpm-lock.yaml・*.snap・生成物ディレクトリ等、明らかに機械生成のもの)を AI が除外し、残りの additions + deletions を合計する。400 以上なら NG。
すべて問題なければ OK、1つでも欠ければ NG。
4. 結果の出力
- OK の場合:チェックした事実を残すため、次のとおり
gh pr comment で 1件だけ 投稿する。手元にも判定結果(各項目 OK/差分行数)を表示する。
gh pr comment <PR番号> --body "PRチェックOK"
- NG の場合:次のとおり
gh pr comment で 1件だけ 投稿する。OK 項目は載せず、NG 項目だけを MUST: ラベルで列挙する。
gh pr comment <PR番号> --body "$(cat <<'EOF'
## PRレビュー前提チェック: NG
レビューを依頼する前に、以下を満たしてください。
MUST: <NG項目の具体的な指摘(例: PR本文に変更の目的が書かれていません。何を・なぜ変えたかを追記してください)>
MUST: <NG項目の具体的な指摘(例: 差分が 約520行 で「大(400行以上)」です。分割を検討してください。まとめた方が適切と判断する場合は、その理由を本文に添えてください)>
EOF
)"
- 投稿する
MUST 行は、その回で NG だった項目だけにする。
- コメント本文に pr-review-policy へのリンクは入れない(コメントの可搬性を保つため)。
- 投稿後、コメントの URL を表示して完了とする。
- 同じ PR で再実行した場合も、重複チェックはせず毎回新規コメントを投稿する。
使用方法
/pr-check # 現ブランチの PR をチェック
/pr-check 123 # PR #123 をチェック