pr (mattpocock/skills)
Rédige le corps d'une pull request décrivant le changement pour les relecteurs.
pr : un skill de pur format : le contrôle ne produit jamais le corps de PR en trois sections (1.7/5), le skill et un prompt d'une phrase y arrivent (5.0 et 4.95), sans tokens supplémentaires
Codex CLI · gpt-6-astra
29.0 / 30
Gain par rapport à sans skill : +3.33 · 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.33 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 pr
Commit épinglé: 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d
Testé: 2026-11-02
Ce que nous avons testé
- Corps de PR pour un cache — J'ouvre une pull request. Écrivez le corps de la PR pour le changement dans change.diff dans PR.md. Les sorties de test avant/après sont dans tests_before.txt et tests_after.txt.
- Corps de PR pour la suppression d'une colonne — Veuillez rédiger ma pull request. Écrivez le corps de la PR pour le changement dans change.diff dans PR.md. Les sorties de test avant/après sont dans tests_before.txt et tests_after.txt.
- Corps de PR pour un changement de texte — Écrivez une description de PR. Écrivez le corps de la PR pour le changement dans change.diff dans PR.md. Les sorties de test avant/après sont dans tests_before.txt et tests_after.txt.
Points forts
- Fait passer le score moyen de 1.67 à 5.0 par rapport à sans skill (+3.33).
- 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 : 1.0 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 4.95, contre 5.0 avec le skill (+0.05).
- 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 tâches, chacune « écris le corps de la PR pour change.diff dans PR.md » avec tests_before.txt / tests_after.txt à côté : un changement de cache (porte à double sens), une migration qui supprime une colonne (porte à sens unique) et un changement de texte. Le contrôle ne reçoit que cette phrase. Le groupe « une phrase » reçoit une phrase supplémentaire qui énonce tout le modèle. Le groupe avec skill n'est pas non plus informé du format.
Comparaison à trois bras
| Bras | Score moyen (0-5) | Tokens par exécution |
|---|---|---|
| Sans le skill | 1.67 | 82k |
| Prompt d'une phrase | 4.95 | 89k |
| 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é.
Verdict : recommandé (29.0 / 30). Source : mattpocock/skills, skills/engineering/pr, épinglé au commit 4ae2317. Installation : npx skills@latest add mattpocock/skills --skill pr. Licence : MIT (LICENSE du dépôt).
Ce que c'est
La compétence pr (mattpocock/skills) : transforme un diff en corps de pull request selon une structure fixe en trois parties : Résumé (le plus petit diagramme, pseudo-code ou arbre d'appels utile), Preuves (Avant : / Après : avec la sortie de test) et Danger de fusion (Porte : à sens unique ou bidirectionnel, plus un Rayon d'impact : en un mot), rédigé avec les termes du glossaire du projet. Un seul SKILL.md court.
Comment nous avons 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, compétence installée (avec compétence), absente (témoin) ou absente avec l'exigence essentielle de la compétence condensée en une phrase ajoutée au prompt (groupe prompt d'une phrase), 2 exécutions par groupe et par tâche, réseau désactivé, écritures dans /tmp bloquées. Les prompts ne mentionnent jamais la compétence (sauf la formulation indiquée ci-dessous).
Trois tâches, chacune « écris le corps de PR pour change.diff dans PR.md » avec tests_before.txt / tests_after.txt à côté : un changement de cache (porte bidirectionnelle), une migration qui supprime une colonne (porte à sens unique) et une modification de texte. Le témoin ne reçoit que cette phrase. Le groupe prompt d'une phrase reçoit une phrase supplémentaire qui explicite tout le modèle. Le groupe avec compétence n'est pas non plus informé du format.
- Corps de PR pour un cache — J'ouvre une pull request. Écris le corps de la PR pour le changement dans change.diff dans PR.md. Les sorties de test avant/après sont dans tests_before.txt et tests_after.txt.
- Corps de PR pour la suppression d'une colonne — Rédige ma pull request. Écris le corps de la PR pour le changement dans change.diff dans PR.md. Les sorties de test avant/après sont dans tests_before.txt et tests_after.txt.
- Corps de PR pour une modification de texte — Écris une description de PR. Écris le corps de la PR pour le changement dans change.diff dans PR.md. Les sorties de test avant/après sont dans tests_before.txt et tests_after.txt.
Le score est calculé de manière programmatique (tests masqués / détection des problèmes implantés / vérifications de contraintes / rendu + OCR le cas échéant), avec une note de 0–5 par exécution. Aucun juge LLM n'a attribué de score.
Résultats
Le prompt d'une phrase fourni au troisième groupe : « Rédige le corps de la PR en trois courtes sections : Résumé (le plus petit diagramme, pseudo-code ou arbre d'appels utile, sans préambule), Preuves (Avant : et Après : avec la sortie de test) et Danger de fusion (Porte : à sens unique ou bidirectionnel, et un Rayon d'impact : en un mot) ; utilise les termes du glossaire. »
| Tâche | Score témoin | Prompt d'une phrase | Avec compétence | Tokens témoin | Tokens du prompt d'une phrase | Tokens avec compétence | Compétence lue |
|---|---|---|---|---|---|---|---|
| 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 |
Score moyen : 1.67 sans contre 5.0 avec la compétence (écart +3.33). Tokens par exécution : 82k contre 82k (1.00x) ; temps 37s contre 34s. Groupe prompt d'une phrase : 4.95 (gain de la compétence par rapport au prompt d'une phrase : +0.05 ; gain propre du prompt d'une phrase par rapport à l'absence de compétence : +3.28) ; tokens du prompt d'une phrase : 89k par exécution, la compétence coûte donc 0.92x le prompt d'une phrase.
Ce qui s'est passé
- Témoin 1.67, prompt d'une phrase 4.95, compétence 5.00 (n=6 chacun). Le témoin rédigeait des PR en prose claires et exactes, mais n'a utilisé dans aucune des 6 exécutions les trois sections, un diagramme ou un bloc de pseudo-code, les libellés Avant/Après, une Porte ou un Rayon d'impact. C'est un format que le modèle ne peut pas deviner : tout groupe à qui on l'indique obtient un score élevé ; le jeu de contrôles mesure la conformité au format, pas la qualité d'écriture.
- La compétence s'est déclenchée sans être nommée (6/6 lectures) et le prompt d'une phrase porte la même information : la différence entre les deux est de 0.05 point (une exécution a raté une expression régulière de section du modèle : l'exécution migration du groupe prompt d'une phrase avait 2 sections sur 3 reconnues). Tokens par exécution : 82k pour le témoin, 89k pour le prompt d'une phrase, 82k pour la compétence : aucun surcoût.
- Le contenu de jugement semble juste là où il compte : sur la migration, l'exécution avec compétence a qualifié la porte de sens unique, précisé qu'annuler le code ne peut pas restaurer la colonne supprimée et nommé le rayon d'impact ; les tâches cache et texte étaient bidirectionnelles. La PR de migration du témoin avertissait aussi d'appliquer 0041 en premier, mais sans porte ni rayon d'impact : un relecteur ne le trouverait pas en survolant.
- La compétence est minuscule (quelques lignes), son chargement ne coûte donc rien ; son intérêt est que personne n'a à coller le modèle à chaque fois.
Scores par dimension
| Dimension | Score | Pourquoi |
|---|---|---|
| 1_output_quality | 5.0 | Score moyen de 5.00/5 avec la compétence (contrôles programmatiques, voir le tableau par tâche). |
| 2_lift_vs_no_skill | 5 | +3.33 points par rapport à 1.67 sans la compétence (n=2 par tâche ; moins d'environ 1 point relève du bruit). |
| 3_trigger | 5.0 | Fichier de compétence lu dans 6/6 exécutions avec compétence. |
| 4_instructions_portability | 4 | Un court SKILL.md avec un modèle, aucun script. |
| 5_efficiency | 5 | 1.00x de tokens (82k contre 82k par exécution) et 0.93x de temps (34s contre 37s). |
| 6_safety_hygiene | 5 | Texte uniquement ; aucune remarque. |
Limites de ce test
- Uniquement des contrôles de format basés sur des règles (sections présentes, Avant/Après, valeur de Porte correcte, Rayon d'impact, bloc diagramme/pseudo-code) ; ils ne jugent pas si le diagramme est le « plus petit utile » ni si l'écriture est bonne.
- Le groupe témoin est voué à échouer aux contrôles de format par construction : le résultat montre que la compétence évite de répéter un format maison, pas qu'elle fait mieux écrire les PR au modèle.
- Trois petits fixtures ; aucun vrai dépôt ni historique git.
- n = 2 par groupe et par tâche : les écarts inférieurs à environ 1 point relèvent du bruit.
- Le score basé sur des règles mesure ce que les contrôles peuvent voir ; il ne peut juger du goût ni du caractère optimal d'un résultat.
Sécurité
Voir security.md. Analyse : 0 CRITICAL / 0 HIGH / 0 MEDIUM. Verdict : sûr à exécuter (sandbox sans réseau). Une analyse propre ne prouve pas qu'une compétence est sûre.
En bref
Si vous voulez ce format de PR, la compétence le produit du premier coup sans surcoût (82k tokens, comme sans compétence), à égalité avec le collage du modèle sous forme de prompt d'une phrase. Installez-la pour l'uniformité au sein d'une équipe ; n'en attendez pas une meilleure prose.
Transcription
Journal d'exécution : pr (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-cache control-1: score 1.67, tokens 82698, s 35.7, vérifications 4/9, rien ouvert t1-cache control-2: score 1.67, tokens 82765, s 30.9, vérifications 4/9, rien ouvert t1-cache oneliner-1: score 5.0, tokens 83654, s 32.5, vérifications 9/9, rien ouvert t1-cache oneliner-2: score 5.0, tokens 84007, s 38.4, vérifications 9/9, rien ouvert t1-cache treatment-1: score 5.0, tokens 70378, s 33.8, vérifications 9/9, ouvert pr t1-cache treatment-2: score 5.0, tokens 88915, s 35.0, vérifications 9/9, ouvert pr t2-migration control-1: score 1.67, tokens 81748, s 33.8, vérifications 4/9, rien ouvert t2-migration control-2: score 1.67, tokens 82290, s 36.5, vérifications 4/9, rien ouvert t2-migration oneliner-1: score 5.0, tokens 100647, s 37.7, vérifications 9/9, rien ouvert
18 exécutions, 3 artefacts
Exemple de sortie
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.