コミット前またはPRオープン前に変更ファイルの構造化レビューを実行するClaude Codeプラグイン。テストはパスするが出荷すべきでないものを狙い打ちにする — SQLインジェクション、レースコンディション、オフバイワンエラー、要件と一致しないビジネスロジック。肝心な点はこうだ: パスするテストはコードが設計通り動くことを証明するが、fresh-eyes-reviewは設計自体が正しいことを証明する。
インストール
/plugin marketplace add 2389-research/claude-plugins
/plugin install fresh-eyes-review
インストール後、「commit」「push」「done」「creating PR」など、いまにもリリースしそうな言葉を言うとスキルが自動起動する。
何をするのか
レビューは毎回同じ手順で進む: レビュー対象のアナウンス、5つのチェックリストの実行、問題の修正、テストの再実行、結果の宣言。
セキュリティ脆弱性 — 文字列連結によるSQLインジェクション、エスケープされていないユーザーコンテンツからのXSS、../シーケンスによるパストラバーサル、サニタイズされていないシェル入力からのコマンドインジェクション、アクセス制御欠如によるIDOR、保護エンドポイントの認証バイパス。
ロジックエラー — 配列インデックスやページネーションのオフバイワンバグ、共有状態への並行アクセスにおけるレースコンディション、防御的チェックなしのドットチェーンにおけるnull/undefined、==と===の型強制、空のcatchブロックで握りつぶされたエラー。
ビジネスルール — 要件と一致しない計算(特に通貨の丸め)、AND/ORロジックの反転、空入力やゼロ値のエッジケース漏れ、センシティブ情報を露出するエラーメッセージ、オプションフィールドの意味不明なデフォルト値。
入力バリデーション — 型チェック、範囲境界、フォーマット検証。「ハッピーパスが動く」と「任意の入力で壊れない」の間にあるギャップ。
パフォーマンス — ループ内に潜むN+1クエリ、タイムアウト保護のない無制限イテレーション、クリーンアップされないイベントリスナーとストリーム、インデックスのないカラムでフィルタするクエリ。
問題が見つかれば即座に修正し、テストがなければ追加して、次に進む前にスイートを再実行する。
仕組み
レビューはファイル数によって2〜5分かかる。1〜3ファイルなら2分。4〜10ファイルなら3〜4分。10ファイル超で最大5分。2分未満で終わったなら十分に徹底されていない。5分を超えたならスコープクリープしている。
スキルは開始と終了を明示的にアナウンスする — 「4ファイルのfresh-eyes reviewを開始」「Fresh-eyes完了。2件の問題を発見・修正済み」— ゲートが実行されたこと、何を検出したかを常に把握できる。
テストを信頼するだけでは駄目な理由
テストはあなたが確認しようと思ったことを検証する。このスキルはあなたが思いつかなかったことを検出する。テストスイートがパスしているのに重大なセキュリティバグが共存することは、誰もが認めたくないほど頻繁に起きる。スキルはありがちな合理化 — 「テストは網羅的だ」「自信がある」「本番がブロックされている」— を受け付けない。それはまさにバグが逃げ出す条件だからだ。
