PRレビュー指摘対応
PRのレビューコメントを取得し、未解決の指摘を分類・対応する。
入力
$ARGUMENTS に PR 番号とオプションフラグが渡される。
- PR 番号は省略可(現在のブランチから自動検出)
--bgフラグ指定でバックグラウンド実行モードに切り替え
例
/resolve-review 20→ フォアグラウンド、PR番号 20/resolve-review --bg→ バックグラウンド、PR番号は自動検出/resolve-review 20 --bg→ バックグラウンド、PR番号 20
モード判定
$ARGUMENTS に --bg が含まれるかどうかで実行モードを判定する。
--bg を除いた残りの引数をスクリプトに渡す。
--bgなし → フォアグラウンドモード(デフォルト)--bgあり → バックグラウンドモード
フォアグラウンドモード(デフォルト)
1. CI ステータスの確認(オプション)
bash ${CLAUDE_SKILL_DIR}/check.sh $SCRIPT_ARGS --watch を実行する。
Bash tool の timeout パラメータは 600000(最大値)を指定する。
$SCRIPT_ARGSが空の場合は引数なしで実行(スクリプト側で自動検出)- status が "fail" → 失敗チェック名を記録し、後続の分類で参考にする
- status が "pass" → そのまま次のステップに進む
- タイムアウト(exit 2)→ その時点の状態を記録し、次のステップに進む
- エラー終了 → 無視して次のステップに進む(この手順はオプション)
2. ヘルパースクリプトの実行
bash ${CLAUDE_SKILL_DIR}/fetch.sh $SCRIPT_ARGS を実行する。
$SCRIPT_ARGSが空の場合は引数なしで実行(スクリプト側で自動検出)- スクリプトが非ゼロ終了した場合は、stderr のエラーメッセージをユーザーに報告して終了
3. 共通分析ステップへ
fetch.sh の出力を「共通分析ステップ」に従って処理する。
バックグラウンドモード(--bg)
起動フェーズ
1. CI ステータス確認の開始
bash ${CLAUDE_SKILL_DIR}/check.sh $SCRIPT_ARGS --watch を Bash tool の run_in_background パラメータを true にして実行する。
$SCRIPT_ARGSが空の場合は引数なしで実行(スクリプト側で自動検出)
2. ユーザーへの報告
以下を報告してスキルの実行を終了する。
- バックグラウンドで CI 待機を開始したこと
- 他のコマンドを実行可能であること
- 完了したら自動的に結果を処理すること(手動確認は
/check-bg)
結果処理フェーズ
以下のいずれかの条件で結果処理フェーズを開始する。
- ユーザーが結果確認を依頼した場合
- メッセージに該当バックグラウンドタスクの system-reminder が含まれる場合
条件2の場合はまず BashOutput でステータスを確認し、まだ実行中であればユーザーのメッセージを優先して処理する(結果処理は行わない)。
3. CI ステータスの取得
BashOutput ツールで check.sh の出力を確認する。
- まだ実行中の場合はステータスを報告し、再度確認を依頼するよう案内する
- 完了した場合は CI ステータスを記録する
- status が "fail" → 失敗チェック名を記録し、後続の分類で参考にする
- status が "pass" → そのまま次のステップに進む
- タイムアウト(exit 2)→ その時点の状態を記録し、次のステップに進む
- エラー終了 → 無視して次のステップに進む(この手順はオプション)
4. ヘルパースクリプトの実行
bash ${CLAUDE_SKILL_DIR}/fetch.sh $SCRIPT_ARGS を実行する。
$SCRIPT_ARGSが空の場合は引数なしで実行(スクリプト側で自動検出)- スクリプトが非ゼロ終了した場合は、stderr のエラーメッセージをユーザーに報告して終了
5. 共通分析ステップへ
fetch.sh の出力を「共通分析ステップ」に従って処理する。
共通分析ステップ
出力の解析
スクリプトの stdout は JSON 形式で以下のフィールドを含む。
pr_number- PR番号title- PRタイトルurl- PR URLreview_threads- レビュースレッドの配列id- スレッドIDis_resolved- 解決済みかどうかis_outdated- コード変更により古くなったかどうかcomments- コメント配列(最初のコメントがレビュー指摘、以降が議論)body- コメント本文author- コメント投稿者created_at- 投稿日時path- 対象ファイルパスline- 対象行番号diff_hunk- 差分コンテキスト
reviews- サマリー本文付きレビューの配列(PENDINGと空 body は除外済み)id- レビューIDauthor- レビュアーstate- レビュー種別(APPROVED/CHANGES_REQUESTED/COMMENTED/DISMISSED)body- レビュー本文created_at- 投稿日時url- レビューURL
comments- 一般コメントの配列(minimized 除外済み、ボットは最新1件のみ)id- コメントIDbody- コメント本文author- 投稿者created_at- 投稿日時url- コメントURL
bot_comments_omitted- ボット著者(claude)の省略されたコメント数bot_comments_to_minimize- 省略されたボットコメントの node ID 配列
コメントの分類
レビュースレッド。
is_resolved == true→ 対応済み(表示をスキップ)is_resolved == false→ 要対応
レビュー(サマリー本文付き)。
state == CHANGES_REQUESTED→ 要対応(本文中の各指摘を個別の対応項目として整理する)state == COMMENTED→ 内容から要対応かどうかを判断するstate == APPROVED→ 対応不要(本文があれば情報提供として簡潔に紹介)state == DISMISSED→ 対応不要
一般コメント。内容から要対応かどうかを判断する。
- レビュー指摘(改善点、問題の指摘)→ 要対応
- サマリー・情報提供のみ → 対応不要
ユーザーへの報告
以下の形式で報告する。
- PR情報(タイトル、URL)
- 対応済み: N件
- 要対応: N件
- 要対応スレッドの詳細
- ファイルパスと行番号
- 指摘内容(最初のコメント)
- 議論の経緯(返信コメントがある場合)
is_outdated == trueの場合は「コード変更済み」と注記
- 要対応レビューの詳細
- レビュアーと
state(CHANGES_REQUESTED 等)と URL - 指摘内容(本文中で複数指摘がある場合は箇条書きに分解する)
- レビュアーと
- 要対応の一般コメントの詳細
- 投稿者とコメントURL
- 指摘内容
- bot コメント省略数(
bot_comments_omitted> 0 の場合)
対応アクションの提案
各未解決スレッドについて。
- コード変更が必要な場合は、具体的な修正箇所と修正内容を示す
- 質問に対しては、明確な回答を準備する
- 対応不要と判断した場合は、その理由を説明する
すべてのコメントに対応した後、レビュアーに再確認を依頼することを提案する。
スレッドの resolve
対応が完了したスレッドがある場合、resolve を提案する。対象は以下のいずれかに該当する未解決スレッド。
- コード修正により対応が完了した
is_outdated == true(コード変更で古くなった)- 分析の結果、対応不要と判断した
提案時の手順。
- 対象スレッド数と各スレッドの概要(ファイルパス、指摘内容の要約)を報告
- ユーザーの承認を得てから resolve.sh を実行
- 実行結果(resolve 済み件数)を報告
- resolve.sh が非ゼロ終了した場合は、失敗したスレッドの警告メッセージをユーザーに報告する
bot コメントの折りたたみ
bot_comments_to_minimize が空でない場合、ユーザーに折りたたみを提案する。
- 対象コメント数を報告
- ユーザーの承認を得てから minimize.sh を実行
- 実行結果(折りたたみ済み件数)を報告