現在ブランチのPRに対して copilot-pull-request-reviewer を追加し、結果を簡潔に報告する。
実行ポリシー(Codex環境)
ghはprサブコマンドに限定して使う(gh authやgh apiは使わない)。- このスキルは サンドボックス解除時のみ 実行する。
sandbox_permissions=require_escalatedやprefix_ruleを使った昇格実行は行わない。 - サンドボックス有効のセッションでは
このスキルはサンドボックス解除時のみ実行可能ですと報告して停止する。
手順
- 現在ブランチのPRを取得する。
gh pr list -R <owner/repo> --head "$(git branch --show-current)" --state open --json number,url --jq '.[0]'
- PRが取得できない場合は
このブランチに紐づくPRがありませんと報告して停止する。
- Copilotレビュー履歴の有無を確認する。
gh pr view -R <owner/repo> <PR番号> --json reviews --jq '[.reviews[] | .author.login // "" | ascii_downcase] | any(test("copilot"))'
- Copilotレビューを実行する。
gh pr edit -R <owner/repo> <PR番号> --add-reviewer "copilot-pull-request-reviewer"
- 結果を報告する。
- 2が
trueかつ3が成功:copilotレビューは過去に実行済みでしたが、再実行しました: <PR URL> - 2が
falseかつ3が成功:copilotレビューを初回実行しました: <PR URL> - 3が失敗:
copilotレビューの実行に失敗しました: <PR URL>
実行用コマンド例
if [ "${CODEX_SANDBOX_MODE:-}" != "danger-full-access" ]; then
echo "このスキルはサンドボックス解除時のみ実行可能です"
exit 0
fi
REMOTE_URL=$(git remote get-url origin 2>/dev/null || true)
REPO=$(printf '%s\n' "$REMOTE_URL" \
| sed -E 's#^git@github.com:##; s#^https://github.com/##; s#\.git$##')
if [ -z "$REPO" ] || [ "$REPO" = "$REMOTE_URL" ] || ! printf '%s' "$REPO" | grep -Eq '^[^/]+/[^/]+$'; then
echo "origin からGitHubリポジトリを特定できませんでした"
exit 1
fi
BRANCH=$(git branch --show-current)
read -r PR_NUMBER PR_URL <<EOF
$(gh pr list -R "$REPO" --head "$BRANCH" --state open --json number,url \
--jq '.[0] | "\(.number // empty) \(.url // empty)"' 2>/dev/null || true)
EOF
if [ -z "$PR_NUMBER" ] || [ "$PR_NUMBER" = "null" ]; then
echo "このブランチに紐づくPRがありません"
exit 0
fi
if ! HAD_COPILOT_REVIEW=$(gh pr view -R "$REPO" "$PR_NUMBER" --json reviews \
--jq '[.reviews[] | .author.login // "" | ascii_downcase] | any(test("copilot"))' 2>/dev/null); then
echo "Copilotレビュー履歴の取得に失敗しました: $PR_URL"
exit 1
fi
if gh pr edit -R "$REPO" "$PR_NUMBER" --add-reviewer "copilot-pull-request-reviewer" >/dev/null; then
if [ "$HAD_COPILOT_REVIEW" = "true" ]; then
echo "copilotレビューは過去に実行済みでしたが、再実行しました: $PR_URL"
else
echo "copilotレビューを初回実行しました: $PR_URL"
fi
else
echo "copilotレビューの実行に失敗しました: $PR_URL"
exit 1
fi
注意
requested_reviewersは使わない。レビュー依頼中かどうかではなく、レビュー実行履歴に基づいて報告する。- このスキルはレビュー待機や自動修正ループを行わない。実行トリガーと結果報告に限定する。
- Codex実行時は、昇格実行ではなくサンドボックス解除セッションでのみ実行する。