design-taste-frontend (Leonxlnx/taste-skill)
Donne une direction visuelle propre aux landing pages et aux écrans d'application, puis corrige les rendus génériques à partir de captures.
design-taste-frontend : élimine les marqueurs de « slop IA » (surtitres en majuscules, marqueurs 01/02) et gagne la tâche de refonte, mais sa moyenne passe sous le contrôle (3.6 contre 4.0) parce qu'une page d'accueil est sortie cassée, pour 3.7 fois les tokens
Codex CLI · gpt-6-astra
16.2 / 30
Gain par rapport à sans skill : -0.38 · Selon les cas · 18 exécutions
Selon les cas : le total 16.2/30 est inférieur à 22 et le gain -0.38 est inférieur à +1.0. Pour être recommandé, il faut un total de 22/30, une qualité de sortie de 3.5 et un gain de +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
- 1.6
- Qualité de sortie
- 3.6
- Coût en tokens et en temps
- 0.0
- Installation et portabilité
- 3.0
- Sécurité
- 3.0
Revue de sécurité
PrudenceScan statique : 10 CRITIQUE / 44 ÉLEVÉ / 9 MOYEN. Revue manuelle : vérifié : exécution avec réserves (scripts Node fournis ; résultats du scanner expliqués). Un scan propre ne prouve pas qu'un skill est sûr.
Installer
npx skills@latest add Leonxlnx/taste-skill --skill taste-skill
Commit épinglé: 12af471f627f866411b4bd785b19646d3672784c
Testé: 2026-11-02
Ce que nous avons testé
- Nouvelle page d'accueil à partir d'un brief — Créez un site d'accueil d'une page pour Tidepool, une petite marque de snacks aux algues vendus par abonnement (trois saveurs, $14/boîte, livraison mensuelle). Écrivez un seul index.html autonome avec CSS en ligne et un minimum de JS si nécessaire. Pas de frameworks, pas d'étape de build…
- Interface de tableau de bord dense — Créez une page de tableau de bord pour une équipe municipale de surveillance de la qualité de l'eau : relevés actuels de 6 stations (pH, turbidité, chlore, température), une tendance sur 7 jours pour chacune, et un panneau d'alertes. Un seul dashboard.html autonome avec CSS/JS en ligne et des relevés codés en dur…
- Refondre une page fade existante — old.html est la page d'accueil actuelle de Granite Peak Climbing Gym (Boulder, CO). Refondez-la en new.html : conservez tout son contenu réel (tarifs, cours, horaires, adresse) mais faites ressembler la page à cette salle d'escalade précise. HTML/CSS autonome, sans framework…
Points forts
- Le skill a été détecté sans être nommé : son fichier a été lu dans 6/6 exécutions avec skill.
Points faibles
- Aucun gain mesurable par rapport à sans skill (-0.38, dans le bruit).
- Un prompt d'une phrase obtient 4.29, contre 3.58 avec le skill (-0.71).
- Consomme 3.74 fois plus de tokens que sans skill.
- Réserve de test : une page du groupe avec skill était cassée, et le skill a utilisé 3.7 fois plus de tokens que sans skill. Les scores proviennent de planches contact en aveugle.
- 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). Mêmes trois tâches pour tous les groupes que pour ui-ux-pro-max et frontend-design : une page d'accueil pour la marque de snacks aux algues Tidepool, un tableau de bord municipal de qualité de l'eau, et une refonte de la page d'accueil de la salle d'escalade Granite Peak en conservant son contenu. Le groupe « une phrase » demande un concept et une palette précis, un duo typographique distinctif et une mise en page asymétrique, pas de dégradés violets ni d'Inter par défaut ni de grille de trois cartes ni de marqueurs numérotés ni de surtitres en majuscules, des visuels dessinés en CSS/SVG, et de vérifier les largeurs desktop et mobile. Les pages ont été capturées hors ligne (desktop et mobile) et notées en aveugle à partir de planches contact mélangées.
Comparaison à trois bras
| Bras | Score moyen (0-5) | Tokens par exécution |
|---|---|---|
| Sans le skill | 3.96 | 115k |
| Prompt d'une phrase | 4.29 | 298k |
| Avec le skill | 3.58 | 431k |
Mesuré avec Codex CLI sur 18 exécutions, noté par des contrôles basés sur des règles, sans juge LLM. Total 16.2 / 30, verdict Selon les cas.
Divulgation : une page du groupe avec skill était cassée, et le skill a utilisé 3.7 fois plus de tokens que sans skill. Les scores proviennent de planches contact en aveugle.
Verdict : Selon les cas (16.2 / 30). Source : Leonxlnx/taste-skill, skills/taste-skill, épinglé au commit 12af471. Installation : npx skills@latest add Leonxlnx/taste-skill --skill taste-skill. Licence : MIT (LICENSE du dépôt).
Ce que c'est
Le skill design-taste-frontend (Leonxlnx/taste-skill) : un flux de travail de direction artistique pour pages web qui exécute un script local pour choisir une « direction » de design à partir du brief (par exemple « la page est l'objet »), écrit un fichier de direction et un rapport dans un dossier .taste-skill/, puis construit la page en conséquence, avec des règles contre les mises en page génériques typiques de l'IA, un ensemble fixe de sections et des vérifications visuelles.
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 caches HOME/TMPDIR temporaires à chaque exécution, skill installé (groupe avec skill) ou absent (groupe témoin) ou absent avec l'exigence centrale du skill compressée en une phrase ajoutée à la fin du 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).
Les mêmes trois tâches pour tous les groupes que pour ui-ux-pro-max et frontend-design : une page de destination pour la marque de snacks aux algues Tidepool, un tableau de bord municipal de qualité de l'eau, et une refonte de la page d'accueil de la salle d'escalade Granite Peak en conservant son contenu. Le prompt d'une phrase demande un concept et une palette précis, un duo typographique distinctif et une mise en page asymétrique, pas de dégradés violets, ni d'Inter par défaut, ni de grille de trois cartes, ni de marqueurs numérotés, ni de surtitres en majuscules, des images dessinées en CSS/SVG, et une vérification aux largeurs bureau et mobile. Les pages ont été capturées hors ligne (bureau et mobile) et notées en aveugle à partir de planches-contacts mélangées.
- Nouvelle page de destination à partir d'un brief — Créez un site de destination d'une page pour Tidepool, une petite marque de snacks aux algues vendus par abonnement (trois saveurs, $14/boîte, expédition mensuelle). Écrivez un seul index.html autonome avec CSS en ligne et un minimum de JS si nécessaire. Pas de frameworks, pas d'outil de build st…
- Interface de tableau de bord dense en données — Créez une page de tableau de bord pour une équipe municipale de surveillance de la qualité de l'eau : les relevés actuels de 6 stations (pH, turbidité, chlore, température), une tendance sur 7 jours pour chacune, et un panneau d'alertes. Un seul dashboard.html autonome avec CSS/JS en ligne et des données de re…
- Refondre une page existante fade — old.html est la page d'accueil actuelle de Granite Peak Climbing Gym (Boulder, CO). Refondez-la en new.html : conservez tout son contenu réel (tarifs, cours, horaires, adresse) mais faites en sorte que la page appartienne à cette salle d'escalade précise. HTML/CSS autonome, sans fra…
Les scores proviennent d'une lecture en aveugle par Grok Bot (identifiants mélangés, aucune condition affichée) selon une grille fixe, de 0 à 5 par exécution ; un juge IA, donc les petits écarts relèvent du bruit.
Résultats
Le prompt d'une phrase donné au troisième groupe : "Faites de la direction artistique contre le rendu IA générique : choisissez un concept et une palette précis pour ce sujet, évitez les dégradés violets, l'Inter par défaut, la grille générique de trois cartes, les marqueurs numérotés 01/02 et les surtitres en majuscules, utilisez un duo typographique distinctif et une composition asymétrique, dessinez les images en CSS/SVG, et vérifiez la page aux largeurs bureau et mobile en corrigeant ce qui cloche."
| Tâche | Score sans skill | Prompt d'une phrase | Avec le skill | Tokens sans skill | Tokens prompt d'une phrase | Tokens avec skill | Skill lu |
|---|---|---|---|---|---|---|---|
| t1-landing | 4.12 | 4.38 | 2.75 | 101k | 312k | 397k | 2/2 |
| t2-dashboard | 3.75 | 4.38 | 3.5 | 115k | 330k | 600k | 2/2 |
| t3-redesign | 4.0 | 4.12 | 4.5 | 128k | 252k | 296k | 2/2 |
Score moyen : 3.96 sans le skill contre 3.58 avec (delta -0.38). Tokens par exécution : 115k contre 431k (3.74x) ; temps 175s contre 198s. Groupe prompt d'une phrase : 4.29 (gain du skill par rapport au prompt d'une phrase : -0.71 ; gain du prompt d'une phrase par rapport à l'absence de skill : +0.33) ; 298k tokens par exécution pour le prompt d'une phrase, donc le skill coûte 1.44x le prompt d'une phrase.
Ce qui s'est passé
- Moyenne en aveugle : prompt d'une phrase 4.29, groupe témoin 3.96, skill 3.58 (n=6 chacun). Par tâche, le skill a donné 4.5 / 4.5 sur la refonte (témoin 4.0, prompt d'une phrase 4.1), 3.5 sur le tableau de bord (témoin 3.75, prompt d'une phrase 4.4) et 2.75 sur la page de destination (témoin 4.1, prompt d'une phrase 4.4).
- La moyenne basse de la page de destination vient d'une page cassée : la page d'une exécution avec skill affiche du texte brouillé (le sélecteur de saveurs écrit le balisage comme du texte, donc '</span>' apparaît dans un bouton), une navigation effondrée et des formes éparpillées ; l'autre page de destination avec skill était correcte (4.0). Le flux de travail du skill a lui-même signalé que « la vérification navigateur était bloquée », et il a donc livré sans contrôle visuel. Sans cette exécution, la moyenne du skill serait de 4.0, au niveau du groupe témoin.
- Le skill change bien l'apparence des pages : les signes de rendu IA générique qu'il nomme disparaissent. Surtitres en majuscules par page : témoin 0-5, skill 0-1 ; marqueurs numérotés 01/02 : témoin 3-6 sur 3 des 6 pages, skill 0 sur les 6. Le prompt d'une phrase a supprimé les mêmes signes (0-1 surtitre, 0 marqueur), donc la phrase suffit à elle seule pour cette partie.
- Le coût est très élevé : 431k tokens par exécution avec le skill contre 298k pour le prompt d'une phrase et 115k pour le témoin (3.7x et 1.4x), avec 25.7 commandes shell par exécution (témoin 7.7). Chaque exécution dépose aussi environ 40 fichiers de skill et de direction dans le projet (les fichiers direction.json et report.md du skill sont écrits sous
.taste-skill/). - Les tableaux de bord et pages de destination avec skill dotés de
.taste-skill/direction.jsonétaient distinctifs d'aspect (mises en page éditoriales papier-et-encre) mais pas systématiquement meilleurs que le style sobre vert foncé et italique serif vers lequel convergent le témoin et le prompt d'une phrase.
Scores par dimension
| Dimension | Score | Pourquoi |
|---|---|---|
| 1_output_quality | 3.58 | Score moyen 3.58/5 avec le skill (vérifications programmatiques, voir le tableau par tâche). |
| 2_lift_vs_no_skill | 1.62 | -0.38 point contre 3.96 sans le skill (n=2 par tâche ; moins d'environ 1 point relève du bruit). |
| 3_trigger | 5.0 | Fichier du skill lu dans 6/6 exécutions avec skill. |
| 4_instructions_portability | 3 | Volumineux : SKILL.md, une bibliothèque de directions, des ressources CSS et des scripts qui écrivent dans le projet ; il suppose un navigateur pour les vérifications visuelles. |
| 5_efficiency | 0 | 3.74x tokens (431k contre 115k par exécution) et 1.14x temps (198s contre 175s). |
| 6_safety_hygiene | 3 | Écrit des fichiers |
Limites de ce test
- Jugement visuel en aveugle par le relecteur à partir de planches-contacts pleine page (bureau 600 px, mobile 300 px par page) ; un écart de 0.25 relève du bruit du juge. Une page cassée déplace la moyenne du skill d'environ 0.3.
- n=2 par cellule, trois tâches ; la page cassée pourrait être de la malchance plutôt qu'un défaut systématique.
- Les polices ne sont pas chargées hors ligne, donc les choix de duo typographique ne sont pas visibles.
- L'étape de capture d'écran par navigateur du skill n'a pas pu s'exécuter dans le bac à sable, ce qui le pénalise probablement plus que les autres groupes.
- n = 2 par groupe et par tâche : les écarts inférieurs à environ 1 point relèvent du bruit.
- Jugement IA en aveugle : juge unique, aucun contrôle inter-évaluateurs ; les exécutions d'origine témoin/skill et les exécutions ultérieures du prompt d'une phrase ont été jugées lors de sessions distinctes (prompt d'une phrase le 2026-11-02), une dérive entre sessions est donc possible.
Sécurité
Voir security.md. Scan : 10 CRITICAL / 44 HIGH / 9 MEDIUM. Verdict : exécution sûre (bac à sable hors ligne). Un scan propre ne prouve pas qu'un skill est sûr.
En résumé
Il supprime le rendu IA générique et a produit la meilleure refonte ici, mais a coûté 3.7x tokens et, dans 1 exécution sur 6, a livré une page visiblement cassée sans s'en apercevoir ; un prompt de direction artistique d'une phrase a obtenu un meilleur score pour environ un tiers des tokens. À essayer pour des pages marketing à direction artistique où un humain vérifie le résultat, pas comme option par défaut sans surveillance.
Transcription
Journal d'exécution : design-taste-frontend (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-landing control-1: score 4.25, tokens 100863, s 169.3, vérifications 5/5, rien ouvert t1-landing control-2: score 4.0, tokens 101753, s 206.0, vérifications 5/5, rien ouvert t1-landing oneliner-1: score 4.25, tokens 279371, s 224.5, vérifications 5/5, rien ouvert t1-landing oneliner-2: score 4.5, tokens 345398, s 247.5, vérifications 5/5, rien ouvert t1-landing treatment-1: score 1.5, tokens 433869, s 267.5, vérifications 5/5, ouvert taste-skill t1-landing treatment-2: score 4.0, tokens 360647, s 199.4, vérifications 5/5, ouvert taste-skill t2-dashboard control-1: score 3.75, tokens 114229, s 178.7, vérifications 4/5, rien ouvert t2-dashboard control-2: score 3.75, tokens 117234, s 192.6, vérifications 4/5, rien ouvert t2-dashboard oneliner-1: score 4.25, tokens 411906, s 237.5, vérifications 4/5, rien ouvert
18 exécutions, 3 artefacts
Exemple de sortie
SOTA · With the skill: index.html (t1-landing, run 1, Codex)
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="theme-color" content="#163e32"> <meta name="description" content="Meet Tidepool: small-batch seaweed snacks in three big flavours. Your monthly crunch, $14 a box."> <title>Tidepool 鈥?A little sea. A lot of crunch.</title> <style> :root{--green:#163e32;--paper:#f5f3e9;--lime:#e1f184;--pink:#edb7c6;--blue:#bfd9ec;--ink:#163e32;--body:Arial,Helvetica,sans-serif;--display:'Arial Black',Arial,Helvetica,sans-serif;--gutter:clamp(22px,4vw,64px)} *{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.5 var(--body)}a{color:inherit;text-decoration:none}button,select{font:inherit}button,a,summary,select{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid currentColor;outline-offset:6px}a,button{transition:transform .2s}a:hover,button:hover{transform:translateY(-3px)}a:active,button:active{transform:translateY(1px)}::selection{background:var(--pink);color:var(--green)}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--display);font-weight:900;letter-spacing:-.055em;line-height:.98}h2{font-size:clamp(40px,5.5vw,76px)}h3{font-size:30px}p{max-width:48ch}.skip{position:absolute;top:-100px;background:var(--paper);padding:14px;z-index:10}.skip:focus{top:0}.announcement{background:var(--lime);text-align:center;padding:9px 20px;font-size:14px}.header{display:flex;align-items:center;justify-content:space-between;padding:24px var(--gutter);background:var(--green);color:var(--paper)}.logo{font-family:var(--display);font-weight:900;font-size:38px;letter-spacing:-3px;line-height:1}.logo span{display:inline-block;transform:rotate(-12deg)}nav{display:flex;align-items:center;gap:34px;font-size:15px}.nav-cta{background:var(--paper);color:var(--green);padding:12px 23px;border-radius:50px}.hero{background:var(--green);color:var(--paper);padding:35px var(--gutter) 0;overflow:hidden}.hero h1{font-size:clamp(66px,10.8vw,164px);letter-spacing:-.065em;line-height:.89;position:relative;z-index:1}.hero h1 span{display:block;animation:rise .8s both}.hero h1 span:last-child{animation-delay:.1s}.hero-bottom{display:grid;grid-template-columns: .85fr 1.15fr;min-height:405px;align-items:center}.hero-copy{padding:40px 0 55px;max-width:410px}.hero-copy p{font-size:19px;line-height:1.5;margin-bottom:27px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:35px;border:0;border-radius:50px;background:var(--lime);color:var(--green);padding:17px 27px;font-weight:700;cursor:pointer}.button .arrow{font-size:24px;line-height:1}.note{display:block;font-size:14px;margin-top:13px}.hero-art{height:420px;position:relative;align-self:end}.pack{width:230px;height:315px;background:var(--lime);color:var(--green);padding:22px 18px 17px;position:absolute;display:flex;align-items:center;flex-direction:column;clip-path:polygon(0 0,100% 0,98% 4%,100% 8%,98% 96%,100% 100%,0 100%,2% 95%,0 7%,2% 3%);isolation:isolate}.pack:before,.pack:after{content:'';position:absolute;left [... excerpt: first 3200 of 17282 characters]