# Copilot Review Trigger

> 現在のブランチに紐づくPRでCopilotレビューを実行する最小ワークフロー。PR有無を判定し、Copilotレビュー履歴の有無を確認したうえでCopilot reviewerを追加し、実行結果を明確に報告するときに使う。

- Skill: `satoru314/copilot-review-trigger` (Agent Skill)
- Install (CLI): `npx skillmds@latest add satoru314/copilot-review-trigger`
- Raw SKILL.md: https://api.skillmd.com/api/skills/satoru314/copilot-review-trigger/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Satoru314 (https://skillmd.com/u/satoru314)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/satoru314/copilot-review-trigger

---


現在ブランチのPRに対して `copilot-pull-request-reviewer` を追加し、結果を簡潔に報告する。

## 実行ポリシー（Codex環境）
- `gh` は `pr` サブコマンドに限定して使う（`gh auth` や `gh api` は使わない）。
- このスキルは **サンドボックス解除時のみ** 実行する。`sandbox_permissions=require_escalated` や `prefix_rule` を使った昇格実行は行わない。
- サンドボックス有効のセッションでは `このスキルはサンドボックス解除時のみ実行可能です` と報告して停止する。

## 手順

1. 現在ブランチのPRを取得する。
```bash
gh pr list -R <owner/repo> --head "$(git branch --show-current)" --state open --json number,url --jq '.[0]'
```
- PRが取得できない場合は `このブランチに紐づくPRがありません` と報告して停止する。

2. Copilotレビュー履歴の有無を確認する。
```bash
gh pr view -R <owner/repo> <PR番号> --json reviews --jq '[.reviews[] | .author.login // "" | ascii_downcase] | any(test("copilot"))'
```

3. Copilotレビューを実行する。
```bash
gh pr edit -R <owner/repo> <PR番号> --add-reviewer "copilot-pull-request-reviewer"
```

4. 結果を報告する。
- 2が `true` かつ3が成功: `copilotレビューは過去に実行済みでしたが、再実行しました: <PR URL>`
- 2が `false` かつ3が成功: `copilotレビューを初回実行しました: <PR URL>`
- 3が失敗: `copilotレビューの実行に失敗しました: <PR URL>`

## 実行用コマンド例

```bash
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実行時は、昇格実行ではなくサンドボックス解除セッションでのみ実行する。

