setup-pre-commit (mattpocock/skills)
Configure des hooks pre-commit Husky avec lint-staged, Prettier, vérification de types et tests dans le dépôt.
setup-pre-commit : pour une vague demande « ajoute des hooks de commit », Codex seul construit une installation différente (hook git natif), allant jusqu'à appeler npm dans un dépôt pnpm (vu dans une exécution) ; le skill et un prompt d'une phrase donnent tous deux l'installation Husky + lint-staged (5.0 contre 1.4)
Codex CLI · gpt-6-astra
29.0 / 30
Gain par rapport à sans skill : +3.59 · Recommandé · 18 exécutions
Recommandé : total 29.0/30 d'au moins 22, qualité de sortie 5.0 d'au moins 3.5 et gain +3.59 d'au moins +1.0.
SOTA
RéussiTesté avec Codex.
Couvre Codex, Claude Code
Codex CLI 0.166 (palier SOTA) : 18 exécutions notées. Une réussite ici couvre aussi Claude Code selon notre règle de palier ; elle ne dit rien du second palier.
Scores
Chaque dimension va de 0 à 5 et les six forment le total sur 30. 5 est la meilleure note dans chaque dimension. Coût 5 signifie bon marché et rapide. Installation 5 signifie facile.
- Fiabilité du déclenchement
- 5.0
- Gain par rapport à sans skill
- 5.0
- Qualité de sortie
- 5.0
- Coût en tokens et en temps
- 5.0
- Installation et portabilité
- 4.0
- Sécurité
- 5.0
Revue de sécurité
SûrScan statique : 0 CRITIQUE / 0 ÉLEVÉ / 0 MOYEN. Revue manuelle : sûr à exécuter dans un bac à sable sans réseau (aucun problème détecté). Un scan propre ne prouve pas qu'un skill est sûr.
Installer
npx skills@latest add mattpocock/skills --skill setup-pre-commit
Commit épinglé: 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d
Testé: 2026-11-02
Ce que nous avons testé
- Projet npm avec scripts typecheck et test — Ajoutez des hooks de commit. Configurez des hooks pre-commit pour ce dépôt (aucun réseau n'est disponible, écrivez donc vous-même les fichiers et les modifications de package.json au lieu d'installer).
- Projet pnpm sans script typecheck — Ajoutez des hooks de commit. Configurez des hooks pre-commit pour ce dépôt (aucun réseau n'est disponible, écrivez donc vous-même les fichiers et les modifications de package.json au lieu d'installer).
- Une configuration Prettier existante doit survivre — Ajoutez des hooks de commit. Configurez des hooks pre-commit pour ce dépôt (aucun réseau n'est disponible, écrivez donc vous-même les fichiers et les modifications de package.json au lieu d'installer).
Points forts
- Fait passer le score moyen de 1.41 à 5.0 par rapport à sans skill (+3.59).
- Le skill a été détecté sans être nommé : son fichier a été lu dans 6/6 exécutions avec skill.
- Aucune surcharge de tokens : 0.99 fois le volume de tokens sans skill.
- Qualité absolue élevée avec le skill : 5.0 sur 5.
Points faibles
- Un prompt d'une phrase obtient 5.0, contre 5.0 avec le skill (+0.00).
- Réserve de test : un contrôle a été corrigé après la première notation (un fichier non modifié doit passer), et chaque exécution a été re-notée.
- n=2 par tâche et par bras ; les écarts inférieurs à environ 1 point sont du bruit.
Avis
Codex CLI 0.166 (gpt-6-astra, low reasoning) sur un PC Windows de test dédié, un projet temporaire neuf et des HOME/TMPDIR/caches temporaires à chaque exécution, skill installé (traitement) ou absent (contrôle) ou absent avec l'exigence centrale du skill compressée en une phrase ajoutée au prompt (groupe « prompt d'une phrase »), 2 exécutions par groupe et par tâche, réseau coupé, écritures dans /tmp bloquées. Les prompts ne mentionnent jamais le skill (sauf la formulation indiquée ci-dessous). Trois petits dépôts, tous avec le même prompt « 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) » : un dépôt npm avec des scripts typecheck et test, un dépôt pnpm (pnpm-lock.yaml) sans script typecheck, et un dépôt npm qui a déjà un .prettierrc. Le groupe « une phrase » reçoit la recette du skill en une phrase.
Comparaison à trois bras
| Bras | Score moyen (0-5) | Tokens par exécution |
|---|---|---|
| Sans le skill | 1.41 | 82k |
| Prompt d'une phrase | 5.0 | 75k |
| Avec le skill | 5.0 | 82k |
Mesuré avec Codex CLI sur 18 exécutions, noté par des contrôles basés sur des règles, sans juge LLM. Total 29.0 / 30, verdict Recommandé.
Divulgation : un contrôle a été corrigé après la première notation (un fichier non modifié doit passer), et chaque exécution a été re-notée.
Verdict : recommandé (29.0 / 30). Source : mattpocock/skills, skills/misc/setup-pre-commit, épinglé au commit 4ae2317. Installation : npx skills@latest add mattpocock/skills --skill setup-pre-commit. Licence : MIT (LICENSE du dépôt).
Présentation
Le skill setup-pre-commit (mattpocock/skills) : il met en place des hooks pre-commit Husky v9 avec lint-staged et Prettier : détecter le gestionnaire de paquets à partir du lockfile, écrire .husky/pre-commit (sans shebang) qui exécute lint-staged puis les scripts typecheck et test du dépôt via ce gestionnaire de paquets (en ignorant et signalant les scripts qui n'existent pas), ajouter un .lintstagedrc avec prettier --ignore-unknown --write, ajouter prepare: husky, et créer .prettierrc seulement s'il n'en existe aucun.
Notre méthode de test
Codex CLI 0.166 (gpt-6-astra, raisonnement faible) sur un PC de test Windows dédié, un projet temporaire neuf et des HOME/TMPDIR/caches temporaires à chaque exécution, skill installé (groupe traité) ou absent (groupe témoin), ou absent avec l'exigence centrale du skill compressée en une phrase ajoutée au prompt (groupe « une phrase »), 2 exécutions par groupe et par tâche, réseau coupé, écritures dans /tmp bloquées. Les prompts ne mentionnent jamais le skill (sauf la formulation indiquée ci-dessous).
Trois petits dépôts, tous avec le même prompt « Ajoute des hooks de commit. Configure des hooks pre-commit pour ce dépôt (aucun réseau n'est disponible, écris donc toi-même les fichiers et les modifications de package.json au lieu d'installer) » : un dépôt npm avec des scripts typecheck et test, un dépôt pnpm (pnpm-lock.yaml) sans script typecheck, et un dépôt npm qui a déjà un .prettierrc. La version « une phrase » reprend la recette du skill en une seule phrase.
- Projet npm avec scripts typecheck et test — Ajoute des hooks de commit. Configure des hooks pre-commit pour ce dépôt (aucun réseau n'est disponible, écris donc toi-même les fichiers et les modifications de package.json au lieu d'installer).
- Projet pnpm sans script typecheck — Ajoute des hooks de commit. Configure des hooks pre-commit pour ce dépôt (aucun réseau n'est disponible, écris donc toi-même les fichiers et les modifications de package.json au lieu d'installer).
- La configuration Prettier existante doit survivre — Ajoute des hooks de commit. Configure des hooks pre-commit pour ce dépôt (aucun réseau n'est disponible, écris donc toi-même les fichiers et les modifications de package.json au lieu d'installer).
Le scoring est programmatique (tests cachés / rappel des anomalies introduites / vérifications de contraintes / rendu + OCR le cas échéant), 0–5 par exécution. Aucun juge LLM n'a décidé d'un seul score.
Résultats
Le prompt d'une phrase donné au troisième groupe : « Mets en place Husky v9 avec lint-staged : détecte le gestionnaire de paquets à partir du lockfile, écris .husky/pre-commit (sans shebang) qui exécute npx lint-staged puis les scripts typecheck et test du dépôt via ce gestionnaire de paquets (omets et signale tout script qui n'existe pas), un .lintstagedrc avec prettier --ignore-unknown --write, un script prepare: husky, et crée .prettierrc seulement s'il n'en existe aucun. »
| Tâche | Score témoin | Une phrase | Avec le skill | Tokens témoins | Tokens (une phrase) | Tokens avec le skill | Skill lu |
|---|---|---|---|---|---|---|---|
| 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 |
Score moyen : 1.41 sans contre 5.0 avec le skill (delta +3.59). Tokens par exécution : 82k contre 82k (0.99x) ; temps 58s contre 43s. Groupe « une phrase » : 5.0 (gain du skill sur le prompt d'une phrase : +0.0 ; gain du prompt d'une phrase sur l'absence de skill : +3.59) ; 75k tokens par exécution pour le prompt d'une phrase, donc le skill coûte 1.09x ce prompt.
Ce qui s'est passé
- Témoin 1.41, une phrase 5.00, skill 5.00 (n=6 chacun). Faute d'outil nommé, le témoin a choisi sa propre conception : dans les dépôts npm et pnpm (4 exécutions), il a écrit un dossier de hooks git natifs (.githooks/pre-commit plus un README et un script prepare) sans Husky, sans lint-staged et sans Prettier, et dans le dépôt pnpm le hook exécute
npm test(vérifié dans l'exécution 1) alors que le dépôt utilise pnpm. Seul le dépôt avec .prettierrc existant a reçu Husky (2 exécutions). - Les exécutions avec le skill et avec le prompt d'une phrase sont toutes correctes sur les détails : le dépôt pnpm utilisait
pnpm exec lint-stagedetpnpm run test, omettait le typecheck manquant et le signalait, le .prettierrc existant n'était pas réécrit,prepare: huskyet les trois devDependencies étaient ajoutés. Le skill compte par son parti pris (Husky + lint-staged + Prettier), pas par une ingénierie complexe. - Aucun surcoût : 82k tokens par exécution pour le skill, 82k pour le témoin, 75k pour le prompt d'une phrase. Le skill a été lu dans 6/6 exécutions avec le skill sans être nommé.
- L'agent ne pouvait rien installer ni exécuter hors ligne, donc aucun des hooks générés n'a été lancé ; les deux groupes ont précisé que les hooks restent inactifs jusqu'à
npm install.
Scores par dimension
| Dimension | Score | Pourquoi |
|---|---|---|
| 1_output_quality | 5.0 | Score moyen de 5.00/5 avec le skill (vérifications programmatiques, voir le tableau par tâche). |
| 2_lift_vs_no_skill | 5 | +3.59 points contre 1.41 sans le skill (n=2 par tâche ; en dessous d'environ 1 point, c'est du bruit). |
| 3_trigger | 5.0 | Fichier du skill lu dans 6/6 exécutions avec le skill. |
| 4_instructions_portability | 4 | Un seul SKILL.md court, aucun script. |
| 5_efficiency | 5 | 0.99x de tokens (82k contre 82k par exécution) et 0.73x de temps (43s contre 58s). |
| 6_safety_hygiene | 5 | Uniquement de la prose ; il demande à l'agent de modifier package.json et d'ajouter des hooks, qui s'exécutent à chaque commit. |
Limites de ce test
- Vérifications basées sur des règles portant sur les fichiers écrits ; les hooks n'ont jamais été exécutés (pas de réseau, Husky non installé).
- La solution de hooks natifs du témoin est une conception valable ; les vérifications mesurent si la recette Husky/lint-staged demandée a été produite, ce que le témoin n'avait aucun moyen de savoir.
- Une vérification (le .prettierrc existant conservé) échouait initialement à chaque exécution parce que les fichiers inchangés ne sont pas copiés hors du projet ; elle a été modifiée pour réussir quand le fichier est intact, et les 18 exécutions ont été renotées selon la même règle.
- n = 2 par groupe et par tâche : les différences inférieures à environ 1 point relèvent du bruit.
- Le scoring basé sur des règles mesure ce que les vérifications peuvent voir ; il ne peut juger du goût ni du caractère optimal d'un résultat.
Sécurité
Voir security.md. Scan : 0 CRITICAL / 0 HIGH / 0 MEDIUM. Verdict : sûr à exécuter (sandbox sans réseau). Un scan propre ne prouve pas qu'un skill est sûr.
En résumé
Si vous voulez la configuration Husky + lint-staged + Prettier, le skill la réussit sur les trois formes de dépôt (détection de pnpm, typecheck manquant, configuration Prettier existante) sans surcoût en tokens ; une recette d'une phrase fait de même. Installez-le pour éviter de réexpliquer la recette, sans en attendre d'autre gain de qualité.
Transcription
Journal d'exécution : setup-pre-commit (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) Colonnes : tâche, groupe-exécution, score (0-5), tokens, secondes, vérifications réussies, fichiers de la skill ouverts par l'agent. t1-npm control-1: score 0.0, tokens 84825, s 49.0, vérifications 0/7, rien ouvert t1-npm control-2: score 0.0, tokens 67687, s 62.1, vérifications 0/7, rien ouvert t1-npm oneliner-1: score 5.0, tokens 66754, s 38.4, vérifications 7/7, rien ouvert t1-npm oneliner-2: score 5.0, tokens 83997, s 38.6, vérifications 7/7, rien ouvert t1-npm treatment-1: score 5.0, tokens 69607, s 37.3, vérifications 7/7, ouvert setup-pre-commit t1-npm treatment-2: score 5.0, tokens 87911, s 42.1, vérifications 7/7, ouvert setup-pre-commit t2-pnpm control-1: score 0.0, tokens 102203, s 77.9, vérifications 0/8, rien ouvert t2-pnpm control-2: score 0.0, tokens 104460, s 67.1, vérifications 0/8, rien ouvert t2-pnpm oneliner-1: score 5.0, tokens 66597, s 34.4, vérifications 8/8, rien ouvert
18 exécutions, 3 artefacts
Exemple de sortie
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" } }