Tous les skills

prototype (mattpocock/skills)

Construit un prototype jetable pour trancher une question de conception sur la logique d'état ou la direction de l'UI.

Le prototype de Matt Pocock : suit ses propres règles de variantes d'interface (4.95 contre 3.71 pour le contrôle) pour environ le même coût que sans skill

RecommandéSûr

Codex CLI · gpt-6-astra

27.2 / 30

Gain par rapport à sans skill : +1.23 · Recommandé · 18 exécutions

Recommandé : total 27.2/30 d'au moins 22, qualité de sortie 5.0 d'au moins 3.5 et gain +1.23 d'au moins +1.0.

SOTA

Réussi

Testé 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
3.2
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ûr

Scan statique : 1 CRITIQUE / 1 ÉLEVÉ / 0 MOYEN. Revue manuelle : sûr à exécuter dans un bac à sable sans réseau (résultats du scanner expliqués). Un scan propre ne prouve pas qu'un skill est sûr.

Installer

npx skills@latest add mattpocock/skills --skill prototype

Source

Commit épinglé: 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d

Testé: 2026-11-02

Ce que nous avons testé

  • Prototyper un modèle d'état d'abonnement — Je n'arrive pas à savoir si notre cycle de vie d'abonnement tient la route quand les paiements échouent. États : trial, active, past_due, paused, canceled. Événements : fin d'essai, paiement réussi, échec de paiement, mise en pause, reprise, annulation, réactivation. Règles : deux échecs…
  • Prototyper des variantes de page de tarifs — Sur pricing.html de ce petit site statique (trois offres), je ne sais pas comment présenter les offres. Faites plusieurs options de design différentes de cette section que je peux comparer dans le navigateur ; le vrai contenu des tarifs doit rester. Pas d'étape de build.
  • Prototyper les règles d'empilement de remises — L'empilement des remises vous semble-t-il juste ? Règles actuelles : le coupon SAVE10 vaut 10 % de remise, le coupon HALF 50 %, les commandes de plus de $50 sont livrées gratuitement, les membres fidélité ont 5 % de plus. Je n'arrive pas à décider dans quel ordre elles s'appliquent ni lesquelles peuvent s'empiler. Je veux essayer des cas et voir ce qu…

Points forts

  • Fait passer le score moyen de 3.71 à 4.95 par rapport à sans skill (+1.23).
  • 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.02 fois le volume de tokens sans skill.
  • Qualité absolue élevée avec le skill : 4.95 sur 5.

Points faibles

  • 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 Mac de test, 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 : modéliser un cycle de vie d'abonnement avec des échecs de paiement (question d'état), comparer des options pour une section de tarifs statique (question d'apparence, le vrai contenu des offres doit rester), et permettre à l'utilisateur d'essayer les règles d'empilement de remises avant de coder (question de logique, enregistrer dans prototype/). Les contrôles incluent un HTML autonome, cinq états affichés, des boutons par événement, des scénarios guidés, la mention prototype, aucun fichier de test, et pour la tâche de tarifs au moins trois variantes, un paramètre d'URL ?variant= et un sélecteur flottant fixe.

Comparaison à trois bras

BrasScore moyen (0-5)Tokens par exécution
Sans le skill3.71133k
Prompt d'une phrase4.7289k
Avec le skill4.95136k

Mesuré avec Codex CLI sur 18 exécutions, noté par des contrôles basés sur des règles, sans juge LLM. Total 27.2 / 30, verdict Recommandé.

Verdict : recommandé (27.2 / 30). Source : mattpocock/skills, skills/engineering/prototype, épinglé au commit 4ae2317. Installation : npx skills@latest add mattpocock/skills --skill prototype. Licence : MIT (LICENSE du dépôt).

Présentation

Le skill prototype de mattpocock/skills : il construit un prototype jetable qui répond à une question de design. Les questions de logique ou d'état reçoivent un seul fichier HTML avec un panneau d'état, des boutons de manipulation libre et des parcours guidés ; les questions d'apparence reçoivent plusieurs variantes radicalement différentes sur une même route, commutées par un paramètre d'URL et une barre flottante en bas. Règles : clairement marqué comme jetable, trivial à lancer, aucune persistance, aucun soin esthétique, aucun test. SKILL.md plus LOGIC.md et UI.md, environ 2 600 mots au total ; Markdown uniquement.

Notre méthode de test

Codex CLI 0.166 (gpt-6-astra, raisonnement faible) sur une machine de test Mac, 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 tâches : modéliser un cycle de vie d'abonnement avec des échecs de paiement (question d'état), comparer des options pour une section tarifaire statique (question d'apparence, le contenu réel des offres doit rester), et permettre à l'utilisateur d'essayer des règles d'empilement de remises avant de coder (question de logique, enregistrement dans prototype/). Les vérifications de règles portent sur : HTML autonome, cinq états affichés, un bouton par événement, des scénarios guidés, un marquage comme prototype, aucun fichier de test, et pour la tâche tarifaire au moins trois variantes, un paramètre d'URL ?variant= et un sélecteur flottant fixe.

  1. Prototyper un modèle d'état d'abonnement — Je n'arrive pas à savoir si notre cycle de vie d'abonnement tient la route quand des paiements échouent. États : trial, active, past_due, paused, canceled. Événements : fin de l'essai, paiement réussi, paiement échoué, mise en pause par l'utilisateur, reprise par l'utilisateur, annulation par l'utilisateur, réactivation par l'utilisateur. Règles : deux échecs…
  2. Prototyper des variantes de page tarifaire — Sur pricing.html de ce petit site statique (trois offres), je ne sais pas comment présenter les offres. Fais quelques options de design différentes de cette section que je peux comparer dans le navigateur ; le contenu tarifaire réel doit rester. Pas d'étape de build.
  3. Prototyper des règles d'empilement de remises — L'empilement des remises vous semble-t-il juste ? Règles actuelles : le coupon SAVE10 donne 10% de réduction, le coupon HALF 50%, les commandes de plus de $50 sont livrées gratuitement, les membres du programme de fidélité ont 5% de plus. Je n'arrive pas à décider dans quel ordre elles s'appliquent ni lesquelles peuvent s'empiler. Je veux essayer des cas et voir ce qui…

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 : « Construis un prototype jetable qui répond à une question énoncée : pour les questions de logique ou d'état, un seul fichier HTML autonome avec un énoncé visible de la question, un panneau d'état courant lisible, re-rendu après chaque clic, un bouton par action, et des scénarios de parcours guidés (chemin nominal, cas limite, coup illégal) ; pour les questions d'apparence, trois variantes radicalement différentes sur une même page, commutées par un paramètre d'URL ?variant= et une barre flottante en bas. Aucun test, aucun soin esthétique. »

TâcheScore témoinUne phraseAvec le skillTokens témoinsTokens (une phrase)Tokens avec le skillSkill lu
t1-subscription-logic4.644.44.84155k51k134k2/2
t2-pricing-ui2.55.05.0125k153k133k2/2
t3-discount-stacking4.04.755.0119k62k139k2/2

Score moyen : 3.71 sans contre 4.95 avec le skill (delta +1.23). Tokens par exécution : 133k contre 136k (1.02x) ; temps 186s contre 149s. Groupe « une phrase » : 4.72 (gain du skill sur le prompt d'une phrase : +0.23 ; gain du prompt d'une phrase sur l'absence de skill : +1.01) ; 89k tokens par exécution pour le prompt d'une phrase, donc le skill coûte 1.52x ce prompt.

Ce qui s'est passé

  • Score moyen de 3.71 pour le témoin, 4.72 pour la version en une phrase, 4.95 pour le skill. Le skill apporte +1.24 par rapport au témoin et +0.23 par rapport au prompt d'une phrase, à 136k tokens par exécution contre 133k (1.02x) pour le témoin et 89k pour le prompt d'une phrase (1.5x).
  • La tâche d'apparence montre l'effet : le skill a produit trois variantes avec un sélecteur flottant en bas et des variantes commutables par URL dans les deux exécutions (5.0 et 5.0 selon nos vérifications) ; le témoin a obtenu 4.0 et 1.0 : aucune barre flottante dans l'une ou l'autre exécution, trois mises en page avec un sélecteur et un paramètre d'URL dans une exécution mais pas dans l'autre, et dans une exécution le prix d'une offre manquait sur la page.
  • Sur les deux tâches de logique, le témoin construisait déjà du HTML interactif (4.4-4.8 sur le modèle d'abonnement, 4.0 sur l'empilement de remises) ; le skill ajoute les scénarios guidés et le label prototype : les scénarios apparaissent dans 4 exécutions sur 4 avec le skill contre 2 sur 4 pour le témoin.
  • La version en une phrase a fait aussi bien sur la tâche tarifaire ; elle a perdu un peu sur les tâches de logique en ne marquant pas toujours le fichier comme prototype (2 exécutions sur 4).

Scores par dimension

DimensionScorePourquoi
1_output_quality4.95

Score moyen de 4.95/5 avec le skill (vérifications programmatiques, voir le tableau par tâche).

2_lift_vs_no_skill3.23

+1.23 point contre 3.71 sans le skill (n=2 par tâche ; en dessous d'environ 1 point, c'est du bruit).

3_trigger5.0Fichier du skill lu dans 6/6 exécutions avec le skill.
4_instructions_portability4

Markdown simple ; suppose un task runner et git pour l'étape « capture », facultative.

5_efficiency5

1.02x de tokens (136k contre 133k par exécution) et 0.80x de temps (149s contre 186s).

6_safety_hygiene5Markdown uniquement ; aucun script.

Limites de ce test

  • Vérifications basées sur des règles portant sur des fonctionnalités (variantes, barre flottante, scénarios) ; la qualité des designs et le fait que le prototype réponde à la question n'ont pas été jugés par une personne.
  • Le scoring a été corrigé deux fois pendant l'analyse : les variantes peuvent vivre dans des fichiers CSS/JS séparés, et un sélecteur de mise en page compte comme une variante ; la première passe les sous-comptait, donc les chiffres antérieurs ne sont pas utilisés.
  • Le conseil du skill de committer le prototype sur une branche jetable et de laisser un pointeur dans une issue ne peut pas être testé dans un dossier de travail temporaire.
  • 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 : 1 CRITICAL / 1 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é

Le skill amène clairement Codex à construire le type de prototype qu'il décrit (variantes commutables par URL, barre flottante, scénarios guidés) là où une simple demande ne le fait pas, sans surcoût en tokens. Un résumé d'une phrase obtient l'essentiel du même comportement, mais le skill ajoute les détails du parcours logique et du marquage prototype.

Transcription

Journal d'exécution : prototype (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-subscription-logic control-1: score 4.84, tokens 138434, s 186.6, vérifications 6/7, rien ouvert
t1-subscription-logic control-2: score 4.44, tokens 171950, s 379.3, vérifications 6/7, rien ouvert
t1-subscription-logic oneliner-1: score 4.68, tokens 51299, s 95.1, vérifications 6/7, rien ouvert
t1-subscription-logic oneliner-2: score 4.13, tokens 52046, s 163.3, vérifications 5/7, rien ouvert
t1-subscription-logic treatment-1: score 4.68, tokens 144823, s 163.1, vérifications 6/7, ouvert prototype
t1-subscription-logic treatment-2: score 5.0, tokens 124780, s 165.0, vérifications 7/7, ouvert prototype
t2-pricing-ui control-1: score 4.0, tokens 169276, s 134.1, vérifications 5/6, rien ouvert
t2-pricing-ui control-2: score 1.0, tokens 81988, s 97.9, vérifications 2/6, rien ouvert
t2-pricing-ui oneliner-1: score 5.0, tokens 153260, s 107.2, vérifications 6/6, rien ouvert

18 exécutions, 3 artefacts

Exemple de sortie

SOTA · With the skill: prototype/index.html (t1-subscription-logic, run 1, Codex)

<!doctype html> <html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Subscription lifecycle prototype</title> <style> *{box-sizing:border-box}body{font:16px/1.5 system-ui,sans-serif;background:#f3f6f3;color:#243b31;margin:0}main{max-width:1080px;margin:auto;padding:32px 24px}h1{font-size:32px;letter-spacing:-1px;margin:8px 0}h2{font-size:19px;margin-top:0}.eyebrow{color:#49715f;letter-spacing:2px;font-size:12px;text-transform:uppercase}.panel{background:white;border:1px solid #d8e3db;border-radius:12px;padding:24px;margin:20px 0}.buttons,.tabs,.flow{display:flex;flex-wrap:wrap;gap:8px}button,select{font:inherit;color:#245940;background:white;border:1px solid #b6ccbe;border-radius:6px;padding:9px 12px}button{cursor:pointer}button:hover{background:#edf5ef}button:focus-visible,select:focus-visible{outline:3px solid #589c7b;outline-offset:2px}button:disabled{opacity:.45;cursor:default}.current,[aria-selected=true]{background:#206d50;color:white}.flow span{padding:6px 15px;border:1px solid #d8e3db;border-radius:25px}dl{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}dt,small,.muted{color:#5a7064}dt{font-size:12px}dd{margin:4px 0;font-weight:650}.notice{background:#eef6f0;border-left:3px solid #206d50;padding:12px}.columns{display:grid;grid-template-columns:1.2fr 1fr;gap:20px}.columns .panel{margin:0}.steps{display:grid;gap:8px}.steps button{text-align:left}.history{max-height:360px;overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}td,th{text-align:left;padding:10px 6px;border-bottom:1px solid #e0e8e2;vertical-align:top}li{margin:10px 0}select{max-width:100%;margin-top:10px}summary{cursor:pointer;font-weight:600}@media(max-width:700px){.columns{grid-template-columns:1fr}dl{grid-template-columns:repeat(2,1fr)}main{padding:20px 16px}} </style><main> <div class="eyebrow">Throwaway prototype · No saved data</div><h1>When payments fail, what happens next?</h1><p>Do these five subscription states behave as intended? Try events, inspect the full state, and walk through payment failures, pauses, and reactivation before implementation.</p> <section class="panel"><label for="policy"><strong>Interpret “two failed payments in a row while past_due”</strong></label><br><select id="policy"><option value="3">Two more failures while already past due (3 total)</option><option value="2">Two consecutive failures total (including entry into past due)</option></select><p><small>Default: literal “while already past due” reading. Changing the interpretation resets the simulation.</small></p><div id="snapshot"></div><div class="notice" id="notice" role="status" aria-live="polite">New trial account. No charges attempted.</div></section> <section class="panel"><h2>Try any event</h2><div class="buttons" id="events"></div><p><small>Payment buttons represent new charge attempts and their outcomes, not delayed notifications. Invalid events stay clickable so you can see why they are blocked.</small></p><div class="buttons"><button id="day">Advance 1 day</button><button id="month">Advance 30 days</button><button id="reset">Reset to trial</button></div></section> <div class="columns"><section [... excerpt: first 3200 of 13238 characters]

Voir Pro