| name | resolve-pr-review-threads |
| description | PRの未Resolveレビュー指摘に対応するスキル。「PRの指摘に対応して」「Resolveされていないスレッドを解消」「PR reviewの対応」「未解決のレビューコメントを修正」「Copilotの指摘を直して」「Codexの指摘に対応」「chatgpt-codex-connectorの指摘」「レビュー対応」で起動。PR URL or 番号 → 未Resolveスレッド取得 → 対象ファイル修正 → ユーザーへ最終ゲートとプッシュの実行手順を案内、の流れで進める。 |
Resolve PR Review Threads
PRの未Resolveレビュースレッド(Copilot / Codex / chatgpt-codex-connector / 人間レビュアー)を取得し、指摘に対応した修正を行うスキル。最終ゲート実行はユーザーが行う。最後はユーザーへの実行手順案内で閉じる。
厳守事項(Hard Rules)
- 修正は最小差分: 指摘の解消に必要な最小限の変更のみ行う
- 指摘1件=1コミット: 指摘ごとに修正→ステージング→コミットを完了する(まとめてコミット禁止)
- テスト影響の確認: 修正後に
make test で既存テストが壊れないことを確認する
- 最終ゲート: 全指摘対応後の
make test-full → make check-all はユーザーが実行する
- Resolveはユーザー完了後: スレッドのResolveはユーザーが最終ゲートとプッシュを完了した後に扱う
- 対応不要/設計意図による却下はResolveしない: 理由を示してユーザーに判断を委ねる
- Git操作: AIはコミットまで実行する。最終ゲート後のプッシュはユーザーが行う
入力
| パラメーター | 既定値 | 説明 |
|---|
| PR URL or 番号 | — | 対象PR(https://github.com/<owner>/<repo>/pull/<N> または #N) |
| reviewer_filter | なし | 特定レビュアーのみ対応(copilot-pull-request-reviewer, chatgpt-codex-connector 等) |
| auto_resolve | true | ユーザーが最終ゲートとプッシュを完了した後に、スレッドを自動Resolveする意図があるか |
手順
Step 1: 未Resolveスレッドの取得
GraphQL APIで未Resolveスレッドを取得する。
gh api graphql -f query='
query($owner:String!,$repo:String!,$number:Int!){
repository(owner:$owner,name:$repo){
pullRequest(number:$number){
reviewThreads(first:100){
nodes{
id
isResolved
path
line
comments(first:5){
nodes{
author{login}
body
}
}
}
}
}
}
}' -f owner=<OWNER> -f repo=<REPO> -F number=<PR_NUMBER>
isResolved == false のスレッドだけを抽出する
reviewer_filter が指定されていれば author.login でさらに絞り込む
- 未Resolveスレッドが0件なら「未解決の指摘はありません」と報告して終了
Step 2: 指摘の分類と影響分析
取得した各スレッドを以下に分類する:
| 分類 | 判断基準 | 対応 |
|---|
| コード/ドキュメント修正 | ロジック誤り、整合性不足、欠落定義、命名不一致など | Step 3 へ |
| 設計判断の確認 | 「これは意図的か?」系の質問 | ユーザーに確認を求める |
| 誤検知/不適切 | 指摘内容が間違っている、または対応不要 | ユーザーに報告し判断を仰ぐ |
Step 3: 対象ファイルの修正(指摘ごとにコミット)
各指摘に対し以下のサブステップを繰り返す:
3.1 修正の実施
- 指摘されたファイルの該当行周辺を読み込む
- 指摘内容を理解し、修正方針を決定する
- 最小差分で修正を適用する
- 関連する他ファイルへの影響がないか確認し、必要なら連鎖修正する
make test を実行しテスト通過を確認する(ドキュメントのみの修正時はスキップ可)
修正の判断基準:
- 指摘が正当で、修正コストが低い → 即修正
- 複数ファイルにまたがる整合性修正 → まとめて修正
- 大規模リファクタが必要 → ユーザーに報告し、別PR/Issue化を提案
3.2 ステージング & コミット
git status --short で変更確認
- 指摘対応で変わったファイルだけを
git add(docs/code-review/*.md は除外)
- コミットメッセージ:
fix(<scope>): <指摘の要約>(72文字以内)
git commit → ハッシュを記録 → 次の指摘へ
Step 4: ユーザーへの実行手順案内と結果報告
全指摘の修正コミット完了後、AI は最終ゲートとプッシュを実行せず、ユーザーへ実行手順を案内して処理を完了する。最終ゲート実行はユーザーが行う。
ユーザーへの実行手順
make test-full
make check-all
git push origin <branch>
補足:
- この実行ではスレッドをResolveしない
auto_resolve=true でも、ユーザーが最終ゲートとプッシュを完了する前にはResolveしない
- プッシュ完了後に未Resolveスレッドを閉じる必要があれば、再度このスキルを実行するか手動で対応する
以下の形式で最終報告:
## レビュー指摘対応完了サマリー
**対象PR**: #<PR番号>
**未Resolveスレッド数**: <取得時の件数>
**修正対応**: <件数>件
**Resolve**: ⏳ 未実行(ユーザーの最終ゲートとプッシュ完了後に対応)
**ユーザー判断待ち**: <件数>件
**指摘対応中のテスト**: ✅ 成功 / ❌ 失敗
**最終ゲート**: ⏳ 未実行(ユーザーが `make test-full` → `make check-all` を実行)
**プッシュ**: ⏳ 未実行(最終ゲート成功後にユーザーが実行)
### コミット一覧
- `<hash1>`: <summary1>
- `<hash2>`: <summary2>
### 修正ファイル一覧
- <path> (指摘概要)
### ユーザー判断待ち(対応不要/却下提案)
- スレッド#X: <指摘概要> → <却下理由>
### ユーザーへの実行手順
1. `make test-full`
2. `make check-all`
3. `git push origin <branch>`
### 次のアクション
- [ ] `make test-full` を実行する
- [ ] `make check-all` を実行する
- [ ] 成功後に `git push origin <branch>` を実行する
- [ ] プッシュ完了後、必要に応じて未Resolveスレッドを解消する
レビュアー別の注意点
| レビュアー | 特徴 | 対応時の留意 |
|---|
copilot-pull-request-reviewer | 整合性・欠落・命名の指摘が多い | 仕様書間の一貫性を重視して修正 |
chatgpt-codex-connector | ロジック・セキュリティ・パフォーマンス指摘が多い | 実装コードへの影響を優先確認 |
| 人間レビュアー | 設計意図・運用面の質問が多い | 安易にResolveせず確認を求める |
エラーハンドリング
| 状況 | 対応 |
|---|
| GraphQL認証エラー | gh auth status で認証状態を確認し報告 |
| PRが見つからない | URLまたはPR番号の再確認を求める |
| スレッドResolve権限なし | 修正のみ実施し、手動Resolveを依頼 |
| 修正対象ファイルがローカルにない | ブランチの確認とチェックアウトを提案 |