pr (mattpocock/skills)
レビュー担当者に向けて変更内容を伝えるプルリクエスト本文を書きます。
pr:純粋なフォーマットのスキルです。対照群は3セクションのPR本文を一切生成せず(1.7/5)、スキルと一文プロンプトはどちらも生成します(5.0 と 4.95)。追加トークンはありません。
Codex CLI · gpt-6-astra
29.0 / 30
スキルなしに対するリフト:+3.33 · 推奨 · 18 実行
推奨:合計 29.0/30 が 22 以上、出力品質 5.0 が 3.5 以上、リフト +3.33 が +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
- スキルなしに対するリフト
- 5.0
- 出力品質
- 5.0
- トークンと時間のコスト
- 5.0
- インストールと移植性
- 4.0
- 安全性
- 5.0
セキュリティレビュー
安全静的スキャン:CRITICAL 0 / HIGH 0 / MEDIUM 0。手動レビュー:ネットワーク無効のサンドボックスで実行しても安全(指摘なし)。クリーンなスキャン結果はスキルの安全性を証明しません。
インストール
npx skills@latest add mattpocock/skills --skill pr
固定コミット: 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d
テスト済み: 2026-11-02
テスト内容
- キャッシュ用のPR本文 — プルリクエストを作成します。change.diff の変更内容の PR 本文を PR.md に書いてください。実行前後のテスト出力は tests_before.txt と tests_after.txt にあります。
- カラム削除用のPR本文 — 私のプルリクエストをまとめてください。change.diff の変更内容の PR 本文を PR.md に書いてください。実行前後のテスト出力は tests_before.txt と tests_after.txt にあります。
- コピー変更用のPR本文 — PR 説明文を書いてください。change.diff の変更内容の PR 本文を PR.md に書いてください。実行前後のテスト出力は tests_before.txt と tests_after.txt にあります。
長所
- スキルなしと比べ平均スコアを 1.67 から 5.0 に引き上げ(+3.33)。
- スキルは名前を出さずとも採用されました:スキルあり群 6/6 実行でスキルファイルが読み込まれました。
- トークンのオーバーヘッドなし:スキルなしの 1.0 倍。
- スキルありの絶対品質は高水準:5 点中 5.0。
短所
- 一文プロンプトは 4.95、スキルありは 5.0(+0.05)。
- タスク・群ごとに n=2。1 ポイント未満の差はノイズです。
レビュー
専用の Windows テスト PC 上で Codex CLI 0.166(gpt-6-astra、低推論)、実行ごとに新規の一時プロジェクトと一時 HOME/TMPDIR/キャッシュを使用、スキルをインストール(スキルあり群)、スキルなし(対照群)、またはスキルの中核要件をプロンプト末尾に付けた一文に圧縮(一文プロンプト群)、タスクごとに各群 2 実行、ネットワーク無効、/tmp への書き込みはブロック。プロンプトはスキル名に一切言及しません(以下で注記する表現を除く)。3つのタスクは、いずれも「change.diff の変更内容の PR 本文を PR.md に書く」というもので、tests_before.txt / tests_after.txt が隣に置かれています。キャッシュの変更(戻せる変更)、カラムを削除するマイグレーション(戻せない変更)、コピーの変更。対照群にはその一文のみが与えられます。一文プロンプト群にはテンプレート全体を説明する一文が追加されます。スキルあり群にもフォーマットは伝えられません。
3群の比較
| 群 | 平均スコア(0〜5) | 1実行あたりのトークン |
|---|---|---|
| スキルなし | 1.67 | 82k |
| 一文プロンプト | 4.95 | 89k |
| スキルあり | 5.0 | 82k |
Codex CLI で 18 実行を計測し、LLM 判定なしのルールベースのチェックで採点。合計 29.0 / 30、判定は 推奨。
判定:推奨(29.0 / 30)。 ソース:mattpocock/skills、skills/engineering/pr、コミット 4ae2317 に固定。インストール:npx skills@latest add mattpocock/skills --skill pr。ライセンス: MIT(リポジトリの LICENSE)。
概要
pr スキル(mattpocock/skills)は、差分を固定の 3 部構成のプルリクエスト本文に変換します:概要(最小で有用な図、疑似コード、またはコールツリー)、根拠(テスト出力付きの 変更前:/変更後:)、マージの危険性(ドア: 一方通行または双方向、および一言の 影響範囲:)。プロジェクトの用語集の言葉で書きます。短い SKILL.md 1 つです。
テスト方法
専用の Windows テスト PC 上で Codex CLI 0.166(gpt-6-astra、低推論)、実行ごとに新規の一時プロジェクトと一時 HOME/TMPDIR/キャッシュを使用、スキルをインストール(スキルあり群)、スキルなし(対照群)、またはスキルの中核要件をプロンプト末尾に付けた一文に圧縮(一文プロンプト群)、タスクごとに各群 2 実行、ネットワーク無効、/tmp への書き込みはブロック。プロンプトはスキル名に一切言及しません(以下で注記する表現を除く)。
3 つのタスクは、それぞれ「change.diff の PR 本文を PR.md に書く」というもので、tests_before.txt / tests_after.txt が隣にあります:キャッシュの変更(双方向のドア)、カラムを削除するマイグレーション(一方通行のドア)、コピーの変更。対照群にはその一文のみを与えます。一文プロンプト群には、テンプレート全体を明示する一文が 1 つ追加されます。スキルあり群にもフォーマットは伝えません。
- キャッシュの PR 本文 — プルリクエストを作成します。change.diff の変更の PR 本文を PR.md に書いてください。変更前/変更後のテスト出力は tests_before.txt と tests_after.txt にあります。
- カラム削除の PR 本文 — プルリクエストをまとめてください。change.diff の変更の PR 本文を PR.md に書いてください。変更前/変更後のテスト出力は tests_before.txt と tests_after.txt にあります。
- コピー変更の PR 本文 — PR の説明を書いてください。change.diff の変更の PR 本文を PR.md に書いてください。変更前/変更後のテスト出力は tests_before.txt と tests_after.txt にあります。
採点はプログラム的(隠しテスト/仕込み問題の検出/制約チェック/該当する場合はレンダリング+OCR)で、実行ごとに 0〜5 点。スコアはどの LLM 判定者も決めていません。
結果
第 3 の群に与えた一文プロンプト:"PR 本文を 3 つの短いセクションで書いてください:概要(最小で有用な図、疑似コード、またはコールツリー。前置きなし)、根拠(テスト出力付きの 変更前: と 変更後:)、マージの危険性(ドア: 一方通行または双方向、および一言の 影響範囲:)。用語集の言葉を使うこと。"
| タスク | 対照群スコア | 一文プロンプト | スキルあり | 対照群トークン | 一文プロンプトトークン | スキルありトークン | スキルの読み込み |
|---|---|---|---|---|---|---|---|
| t1-cache | 1.67 | 5.0 | 5.0 | 82k | 83k | 79k | 2/2 |
| t2-migration | 1.67 | 4.83 | 5.0 | 82k | 91k | 79k | 2/2 |
| t3-copy | 1.67 | 5.0 | 5.0 | 81k | 91k | 87k | 2/2 |
平均スコア:スキルなし 1.67 に対しスキルあり 5.0(差 +3.33)。1実行あたりのトークン:82k に対し 82k(1.00 倍)。所要時間 37 秒に対し 34 秒。一文プロンプト群:4.95(一文プロンプトに対するスキルの上乗せ:+0.05、スキルなしに対する一文プロンプトの上乗せ:+3.28)。一文プロンプトのトークンは 1実行あたり 89k で、スキルは一文プロンプトの 0.92 倍のトークンを消費します。
何が起きたか
- 対照群 1.67、一文プロンプト 4.95、スキルあり 5.00(それぞれ n=6)。対照群は明快で正確な散文の PR を書きましたが、6 実行のいずれも 3 つのセクション、図や疑似コードのブロック、変更前/変更後のラベル、ドア、影響範囲を使いませんでした。モデルが推測できないフォーマットなので、フォーマットを伝えられた群は高得点になります。チェック群はフォーマット準拠を測定しており、文章の質ではありません。
- スキルは名前を出さずともトリガーされ(6/6 読み込み)、一文プロンプトも同じ情報を伝えます。両者の差は 0.05 ポイントです(1 実行がテンプレートセクションの正規表現を外しました。マイグレーションの一文プロンプト実行は 3 セクション中 2 つしか一致しませんでした)。1実行あたりのトークンは対照群 82k、一文プロンプト 89k、スキルあり 82k で、オーバーヘッドはありません。
- 判断の中身は、重要なところで正しく見えます。マイグレーションでは、スキルありの実行はドアを一方通行とし、コードを戻しても削除したカラムは復元できないと述べ、影響範囲を明示しました。キャッシュとコピーのタスクは双方向でした。対照群のマイグレーション PR も 0041 を先に適用するよう警告しましたが、ドアも影響範囲もなかったため、レビュアーが流し読みで見つけることはできません。
- スキルはごく小さい(数行)ため、読み込みのコストはかかりません。その価値は、テンプレートを毎回貼り付けずに済むことです。
ディメンション別スコア
| ディメンション | スコア | 理由 |
|---|---|---|
| 1_出力品質 | 5.0 | スキルありの平均スコア 5.00/5(プログラム的チェック。タスク別の表を 参照)。 |
| 2_スキルなしに対するリフト | 5 | スキルなし 1.67 に対して +3.33 ポイント(タスクごとに n=2。約 1 ポ イント未満の差はノイズ)。 |
| 3_トリガー | 5.0 | スキルあり群 6/6 実行でスキルファイルが読み込まれました。 |
| 4_指示の移植性 | 4 | テンプレート付きの短い SKILL.md 1 つ。スクリプトなし。 |
| 5_効率性 | 5 | トークン 1.00 倍(1実行あたり 82k に対し 82k)、時間 0.93 倍(34 秒に対し 37 秒)。 |
| 6_安全性と衛生 | 5 | テキストのみ。指摘なし。 |
本テストの限界
- ルールベースのフォーマットチェックのみです(セクションの存在、変更前/変更後、ドアの値が正しいか、影響範囲、図/疑似コードブロック)。図が「最小で有用」か、文章が良いかは判定していません。
- 対照群は構造上、フォーマットチェックで必ず不合格になります。この結果が示すのは、スキルが社内フォーマットの再記述を不要にすることであり、モデルがより良い PR を書くようになることではありません。
- 小さなフィクスチャ 3 つ。実際のリポジトリや git 履歴はありません。
- タスク・群ごとに n=2。1 ポイント未満の差はノイズです。
- ルールベースの採点はチェックが検出できるものだけを測ります。センスや、結果が最善かどうかは判定できません。
セキュリティ
security.md を参照。スキャン:CRITICAL 0 / HIGH 0 / MEDIUM 0。判定:実行しても安全(ネットワーク無効のサンドボックス)。クリーンなスキャン結果はスキルの安全性を証明しません。
結論
この PR フォーマットが欲しいなら、スキルは最初の試行で無償で(82k トークン、スキルなしと同じ)提供します。テンプレートを一文として貼り付けるのと同等です。チーム全体で一貫させるためにインストールしてください。文章の質の向上は期待しないでください。
トランスクリプト
実行ログ:pr (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) 列:タスク、群-回、スコア(0-5)、トークン、秒、合格したチェック、エージェントが開いたスキルファイル。 t1-cache control-1: スコア 1.67, トークン 82698, 秒 35.7, チェック 4/9, 開いたファイルなし t1-cache control-2: スコア 1.67, トークン 82765, 秒 30.9, チェック 4/9, 開いたファイルなし t1-cache oneliner-1: スコア 5.0, トークン 83654, 秒 32.5, チェック 9/9, 開いたファイルなし t1-cache oneliner-2: スコア 5.0, トークン 84007, 秒 38.4, チェック 9/9, 開いたファイルなし t1-cache treatment-1: スコア 5.0, トークン 70378, 秒 33.8, チェック 9/9, 開いたファイル pr t1-cache treatment-2: スコア 5.0, トークン 88915, 秒 35.0, チェック 9/9, 開いたファイル pr t2-migration control-1: スコア 1.67, トークン 81748, 秒 33.8, チェック 4/9, 開いたファイルなし t2-migration control-2: スコア 1.67, トークン 82290, 秒 36.5, チェック 4/9, 開いたファイルなし t2-migration oneliner-1: スコア 5.0, トークン 100647, 秒 37.7, チェック 9/9, 開いたファイルなし
18 実行、3 成果物
サンプル出力
SOTA · With the skill: PR.md (t1-cache, run 1, Codex)
## Summary Cache free slots by Room and day to avoid repeated database queries. Creating a Reservation invalidates the matching cache entry. ```text free_slots(Room, day) cache hit → return cached free slots cache miss → query Reservations → compute and cache free slots create Reservation insert Reservation → invalidate cache for Room and day ``` ## Evidence - **Before:** `tests/test_availability.py::test_free_slots_not_queried_twice` failed: `db.query called 2 times, expected 1`. Suite: 1 failed, 14 passed in 0.9s. **After:** Supplied test output reports 15 passed in 0.8s. ## Merge Danger **Door:** two-way Reverting restores a database query on each availability request; no schema or stored-data changes. **Blast Radius:** availability Cached free slots affect Members checking Room availability. Invalidation covers Reservation creation in the current process; other mutation paths or processes can leave cached results stale. The cache has no size limit or expiry.