code-review (Matt Pocock)
指定したコミットやブランチ以降の変更を、リポジトリの規約と元の仕様の両面から並行してレビューします。
Matt Pocock's code-review:3 つのレビュータスクでプレーン Codex と同じ検出率、トークンは 1.5 倍。
Codex CLI · gpt-6-astra
23.5 / 30
スキルなしに対するリフト:+0.08 · 状況次第 · 18 実行
状況次第:リフト +0.08 が +1.0 未満。推奨には合計 22/30、出力品質 3.5、リフト +1.0 が必要です。
SOTA
合格Codex でテスト済み。
カバー対象 Codex, Claude Code
Codex CLI 0.166(SOTA ティア):採点対象 18 実行。当ティアのルールでは、ここでの合格は Claude Code もカバーします。第2ティアについては何も述べません。
スコア
各ディメンションは 0〜5 点で、6 つの合計が 30 点満点の合計スコアになります。すべてのディメンションで 5 が最良です。コスト 5 は低コストで高速、インストール 5 は簡単であることを意味します。
- トリガーの信頼性
- 5.0
- スキルなしに対するリフト
- 2.1
- 出力品質
- 4.5
- トークンと時間のコスト
- 3.0
- インストールと移植性
- 4.0
- 安全性
- 5.0
セキュリティレビュー
安全静的スキャン:CRITICAL 0 / HIGH 0 / MEDIUM 0。手動レビュー:ネットワーク無効のサンドボックスで実行しても安全(指摘なし)。クリーンなスキャン結果はスキルの安全性を証明しません。
インストール
npx skills@latest add mattpocock/skills --skill code-review
固定コミット: 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d
テスト済み: 2026-11-02
テスト内容
- 小規模なサービスのレビュー — マージする前に orders_service.py をレビューしてください。見つけた問題点を重大なものから順に列挙してください。ファイルは変更しないでください。
- 認証ヘルパーのレビュー — auth_handlers.py をレビューしてください。ログインフロー用に今書いたばかりです。問題点を重大なものから順に列挙してください。ファイルは変更しないでください。
- 文書化された標準と仕様に対する最新コミットのレビュー — 最新コミット(HEAD~1 以降の変更)を CODING_STANDARDS.md と SPEC.md に照らしてレビューしてください。すべての逸脱を重大なものから順に列挙してください。ファイルは変更しないでください。
長所
- スキルは名前を出さずとも採用されました:スキルあり群 6/6 実行でスキルファイルが読み込まれました。
短所
- スキルなしに対する有意なリフトなし(+0.08、ノイズの範囲内)。
- タスク・群ごとに n=2。1 ポイント未満の差はノイズです。
レビュー
Mac テストマシン上で Codex CLI 0.166(gpt-6-astra、低推論)、実行ごとに新規の一時プロジェクトと一時 HOME/TMPDIR/キャッシュを使用、スキルをインストール(スキルあり群)、スキルなし(対照群)、またはスキルの中核要件をプロンプト末尾に付けた一文に圧縮(一文プロンプト群)、タスクごとに各群 2 実行、ネットワーク無効、/tmp への書き込みはブロック。プロンプトはスキル名に一切言及しません(以下で注記する表現を除く)。単一ファイルのレビュー 2 件(8 個の問題点が仕込まれた注文サービス、うち 3 個はセキュリティ関連ではない。8 個の問題点が仕込まれた認証ヘルパー)と、CODING_STANDARDS.md と SPEC.md に対する最新コミットのレビュー 1 件(8 個の逸脱が仕込まれている。スキルの本来の用途)です。すべてのプロンプトは読み取り専用(「問題点を重大なものから順に列挙し、ファイルは変更しない」)です。
3群の比較
| 群 | 平均スコア(0〜5) | 1実行あたりのトークン |
|---|---|---|
| スキルなし | 4.37 | 78k |
| 一文プロンプト | 4.37 | 77k |
| スキルあり | 4.45 | 114k |
Codex CLI で 18 実行を計測し、LLM 判定なしのルールベースのチェックで採点。合計 23.5 / 30、判定は 状況次第。
判定:状況次第(23.5 / 30)。 出典:mattpocock/skills、skills/engineering/code-review、コミット 4ae2317 時点。インストール:npx skills@latest add mattpocock/skills --skill code-review。ライセンス: MIT(リポジトリの LICENSE)。
概要
mattpocock/skills の code-review スキル(engineering/code-review)。指定された ref 以降の変更を 2 つの軸でレビューします。コードがリポジトリの文書化されたコーディング標準(および一般的なコードの臭い)に従っているか、仕様で求められたものを実装しているか。標準・仕様のドキュメントがあるリポジトリ向け、およびサブエージェントとの併用向けに書かれています。Markdown のみで、スクリプトはありません。
テスト方法
Mac テストマシン上で Codex CLI 0.166(gpt-6-astra、低推論)、実行ごとに新規の一時プロジェクトと一時 HOME/TMPDIR/キャッシュを使用、スキルをインストール(スキルあり群)、スキルなし(対照群)、またはスキルの中核要件をプロンプト末尾に付けた一文に圧縮(一文プロンプト群)、タスクごとに各群 2 実行、ネットワーク無効、/tmp への書き込みはブロック。プロンプトはスキル名に一切言及しません(以下で注記する表現を除く)。
単一ファイルのレビューが 2 つ(8 個の仕込まれた問題を持つ注文サービス。うち 3 個はセキュリティ関連ではない。8 個の仕込まれた問題を持つ認証ヘルパー)と、CODING_STANDARDS.md と SPEC.md に対する最新コミットのレビューが 1 つ(仕込まれた逸脱 8 個)。後者がこのスキルの本来の用途です。すべてのプロンプトは読み取り専用です(「問題を列挙してください。重大なものから順に。ファイルは変更しないでください」)。
- 小さなサービスモジュールをレビューする — マージする前に orders_service.py をレビューしてください。見つけた問題を、重大なものから順に列挙してください。ファイルは変更しないでください。
- 認証ヘルパーをレビューする — auth_handlers.py をレビューしてください。ログインフローのために今書いたものです。問題を、重大なものから順に列挙してください。ファイルは変更しないでください。
- 文書化された標準と仕様に対する最新コミットのレビュー — 最新コミット(HEAD~1 以降の変更)を CODING_STANDARDS.md と SPEC.md に照らしてレビューしてください。すべての逸脱を、重大なものから順に列挙してください。ファイルは変更しないでください。
採点はプログラム的(隠しテスト/仕込み問題の検出/制約チェック/該当する場合はレンダリング+OCR)で、実行ごとに 0〜5 点。スコアはどの LLM 判定者も決めていません。
結果
第3群に与えた一文プロンプト:"2 つの軸でレビューする:コードがリポジトリの文書化されたコーディング標準(一般的なコードの臭いも含む)に従っているか、仕様で求められたものを実装しているか。各指摘にはファイルと行番号を記載する。"
| タスク | 対照群スコア | 一文プロンプト | スキルあり | 対照群トークン | 一文プロンプトトークン | スキルありトークン | スキル読込 |
|---|---|---|---|---|---|---|---|
| t1-orders | 3.82 | 3.59 | 3.82 | 79k | 79k | 94k | 2/2 |
| t2-auth | 4.29 | 4.53 | 4.53 | 76k | 70k | 93k | 2/2 |
| t3-diff | 5.0 | 5.0 | 5.0 | 78k | 80k | 153k | 2/2 |
平均スコア:スキルなし 4.37 対 スキルあり 4.45(差分 +0.08)。1 実行あたりのトークン:78k 対 114k(1.46 倍)、時間 44 秒 対 57 秒。一文プロンプト群:4.37(一文プロンプトに対するスキルの上乗せ:+0.08、スキルなしに対する一文プロンプト自身の上乗せ:+0.0)。一文プロンプトのトークンは 1 実行あたり 77k で、スキルのコストは一文プロンプトの 1.49 倍です。
何が起きたか
- 測定できる利得はなし。平均スコアはスキルなし 4.37、一文版 4.37、スキルあり 4.45。1 実行あたりの仕込み問題の検出は、8 個中 対照群 5.0、一文プロンプト 5.0、スキルあり 5.1。
- スキルが書かれた目的のタスク(標準ファイルと仕様に対するコミットのレビュー)では、全群が 6 実行中 6 実行で 8 個の逸脱をすべて見つけました。素の Codex は、頼まれればすでに CODING_STANDARDS.md と SPEC.md を読み、それらと diff を比較します。
- 単一ファイルのレビュー 2 つでは、どの群も仕込み問題 8 個中 5〜7 個を見つけました。取りこぼしは群をまたいで同じでした(float の金額、ログに書き込まれたシークレット、ログインのレート制限なし)。スキルが加えるものはこれを変えませんでした。
- スキルは 6/6 実行で読み込まれ、1 実行あたり 114k トークン(78k の 1.5 倍)かかりました。コミットレビュータスクでは 154k 対 79k(約 2 倍)で、最も重いケースです。一文プロンプトのコストは対照群と同じでした。どの実行もファイルを変更しませんでした。
- 採点に関する注意:項目は正規表現で照合するため、表現の異なる指摘は取りこぼしとして数えられることがあります。
次元別スコア
| 次元 | スコア | 理由 |
|---|---|---|
| 1_output_quality | 4.45 | スキルありの平均スコア 4.45/5(プログラム的チェック。タスク別の 表を参照)。 |
| 2_lift_vs_no_skill | 2.08 | スキルなしの 4.37 に対して +0.08 ポイント(タスクごとに n=2。約 1 ポイント未満はノイズ)。 |
| 3_trigger | 5.0 | スキルあり群 6/6 実行でスキルファイルが読み込まれました。 |
| 4_instructions_portability | 4 | 標準・仕様のドキュメントがあるリポジトリ向け、およびサブエージェントを 起動できるエージェント向けに書かれています。それ以外では単純な指示として 機能します。 |
| 5_efficiency | 3 | トークン 1.46 倍(1 実行あたり 114k 対 78k)、時間 1.30 倍(57 秒 対 44 秒)。 |
| 6_safety_hygiene | 5 | Markdown のみ。スクリプトもコマンドもなし。 |
このテストの限界
- スキルは 2 つの軸をサブエージェントに委ね、リポジトリのドキュメントを読むよう設計されています。小さなリポジトリ 1 つでの非対話的な Codex 実行では、大きな diff でそれが役立つかは示せません。
- 小さなファイルに仕込んだ問題。説明の質、重大度の順序付け、誤検出は採点していません。
- 一文プロンプトはスキルの 2 つの軸を言い直したものです。文書化された標準がないチームには、最初の軸の対象がありません。
- タスク・群ごとに n=2。1 ポイント未満の差はノイズです。
- ルールベースの採点はチェックで見えるものだけを測ります。センスや、その結果が可能な限り最良かどうかは判定できません。
セキュリティ
security.md を参照。スキャン:0 CRITICAL / 0 HIGH / 0 MEDIUM。判定:実行しても安全(ネットワーク無効のサンドボックス)。クリーンなスキャン結果はスキルの安全性を証明しません。
まとめ
文書化された標準と仕様に対するコミットのレビューを求めると、素の Codex はすでにすべての仕込み逸脱を見つけ、スキルはトークン(1.5 倍〜2 倍)を加えただけで、それ以上は見つけませんでした。すべてのレビューを同じ 2 軸の形式に揃えたいチームには役立つ可能性がありますが、それはこのテストでは測れていません。
トランスクリプト
実行ログ:code-review (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) 列:タスク、群-回、スコア(0-5)、トークン、秒、合格したチェック、エージェントが開いたスキルファイル。 t1-orders control-1: スコア 3.59, トークン 79037, 秒 43.8, チェック 2/2, 開いたファイルなし t1-orders control-2: スコア 4.06, トークン 79487, 秒 50.4, チェック 2/2, 開いたファイルなし t1-orders oneliner-1: スコア 3.59, トークン 97051, 秒 50.6, チェック 2/2, 開いたファイルなし t1-orders oneliner-2: スコア 3.59, トークン 61642, 秒 42.5, チェック 2/2, 開いたファイルなし t1-orders treatment-1: スコア 4.06, トークン 65668, 秒 44.1, チェック 2/2, 開いたファイル code-review t1-orders treatment-2: スコア 3.59, トークン 123428, 秒 56.0, チェック 2/2, 開いたファイル code-review t2-auth control-1: スコア 4.53, トークン 76436, 秒 43.2, チェック 2/2, 開いたファイルなし t2-auth control-2: スコア 4.06, トークン 76339, 秒 43.5, チェック 2/2, 開いたファイルなし t2-auth oneliner-1: スコア 4.53, トークン 61176, 秒 49.9, チェック 2/2, 開いたファイルなし
18 実行、3 成果物
サンプル出力
SOTA · With the skill: final message (t1-orders, run 1, Codex)
Found six problems, most serious first: 1. **High — Missing cancellation authorization** ([line 13](orders_service.py:13)). `current_user` is never checked. Anyone able to call this function can cancel another user’s order by supplying its ID. Verify ownership or administrative permission before updating. 2. **High — SQL injection** ([line 9](orders_service.py:9)). `order_id` is interpolated directly into SQL. A value such as `"0 OR 1=1"` changes the query and can return another order. Use a parameterized query. 3. **High — Credential exposure** ([line 4](orders_service.py:4), [line 48](orders_service.py:48)). A live-looking API key is hardcoded, and the successful charge path prints it to logs. Load credentials from secure configuration and remove the logging. If this key is real, rotate it. 4. **High — Charging always fails silently** ([lines 45–55](orders_service.py:45)). `send_to_gateway()` always raises `NotImplementedError`; `charge()` catches it and returns `None`. No payment can succeed, and callers receive no explicit failure. Implement the gateway and propagate or explicitly report failures. 5. **Medium — Discount thresholds are incorrect** ([line 24](orders_service.py:24)). The documented “or more” thresholds require `>=`. Currently, a total of 100 receives no discount, and 500 receives only 10%, yielding 100 and 450 instead of 90 and 400. 6. **Medium — Export file is never explicitly closed** ([line 39](orders_service.py:39)). Buffered output and resource cleanup depend on garbage collection, including on exceptions. Use a `with open(...)` block to ensure flushing and closing. Static review only; no files changed.