# Resolve Review

> PRレビューコメントを取得し対応が必要な項目を確認 (user)

- Skill: `rysk-tanaka/resolve-review` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add rysk-tanaka/resolve-review`
- Raw SKILL.md: https://api.skillmd.com/api/skills/rysk-tanaka/resolve-review/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: rysk-tanaka (https://skillmd.com/u/rysk-tanaka)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/rysk-tanaka/resolve-review

---


# 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`）

### 結果処理フェーズ

以下のいずれかの条件で結果処理フェーズを開始する。

1. ユーザーが結果確認を依頼した場合
2. メッセージに該当バックグラウンドタスクの 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 URL
- `review_threads` - レビュースレッドの配列
  - `id` - スレッドID
  - `is_resolved` - 解決済みかどうか
  - `is_outdated` - コード変更により古くなったかどうか
  - `comments` - コメント配列（最初のコメントがレビュー指摘、以降が議論）
    - `body` - コメント本文
    - `author` - コメント投稿者
    - `created_at` - 投稿日時
    - `path` - 対象ファイルパス
    - `line` - 対象行番号
    - `diff_hunk` - 差分コンテキスト
- `reviews` - サマリー本文付きレビューの配列（`PENDING` と空 body は除外済み）
  - `id` - レビューID
  - `author` - レビュアー
  - `state` - レビュー種別（`APPROVED` / `CHANGES_REQUESTED` / `COMMENTED` / `DISMISSED`）
  - `body` - レビュー本文
  - `created_at` - 投稿日時
  - `url` - レビューURL
- `comments` - 一般コメントの配列（minimized 除外済み、ボットは最新1件のみ）
  - `id` - コメントID
  - `body` - コメント本文
  - `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 を実行
- 実行結果（折りたたみ済み件数）を報告

