caveman-review (JuliusBrussee/caveman)
コードレビューを指摘ごとに1行、位置・問題・修正案だけに絞って書きます。
caveman-review:コードレビューを、指摘ごとの短い行へと導きます(対照群 3.3、スキルあり 4.2、一文プロンプト 4.8)。トークンは同じですが、スキル自身の L<line> 行フォーマットが守られたのは一部の実行のみでした。フォーマットの一文プロンプトの方が高得点です。
Codex CLI · gpt-6-astra
25.1 / 30
スキルなしに対するリフト:+0.90 · 状況次第 · 18 実行
状況次第:リフト +0.90 が +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.9
- 出力品質
- 4.2
- トークンと時間のコスト
- 5.0
- インストールと移植性
- 4.0
- 安全性
- 4.0
セキュリティレビュー
安全静的スキャン:CRITICAL 0 / HIGH 0 / MEDIUM 0。手動レビュー:ネットワーク無効のサンドボックスで実行しても安全(指摘なし)。クリーンなスキャン結果はスキルの安全性を証明しません。
インストール
npx skills@latest add JuliusBrussee/caveman --skill caveman-review
固定コミット: 9b68f7ed12b05e7efaff18e65c5a3fc2849fd0a4
テスト済み: 2026-11-02
テスト内容
- 小さなサービスモジュールのレビュー — マージする前に orders_service.py をレビューしてください。見つけた問題を最も重大なものから順に列挙してください。ファイルは変更しないでください。
- 認証ヘルパーのレビュー — auth_handlers.py をレビューしてください。ログインフローのために書いたばかりです。問題を最も重大なものから順に列挙してください。ファイルは変更しないでください。
- 文書化された標準と仕様に対する最新コミットのレビュー — 最新コミット(HEAD~1 以降の変更)を CODING_STANDARDS.md と SPEC.md に照らしてレビューしてください。すべての逸脱を最も重大なものから順に列挙してください。ファイルは変更しないでください。
長所
- スキルなしと比べ平均スコアを 3.26 から 4.16 に引き上げ(+0.90)。
- スキルは名前を出さずとも採用されました:スキルあり群 6/6 実行でスキルファイルが読み込まれました。
- トークンのオーバーヘッドなし:スキルなしの 1.02 倍。
短所
- 一文プロンプトは 4.83、スキルありは 4.16(-0.67)。
- タスク・群ごとに n=2。1 ポイント未満の差はノイズです。
レビュー
専用の Windows テスト PC 上で Codex CLI 0.166(gpt-6-astra、低推論)、実行ごとに新規の一時プロジェクトと一時 HOME/TMPDIR/キャッシュを使用、スキルをインストール(スキルあり群)、スキルなし(対照群)、またはスキルの中核要件をプロンプト末尾に付けた一文に圧縮(一文プロンプト群)、タスクごとに各群 2 実行、ネットワーク無効、/tmp への書き込みはブロック。プロンプトはスキル名に一切言及しません(以下で注記する表現を除く)。小さな Python ファイルに仕込まれた問題点がそれぞれ 8 つあるレビュータスクが 3 つ:注文サービス(SQL インジェクション、認可の欠落、ハードコードされたキーのログ出力、金額を float で扱うなど)、認証ハンドラーのファイル、そして CODING_STANDARDS.md と SPEC.md に照らした最新コミットのレビュー。プロンプトはレビューを求め、最も重大なものから順に挙げ、ファイルは変更しないよう求めます。一文プロンプト群は行フォーマットと、言い逃れをしないルールを一文で述べます。
3群の比較
| 群 | 平均スコア(0〜5) | 1実行あたりのトークン |
|---|---|---|
| スキルなし | 3.26 | 69k |
| 一文プロンプト | 4.83 | 60k |
| スキルあり | 4.16 | 70k |
Codex CLI で 18 実行を計測し、LLM 判定なしのルールベースのチェックで採点。合計 25.1 / 30、判定は 状況次第。
判定:状況次第(25.1 / 30)。 出典:JuliusBrussee/caveman、skills/caveman-review、コミット 9b68f7e に固定。インストール:npx skills@latest add JuliusBrussee/caveman --skill caveman-review。ライセンス: MIT(リポジトリの LICENSE)。
概要
caveman-review スキル(JuliusBrussee/caveman):簡潔なコードレビュースタイルです。指摘は 1 行に 1 件、L<line>: <problem>. <fix>. の形式で書き、任意の重大度プレフィックス(bug、risk、nit、q)、バッククォートで囲んだ正確なシンボル名、具体的な修正を伴い、ためらいや称賛、コードの動作の言い換えはしません。
テスト方法
専用の Windows テスト PC 上で Codex CLI 0.166(gpt-6-astra、低推論)、実行ごとに新規の一時プロジェクトと一時 HOME/TMPDIR/キャッシュを使用、スキルをインストール(スキルあり群)、スキルなし(対照群)、またはスキルの中核要件をプロンプト末尾に付けた一文に圧縮(一文プロンプト群)、タスクごとに各群 2 実行、ネットワーク無効、/tmp への書き込みはブロック。プロンプトはスキル名に一切言及しません(以下で注記する表現を除く)。
それぞれ 8 個の問題点を仕込んだ小さな Python ファイルに対するレビュータスクが 3 つ:注文サービス(SQL インジェクション、認可の欠落、ログに記録されるハードコードされたキー、float での金額など)、認証ハンドラのファイル、そして CODING_STANDARDS.md と SPEC.md に対する最新コミットのレビュー。プロンプトはレビューを求め、最も重大なものから順に挙げ、変更はしないよう指示します。一文プロンプトは行形式と「ためらい禁止」ルールを述べます。
- 小さなサービスモジュールのレビュー — マージ前に orders_service.py をレビューしてください。見つけた問題を、最も重大なものから順に挙げてください。ファイルは変更しないでください。
- 認証ヘルパーのレビュー — auth_handlers.py をレビューしてください。ログインフローのために今書いたものです。問題を、最も重大なものから順に挙げてください。ファイルは変更しないでください。
- 文書化された標準と仕様に対する最新コミットのレビュー — 最新コミット(HEAD~1 以降の変更)を CODING_STANDARDS.md と SPEC.md に照らしてレビューしてください。すべての逸脱を、最も重大なものから順に挙げてください。ファイルは変更しないでください。
採点はプログラム的(隠しテスト/仕込み問題の検出/制約チェック/該当する場合はレンダリング+OCR)で、実行ごとに 0〜5 点。スコアはどの LLM 判定者も決めていません。
結果
第 3 群に与えた一文プロンプト:「各指摘を 1 行で L<line>: <problem>. <fix>. の形式に書き、任意の重大度プレフィックス(bug、risk、nit、q)、バッククォートで囲んだ正確なシンボル名、具体的な修正を添える。ためらい、称賛、前置きはせず、コードの動作の言い換えもしない。」
| タスク | 対照群スコア | 一文プロンプト | スキルあり | 対照群のトークン | 一文プロンプトのトークン | スキルありのトークン | スキル読み込み |
|---|---|---|---|---|---|---|---|
| t1-orders | 3.06 | 4.66 | 4.15 | 74k | 64k | 61k | 2/2 |
| t2-auth | 3.19 | 4.92 | 3.31 | 73k | 64k | 88k | 2/2 |
| t3-diff | 3.53 | 4.92 | 5.0 | 59k | 50k | 60k | 2/2 |
平均スコア:スキルなし 3.26 に対しスキルあり 4.16(差 +0.9)。1実行あたりのトークン:69k 対 70k(1.02x)。時間:56s 対 54s。一文プロンプト群:4.83(一文プロンプトに対するスキルの上積み:-0.67。一文プロンプト自身のスキルなしに対する上積み:+1.57)。一文プロンプトのトークンは 1実行あたり 60k なので、スキルは一文プロンプトの 1.17 倍のコストになります。
何が起きたか
- 対照群 3.26、スキル 4.16、一文プロンプト 4.83(各 n=6)。仕込まれた問題の検出は全群で同程度(8 個中 5〜7 個。レート制限の欠落はほぼすべての実行で見落とし)。違いは主に形式と長さです。
- 形式:対照群は 6 実行のいずれでも
L<n>:の行形式を使いませんでした(注文レビューは太字の重大度を伴う番号付きリスト)。スキルはコミットレビュータスク(両実行で 5.0)と 1 回の注文実行で形式を満たしましたが、認証タスクでは行が番号と太字の重大度で始まったため、形式チェックが 2/2 で不合格となり、スコアは 3.3 にとどまりました。一文プロンプトはほぼすべてで合格しました。 - 簡潔さ:対照群のレビューは注文・認証タスクで 233〜332 語(220 語で満点)。スキルの認証レビューも約 300 語でしたが、一文プロンプトはほぼすべての実行で上限を下回りました。
- どの群もためらい表現は使いませんでした。トークン:1実行あたりスキル 70k、一文プロンプト 60k、対照群 69k(対照群の 1.01x)。スキルあり群 6/6 実行でスキルが読み込まれました。
評価項目スコア
| 評価項目 | スコア | 理由 |
|---|---|---|
| 1_output_quality | 4.16 | スキルありの平均スコアは 5 点中 4.16(プログラム的チェック。タスク別の表を参照)。 |
| 2_lift_vs_no_skill | 2.9 | スキルなしの 3.26 に対し +0.90 点(タスクごとに n=2。約 1 点未満の差はノイズ)。 |
| 3_trigger | 5.0 | スキルあり群 6/6 実行でスキルファイルが読み込まれました。 |
| 4_instructions_portability | 4 | SKILL.md のみ。 |
| 5_efficiency | 5 | トークン 1.02x(1実行あたり 70k 対 69k)、時間 0.96x(54s 対 56s)。 |
| 6_safety_hygiene | 4 | 散文のみ。security.md を参照。 |
このテストの限界
- 最終メッセージに対するルールベースのチェック:仕込まれた問題の検出、L<n> 形式の行頭正規表現、単語数、ためらい表現のリスト。修正の質は評価していません。
- 形式の正規表現は各行の先頭について厳格です。'- L17 - High: ...' のような箇条書きは一致とみなされますが、太字の重大度を伴う番号付きリストは一致しません。
- 1 つのチェック(「ファイルを変更していない」)はすべてで合格したため表示していません。
- セルごとに n=2。小さなファイルです。
- タスクごとに各群 n=2。約 1 点未満の差はノイズです。
- ルールベースの採点はチェックが見られるものだけを測ります。好みや、結果が可能な限り最善かどうかは判断できません。
セキュリティ
security.md を参照。スキャン:CRITICAL 0 / HIGH 0 / MEDIUM 0。判定:実行しても安全(ネットワーク無効のサンドボックス)。クリーンなスキャン結果はスキルの安全性を証明しません。
結論
このスキルはレビューを「1 行 1 指摘」の簡潔なスタイルへ近づけ、追加コストなしで同じカバレッジを保ちますが、常に形式を守るわけではありません。形式を説明する一文のほうがここでは効果的だったため、その恩恵は「ガイドなし」に対するものであり、良いプロンプトに対するものではありません。
トランスクリプト
実行ログ:caveman-review (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) 列:タスク、群-回、スコア(0-5)、トークン、秒、合格したチェック、エージェントが開いたスキルファイル。 t1-orders control-1: スコア 3.02, トークン 65430, 秒 62.1, チェック 4/5, 開いたファイルなし t1-orders control-2: スコア 3.1, トークン 82622, 秒 61.8, チェック 4/5, 開いたファイルなし t1-orders oneliner-1: スコア 4.66, トークン 64873, 秒 59.1, チェック 5/5, 開いたファイルなし t1-orders oneliner-2: スコア 4.66, トークン 64681, 秒 49.6, チェック 5/5, 開いたファイルなし t1-orders treatment-1: スコア 4.83, トークン 50257, 秒 52.3, チェック 5/5, 開いたファイル caveman-review t1-orders treatment-2: スコア 3.47, トークン 72971, 秒 62.1, チェック 4/5, 開いたファイル caveman-review t2-auth control-1: スコア 3.3, トークン 82305, 秒 67.1, チェック 4/5, 開いたファイルなし t2-auth control-2: スコア 3.08, トークン 64757, 秒 55.3, チェック 4/5, 開いたファイルなし t2-auth oneliner-1: スコア 5.0, トークン 64677, 秒 57.0, チェック 5/5, 開いたファイルなし
18 実行、3 成果物
サンプル出力
SOTA · With the skill: final message (t1-orders, run 1, Codex)
- L17 — **High: Missing authorization.** `cancel_order` ignores `current_user`, allowing cancellation of another user’s order by ID (CWE-862). Require ownership or explicit administrative permission before updating. - L9 — **High: SQL injection.** `order_id` is interpolated directly into SQL; input such as `0 OR 1=1` changes the query and can retrieve an unrelated order (CWE-89). Use `WHERE id = ?` with bound parameters. - L4, L48 — **High: Credential exposure.** `API_KEY` is hardcoded and included in the successful-charge log, exposing it through source access and logs (CWE-798/CWE-532). Load it from a secret store, remove it from logs, and rotate it if genuine. - L47–55 — **High:** Every `charge` call reaches `NotImplementedError`, which is swallowed into `None`; no payment can succeed. Implement `send_to_gateway` and surface explicit payment failures. - L24, L26 — **Medium:** Discount thresholds contradict the docstring: exactly 100 receives no discount, and exactly 500 receives only 10%. Change both comparisons to `>=`. - L39–41 — **Medium:** Opening the export with `"w"` truncates an existing file before querying or serializing succeeds. Prepare the export first, then write through a temporary file and replace the destination. - L39–42 — **Medium:** The export file is never explicitly flushed or closed; completion depends on object cleanup. Use `with open(...)` so writes and closure complete before returning.