Tous les skills

emil-design-eng (emilkowalski/skills)

Applique les principes d'Emil Kowalski pour le soin de l'interface, le design des composants et les choix d'animation.

emil-design-eng : ajoute le retour au clic et des courbes d'accélération personnalisées que Codex seul n'écrit jamais (0/6 à 6/6), mais une version en une phrase en obtient presque tout

RecommandéSûr

Codex CLI · gpt-6-astra

26.2 / 30

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

Recommandé : total 26.2/30 d'au moins 22, qualité de sortie 4.8 d'au moins 3.5 et gain +1.42 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.4
Qualité de sortie
4.8
Coût en tokens et en temps
4.0
Installation et portabilité
4.0
Sécurité
5.0

Revue de sécurité

Sûr

Scan 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 emilkowalski/skills --skill emil-design-eng

Source

Commit épinglé: a81dbca07f2217b7103e510c0f13f8d5b017afc9

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

  • Fait passer le score moyen de 3.33 à 4.75 par rapport à sans skill (+1.42).
  • Le skill a été détecté sans être nommé : son fichier a été lu dans 6/6 exécutions avec skill.
  • Qualité absolue élevée avec le skill : 4.75 sur 5.

Points faibles

  • Réserve de test : la checklist de mouvement est basée sur des règles et recoupe en partie les règles du skill lui-même ; les captures statiques ne permettaient pas de distinguer les groupes.
  • 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 briefs que le test frontend-design (une page d'accueil Tidepool, un tableau de bord de qualité de l'eau, une refonte de page d'accueil de salle d'escalade), écrits sous forme de fichiers HTML autonomes. Les prompts ne mentionnent ni l'animation ni le skill ; le groupe avec skill a simplement le skill installé.

Comparaison à trois bras

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

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

Divulgation : la checklist de mouvement est basée sur des règles et recoupe en partie les règles du skill lui-même ; les captures statiques ne permettaient pas de distinguer les groupes.

Verdict : Recommandé (26.2 / 30). Source : emilkowalski/skills, skills/emil-design-eng, épinglé au commit a81dbca. Installation : npx skills@latest add emilkowalski/skills --skill emil-design-eng. Licence : MIT (LICENSE du dépôt).

Ce que c'est

Le skill emil-design-eng d'emilkowalski/skills : les règles d'ingénierie de design d'Emil Kowalski pour le fini des interfaces, environ 4,000 mots dans un seul SKILL.md. Il couvre le moment où il faut animer (ou non), les courbes ease-out personnalisées au lieu de celles par défaut, des durées de 150-300 ms, l'animation de transform et opacity uniquement, le retour au press (scale(0.97) sur :active), l'interdiction d'animer depuis scale(0), le stagger, le survol conditionné par (hover: hover), la réduction des animations et des détails invisibles comme les cibles de clic. Aucun script.

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 briefs que le test frontend-design (une page de destination Tidepool, un tableau de bord de qualité de l'eau, une refonte de la page d'accueil d'une salle d'escalade), rédigés sous forme de fichiers HTML autonomes uniques. Les prompts ne mentionnent ni l'animation ni le skill ; le groupe avec skill a simplement le skill installé.

  1. 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…
  2. 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…
  3. 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…

La notation est programmatique (tests cachés / détection de problèmes implantés / vérifications de contraintes / rendu + OCR le cas échéant), de 0 à 5 par exécution. Aucun juge LLM n'a décidé d'un seul score. Comme ce skill porte sur le mouvement et des détails d'interaction qu'une capture d'écran ne peut pas montrer, le score est une liste de contrôle basée sur des règles appliquée au CSS généré (10 vérifications : retour au press sur :active, cubic-bezier personnalisé, pas de ease-in/linear/ease par défaut, pas de transition: all, seuls transform/opacity/couleur animés, durées <= 300 ms, réduction des animations, stagger, pas de scale(0), survol conditionné par (hover: hover)), de 0 à 5 par exécution. Cela correspond étroitement aux propres règles du skill, donc cela mesure « le skill a-t-il été suivi », et non « la page est-elle meilleure ».

Résultats

Le prompt d'une phrase donné au troisième groupe : "Sublimez comme un ingénieur de design : courbes d'accélération personnalisées (ease-out pour les entrées, jamais celle par défaut ni ease-in), durées de 150-300 ms, animation de transform et opacity uniquement, retour au press comme scale(0.97) sur :active, jamais d'animation depuis scale(0), entrées en stagger, respect de prefers-reduced-motion, et soignez les détails invisibles (états hover, active et focus, cibles de clic de 44 px)."

TâcheScore sans skillPrompt d'une phraseAvec le skillTokens sans skillTokens prompt d'une phraseTokens avec skillSkill lu
t1-landing3.254.55.089k103k130k2/2
t2-dashboard3.54.54.25202k145k135k2/2
t3-redesign3.254.55.0106k133k181k2/2

Score moyen : 3.33 sans le skill contre 4.75 avec (delta +1.42). Tokens par exécution : 133k contre 149k (1.12x) ; temps 178s contre 163s. Groupe prompt d'une phrase : 4.5 (gain du skill par rapport au prompt d'une phrase : +0.25 ; gain du prompt d'une phrase par rapport à l'absence de skill : +1.17) ; 127k tokens par exécution pour le prompt d'une phrase, donc le skill coûte 1.17x le prompt d'une phrase.

Ce qui s'est passé

  • Codex seul n'écrit jamais de retour au press ni de courbe d'accélération personnalisée : 0/6 pages du groupe témoin ont une règle de scale sur :active ou un cubic-bezier, contre 6/6 pour le groupe prompt d'une phrase et 6/6 (press) et 5/6 (courbe) avec le skill. Score 3.33 témoin, 4.50 prompt d'une phrase, 4.75 skill.
  • La seule règle que le prompt d'une phrase ne portait pas, le conditionnement des styles de survol par @media (hover: hover), a été suivie par 5/6 pages avec skill et 0/12 des autres pages. C'est toute la marge du skill sur la phrase (+0.25).
  • De bonnes habitudes étaient déjà répandues partout : pas de transition: all, seuls transform/opacity/couleur animés, prise en charge de la réduction des animations, pas de scale(0). Les groupes témoins réussissaient ces points 6/6, donc le skill ajoute les règles de finition spécifiques, pas les bases.
  • À l'aveugle (captures d'écran bureau, mélangées), les 18 pages sont soignées et aucune n'est cassée ; la qualité de design statique des trois groupes est indiscernable. Le skill change un comportement que l'on ressent, pas ce qu'une capture d'écran montre.
  • Coût : 149k tokens par exécution contre 133k (1.12x) et 127k pour le groupe prompt d'une phrase, le surcoût de skill le plus faible que nous ayons mesuré parmi les skills de design.

Scores par dimension

DimensionScorePourquoi
1_output_quality4.75

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

2_lift_vs_no_skill3.42

+1.42 point contre 3.33 sans le skill (n=2 par tâche ; moins d'environ 1 point relève du bruit).

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

De la prose simple avec des extraits CSS/React ; suppose un projet d'interface web ; frontmatter valide avec formulation de déclenchement.

5_efficiency4

1.12x tokens (149k contre 133k par exécution) et 0.92x temps (163s contre 178s).

6_safety_hygiene5Un seul fichier Markdown, aucun script, scanner propre, MIT.

Limites de ce test

  • Les règles de mouvement sont vérifiées à partir du texte CSS, pas en observant la page ; une transition peut exister et malgré tout paraître mauvaise.
  • La liste de contrôle est dérivée des propres règles du skill, et le prompt d'une phrase énonce la plupart d'entre elles ; le groupe prompt d'une phrase constitue donc une borne haute pour un prompt court.
  • Seulement trois briefs de pages statiques ; les composants interactifs (menus déroulants, toasts, tiroirs), auxquels le skill consacre le plus de mots, n'ont pas été demandés.
  • n = 2 par groupe et par tâche : les écarts inférieurs à environ 1 point relèvent du bruit.
  • La notation basée sur des règles mesure ce que les vérifications peuvent voir ; elle ne juge ni le goût ni si le résultat est le meilleur possible.

Sécurité

Voir security.md. Scan : 0 CRITICAL / 0 HIGH / 0 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é

Si vous voulez des pages qui ont un retour au press, des courbes ease-out et un survol conditionné sans les demander, le skill le fournit pour presque aucun coût en tokens. Une phrase qui énumère les mêmes règles en couvre 94 %, donc la valeur du skill est de vous dispenser de connaître les règles.

Transcription

Journal d'exécution : emil-design-eng (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 3.0, tokens 87031, s 180.3, vérifications 5/5, rien ouvert
t1-landing control-2: score 3.5, tokens 91542, s 176.7, vérifications 5/5, rien ouvert
t1-landing oneliner-1: score 4.5, tokens 124122, s 175.9, vérifications 5/5, rien ouvert
t1-landing oneliner-2: score 4.5, tokens 82163, s 143.1, vérifications 5/5, rien ouvert
t1-landing treatment-1: score 5.0, tokens 132827, s 151.2, vérifications 5/5, ouvert emil-design-eng
t1-landing treatment-2: score 5.0, tokens 128585, s 170.2, vérifications 5/5, ouvert emil-design-eng
t2-dashboard control-1: score 3.5, tokens 270891, s 204.0, vérifications 5/5, rien ouvert
t2-dashboard control-2: score 3.5, tokens 134118, s 172.6, vérifications 5/5, rien ouvert
t2-dashboard oneliner-1: score 4.5, tokens 154395, s 240.7, vérifications 5/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="#f7f3e9"> <meta name="description" content="Meet Tidepool: small-batch seaweed snacks with a big ocean crunch. Three flavours. $14 a box. A fresh delivery every month."> <title>Tidepool — A little ocean. A lot of crunch.</title> <style> :root{--paper:#f7f3e9;--ink:#183d48;--coral:#ed674c;--line:#cbd0c3;--green:#dce5bd}*{box-sizing:border-box}html{scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit}button,input{font:inherit}a,button,label,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible+span{outline:3px solid var(--coral);outline-offset:5px}.skip{position:absolute;left:16px;top:-60px;background:var(--paper);padding:12px;z-index:10}.skip:focus{top:12px}.wrap{width:min(1240px,90%);margin:auto}.topline{text-align:center;padding:10px 16px;background:var(--ink);color:var(--paper);font-size:11px;letter-spacing:1.5px;text-transform:uppercase}.nav{display:flex;align-items:center;justify-content:space-between;min-height:100px;border-bottom:1px solid var(--line);gap:24px}.logo{font-family:Georgia,serif;font-size:42px;font-weight:bold;letter-spacing:-3px;text-decoration:none}.logo sup{font:11px Arial;letter-spacing:0;vertical-align:top;display:inline-block;margin-top:12px}.links{display:flex;gap:32px;font-size:13px}.links a{text-decoration:none}.links a:hover{text-decoration:underline;text-underline-offset:5px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:35px;padding:17px 24px;border:1px solid var(--ink);background:var(--ink);color:var(--paper);border-radius:4px;text-decoration:none;font-size:14px;font-weight:bold;transition:transform 150ms cubic-bezier(.23,1,.32,1)}.button:active{transform:scale(.97)}.nav .button{padding:13px 20px}.hero{display:grid;grid-template-columns:1fr 1fr;align-items:center;padding:66px 0 58px;gap:20px}.eyebrow{font-size:11px;font-weight:bold;letter-spacing:2px;text-transform:uppercase;margin:0 0 22px}h1{font-family:Georgia,'Times New Roman',serif;font-size:clamp(58px,6.9vw,96px);line-height:.98;letter-spacing:-5px;font-weight:normal;margin:0 0 28px}h1 em{color:var(--coral);font-weight:normal}p{line-height:1.65}.intro{max-width:360px;font-size:16px;margin-bottom:28px}.small{font-size:12px}.hero-note{margin-top:14px;color:#53676a}.art{position:relative;min-height:480px;display:flex;align-items:center;justify-content:center}.orb{position:absolute;width:440px;height:440px;max-width:100%;border-radius:50%;background:#e4e8d6}.pack{width:190px;height:285px;position:relative;background:var(--green);border-radius:9px 9px 20px 20px;color:var(--ink);box-shadow:8px 18px 20px #173c4820,inset 6px 0 14px #ffffff55,inset -5px 0 10px #0000000d;text-align:center;overflow:hidden;padding:29px 10px 15px;border:1px solid #193e4825}.pack:before,.pack:after{content:'';position:absolute;left:0;right:0;height:10px;background:repeating-linear-gradient(90deg,transpa [... excerpt: first 3200 of 16222 characters]

Voir Pro