setup-pre-commit (mattpocock/skills)
現在のリポジトリに Husky のプリコミットフックを設定し、lint-staged、Prettier、型チェック、テストを組み込みます。
setup-pre-commit:あいまいな「コミットフックを追加」という依頼では、素の Codex は別の(ネイティブ git フック)構成を作り、pnpm リポジトリなのに npm を呼び出すことさえあります(1 実行で確認)。スキルと一文プロンプトはどちらも Husky + lint-staged の構成を作ります(5.0 対 1.4)。
Codex CLI · gpt-6-astra
29.0 / 30
スキルなしに対するリフト:+3.59 · 推奨 · 18 実行
推奨:合計 29.0/30 が 22 以上、出力品質 5.0 が 3.5 以上、リフト +3.59 が +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 setup-pre-commit
固定コミット: 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d
テスト済み: 2026-11-02
テスト内容
- typecheck と test スクリプトのある npm プロジェクト — コミットフックを追加してください。このリポジトリに pre-commit フックを設定してください(ネットワークは利用できないため、インストールする代わりにファイルと package.json の変更を自分で書いてください)。
- typecheck スクリプトのない pnpm プロジェクト — コミットフックを追加してください。このリポジトリに pre-commit フックを設定してください(ネットワークは利用できないため、インストールする代わりにファイルと package.json の変更を自分で書いてください)。
- 既存の Prettier 設定を維持 — コミットフックを追加してください。このリポジトリに pre-commit フックを設定してください(ネットワークは利用できないため、インストールする代わりにファイルと package.json の変更を自分で書いてください)。
長所
- スキルなしと比べ平均スコアを 1.41 から 5.0 に引き上げ(+3.59)。
- スキルは名前を出さずとも採用されました:スキルあり群 6/6 実行でスキルファイルが読み込まれました。
- トークンのオーバーヘッドなし:スキルなしの 0.99 倍。
- スキルありの絶対品質は高水準:5 点中 5.0。
短所
- 一文プロンプトは 5.0、スキルありは 5.0(+0.00)。
- テスト上の注意:最初の採点後に 1 つのチェックを修正し(未変更のファイルは合格とする)、全実行を再採点しました。
- タスク・群ごとに n=2。1 ポイント未満の差はノイズです。
レビュー
専用の Windows テスト PC 上で Codex CLI 0.166(gpt-6-astra、低推論)、実行ごとに新規の一時プロジェクトと一時 HOME/TMPDIR/キャッシュを使用、スキルをインストール(スキルあり群)、スキルなし(対照群)、またはスキルの中核要件をプロンプト末尾に付けた一文に圧縮(一文プロンプト群)、タスクごとに各群 2 実行、ネットワーク無効、/tmp への書き込みはブロック。プロンプトはスキル名に一切言及しません(以下で注記する表現を除く)。3 つの小さなリポジトリすべてに同じプロンプト「Add commit hooks. Set up pre-commit hooks for this repo (no network is available, so write the files and package.json changes yourself instead of installing)」を使用します:typecheck と test スクリプトのある npm リポジトリ、typecheck スクリプトのない pnpm リポジトリ(pnpm-lock.yaml)、すでに .prettierrc のある npm リポジトリ。一文プロンプトは、スキルのレシピを一文にしたものです。
3群の比較
| 群 | 平均スコア(0〜5) | 1実行あたりのトークン |
|---|---|---|
| スキルなし | 1.41 | 82k |
| 一文プロンプト | 5.0 | 75k |
| スキルあり | 5.0 | 82k |
Codex CLI で 18 実行を計測し、LLM 判定なしのルールベースのチェックで採点。合計 29.0 / 30、判定は 推奨。
開示事項 初回の採点後に1つのチェックを修正し(未変更のファイルが合格する必要がある)、全実行を再採点しました。
判定:推奨(29.0 / 30)。 出典:mattpocock/skills、skills/misc/setup-pre-commit、コミット 4ae2317 時点。インストール:npx skills@latest add mattpocock/skills --skill setup-pre-commit。ライセンス: MIT(リポジトリの LICENSE)。
概要
setup-pre-commit スキル(mattpocock/skills)。lint-staged と Prettier を使う Husky v9 の pre-commit フックをセットアップします。ロックファイルからパッケージマネージャーを検出し、lint-staged を実行してから、そのパッケージマネージャーでリポジトリの typecheck と test スクリプトを実行する .husky/pre-commit(シバンなし)を書き(存在しないスクリプトはスキップして報告)、prettier --ignore-unknown --write を含む .lintstagedrc を追加し、prepare: husky を追加し、.prettierrc は存在しない場合にのみ作成します。
テスト方法
専用の Windows テスト PC 上で Codex CLI 0.166(gpt-6-astra、低推論)、実行ごとに新規の一時プロジェクトと一時 HOME/TMPDIR/キャッシュを使用、スキルをインストール(スキルあり群)、スキルなし(対照群)、またはスキルの中核要件をプロンプト末尾に付けた一文に圧縮(一文プロンプト群)、タスクごとに各群 2 実行、ネットワーク無効、/tmp への書き込みはブロック。プロンプトはスキル名に一切言及しません(以下で注記する表現を除く)。
小さなリポジトリ 3 つ。すべて同じプロンプト「コミットフックを追加してください。このリポジトリに pre-commit フックをセットアップしてください(ネットワークが利用できないため、インストールする代わりにファイルと package.json の変更を自分で書いてください)」です。typecheck と test スクリプトを持つ npm リポジトリ、typecheck スクリプトのない pnpm リポジトリ(pnpm-lock.yaml)、すでに .prettierrc を持つ npm リポジトリ。一文プロンプト = スキルのレシピを一文にしたものです。
- typecheck と test スクリプトを持つ npm プロジェクト — コミットフックを追加してください。このリポジトリに pre-commit フックをセットアップしてください(ネットワークが利用できないため、インストールする代わりにファイルと package.json の変更を自分で書いてください)。
- typecheck スクリプトのない pnpm プロジェクト — コミットフックを追加してください。このリポジトリに pre-commit フックをセットアップしてください(ネットワークが利用できないため、インストールする代わりにファイルと package.json の変更を自分で書いてください)。
- 既存の Prettier 設定を保持する — コミットフックを追加してください。このリポジトリに pre-commit フックをセットアップしてください(ネットワークが利用できないため、インストールする代わりにファイルと package.json の変更を自分で書いてください)。
採点はプログラム的(隠しテスト/仕込み問題の検出/制約チェック/該当する場合はレンダリング+OCR)で、実行ごとに 0〜5 点。スコアはどの LLM 判定者も決めていません。
結果
第3群に与えた一文プロンプト:"Husky v9 を lint-staged とともにセットアップする:ロックファイルからパッケージマネージャーを検出し、npx lint-staged を実行してから、そのパッケージマネージャーでリポジトリの typecheck と test スクリプトを実行する .husky/pre-commit(シバンなし)を書く(存在しないスクリプトは省いて、その旨を伝える)。prettier --ignore-unknown --write を含む .lintstagedrc、prepare: husky スクリプト、そして .prettierrc は存在しない場合にのみ作成する。"
| タスク | 対照群スコア | 一文プロンプト | スキルあり | 対照群トークン | 一文プロンプトトークン | スキルありトークン | スキル読込 |
|---|---|---|---|---|---|---|---|
| t1-npm | 0.0 | 5.0 | 5.0 | 76k | 75k | 78k | 2/2 |
| t2-pnpm | 0.0 | 5.0 | 5.0 | 103k | 66k | 87k | 2/2 |
| t3-existing-prettier | 4.23 | 5.0 | 5.0 | 66k | 83k | 78k | 2/2 |
平均スコア:スキルなし 1.41 対 スキルあり 5.0(差分 +3.59)。1 実行あたりのトークン:82k 対 82k(0.99 倍)、時間 58 秒 対 43 秒。一文プロンプト群:5.0(一文プロンプトに対するスキルの上乗せ:+0.0、スキルなしに対する一文プロンプト自身の上乗せ:+3.59)。一文プロンプトのトークンは 1 実行あたり 75k で、スキルのコストは一文プロンプトの 1.09 倍です。
何が起きたか
- 対照群 1.41、一文プロンプト 5.00、スキルあり 5.00(各 n=6)。ツールを名指しされていないため、対照群は独自の設計を選びました。npm と pnpm のリポジトリ(4 実行)では、Husky も lint-staged も Prettier も使わず、ネイティブの git フックフォルダ(.githooks/pre-commit に README と prepare スクリプト)を書きました。pnpm リポジトリでは、リポジトリが pnpm を使っているのに、フックが
npm testを実行します(実行 1 で確認)。Husky を使ったのは、既存の .prettierrc を持つリポジトリだけでした(2 実行)。 - スキルありと一文プロンプトの実行は、詳細まですべて正解です。pnpm リポジトリでは
pnpm exec lint-stagedとpnpm run testを使い、存在しない typecheck は省いてその旨を述べ、既存の .prettierrc は書き換えず、prepare: huskyと 3 つの devDependencies を追加しました。スキルが効くのは、その方針(Husky + lint-staged + Prettier)によってであり、難しい工学的処理によるものではありません。 - コストはなし。1 実行あたりのトークンはスキルあり 82k、対照群 82k、一文プロンプト 75k。スキルは、名前を出さずともスキルあり群 6/6 実行で読み込まれました。
- エージェントはオフラインで何もインストールも実行もできなかったため、生成されたフックはどれも実行されませんでした。両群とも、フックは
npm installまで無効のままだと述べています。
次元別スコア
| 次元 | スコア | 理由 |
|---|---|---|
| 1_output_quality | 5.0 | スキルありの平均スコア 5.00/5(プログラム的チェック。タスク別の 表を参照)。 |
| 2_lift_vs_no_skill | 5 | スキルなしの 1.41 に対して +3.59 ポイント(タスクごとに n=2。約 1 ポイント未満はノイズ)。 |
| 3_trigger | 5.0 | スキルあり群 6/6 実行でスキルファイルが読み込まれました。 |
| 4_instructions_portability | 4 | 短い SKILL.md 1 つ。スクリプトなし。 |
| 5_efficiency | 5 | トークン 0.99 倍(1 実行あたり 82k 対 82k)、時間 0.73 倍(43 秒 対 58 秒)。 |
| 6_safety_hygiene | 5 | 散文のみ。package.json の編集と、コミットごとに実行されるフックの 追加をエージェントに指示します。 |
このテストの限界
- 書かれたファイルへのルールベースのチェック。フックは一度も実行されていません(ネットワークなし、Husky 未インストール)。
- 対照群のネイティブフックによる解決策は妥当な設計です。チェックが測るのは、求められた Husky/lint-staged のレシピが作られたかどうかで、対照群にはそれを知る術がありませんでした。
- 1 つのチェック(既存の .prettierrc の保持)は当初、全実行で失敗しました。変更されていないファイルはコピーされないためです。ファイルが無変更の場合は合格とするように変更し、18 実行すべてを同じルールで再採点しました。
- タスク・群ごとに n=2。1 ポイント未満の差はノイズです。
- ルールベースの採点はチェックで見えるものだけを測ります。センスや、その結果が可能な限り最良かどうかは判定できません。
セキュリティ
security.md を参照。スキャン:0 CRITICAL / 0 HIGH / 0 MEDIUM。判定:実行しても安全(ネットワーク無効のサンドボックス)。クリーンなスキャン結果はスキルの安全性を証明しません。
まとめ
Husky + lint-staged + Prettier のセットアップが欲しいなら、このスキルは 3 つのリポジトリ形状すべて(pnpm の検出、欠けた typecheck、既存の Prettier 設定)で、追加トークンなしに正しく仕上げます。一文のレシピでも同じです。レシピを毎回説明し直さないためにインストールするもので、それ以上の品質向上は期待しないでください。
トランスクリプト
実行ログ:setup-pre-commit (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) 列:タスク、群-回、スコア(0-5)、トークン、秒、合格したチェック、エージェントが開いたスキルファイル。 t1-npm control-1: スコア 0.0, トークン 84825, 秒 49.0, チェック 0/7, 開いたファイルなし t1-npm control-2: スコア 0.0, トークン 67687, 秒 62.1, チェック 0/7, 開いたファイルなし t1-npm oneliner-1: スコア 5.0, トークン 66754, 秒 38.4, チェック 7/7, 開いたファイルなし t1-npm oneliner-2: スコア 5.0, トークン 83997, 秒 38.6, チェック 7/7, 開いたファイルなし t1-npm treatment-1: スコア 5.0, トークン 69607, 秒 37.3, チェック 7/7, 開いたファイル setup-pre-commit t1-npm treatment-2: スコア 5.0, トークン 87911, 秒 42.1, チェック 7/7, 開いたファイル setup-pre-commit t2-pnpm control-1: スコア 0.0, トークン 102203, 秒 77.9, チェック 0/8, 開いたファイルなし t2-pnpm control-2: スコア 0.0, トークン 104460, 秒 67.1, チェック 0/8, 開いたファイルなし t2-pnpm oneliner-1: スコア 5.0, トークン 66597, 秒 34.4, チェック 8/8, 開いたファイルなし
18 実行、3 成果物
サンプル出力
SOTA · With the skill: package.json (t1-npm, run 1, Codex)
{ "name": "app", "version": "1.0.0", "private": true, "scripts": { "prepare": "husky", "test": "vitest run", "typecheck": "tsc --noEmit" }, "devDependencies": { "husky": "^9.1.7", "lint-staged": "^15.5.2", "prettier": "^3.5.3", "typescript": "^5.4.0" } }