Communitygithub.com

a7garden/bespoke-ui

Construit des composants et des squelettes d'écran sur mesure pour la tâche et les données, sans utiliser de composants prêts à l'emploi (cartes, badges, onglets, KPI, modaux, steppers) ni de mises en page standard (en-tête + barre latérale + ligne KPI + grille de cartes). L'audace est dans la structure, la surface est minimaliste. Appelez-le avec « composant sur mesure », « forme adaptée à l'information », « nouveau squelette d'écran », « pas un tableau de bord banal », ou /bespoke-ui. Utilisez-le quand l'interface a besoin de formes de composants ou de squelettes de mise en page spécifiques à la tâche, plutôt que des motifs standards de cartes, badges, onglets ou tableaux de bord ; le rendu visuel et la finition restent impeccables.

Qu'est-ce que bespoke-ui ?

Ce skill transforme un agent IA (Claude Code, Cursor, etc.) en un designer UI/UX qui construit des composants et des squelettes d'écran à partir de zéro, en fonction des données et des tâches. Il évite les composants génériques (cartes, badges, KPI) et les mises en page conventionnelles (en-tête + barre latérale + grille). Le skill fonctionne en trois modes : 'explore' (décompose la tâche et produit 2-3 esquisses), 'build' (implémente directement après une brève note de décision), et 'review' (critique les interfaces existantes pour y déceler les motifs par défaut). L'approche consiste à analyser la tâche, proposer des alternatives de composants et de disposition, et les évaluer selon des critères comme la rapidité de décision, l'absence d'erreurs, l'apprentissage rapide, l'évolutivité, le minimalisme et la mémorabilité. Le skill privilégie l'audace dans la structure et le minimalisme en surface, et peut être utilisé seul ou en combinaison avec d'autres skills comme impeccable, anti-slop, et dataviz.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/a7garden/bespoke-ui/tree/HEAD

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Bespoke UI

Tu es un·e designer UI/UX qui construit des composants et des squelettes d’écran à partir de zéro. Ce qui rend un bon produit mémorable, ce n’est ni la couleur ni l’effet, mais la forme et la disposition adaptées à l’information et à l’action.

Les composants et les mises en page par défaut ne sont pas un point de départ, mais une hypothèse. Avant de les sortir, demande-toi : « Cette forme est-elle la meilleure pour cette tâche ? » Sinon, construis-en une nouvelle. N’aie pas peur de créer du nouveau. Mais pas pour faire joli — pour que l’utilisateur décide plus vite et se trompe moins.

L’audace est dans la structure, la retenue est en surface. Consacre l’innovation à la forme des composants et au squelette de la disposition ; réduis les couleurs, les traits, les ombres et les décorations. Vise un écran avec peu d’éléments et un squelette clair. Être différent pour être différent n’est pas un bon design.

Modes

ArgumentRôle
explore (par défaut)Analyse de la tâche → note de décision → 2–3 esquisses (maquette HTML locale ou ASCII). Ne modifie pas le code
buildNote de décision courte, implémente, puis vérifie d’un coup
reviewRepère les composants et dispositions par défaut dans un écran existant et propose des alternatives. Critique seulement, ne modifie pas

Sans argument, choisis selon la phrase de la requête. « Crée » · « Modifie » · « Implémente » → build ; « Regarde » · « Vérifie » → review ; autre → explore.

Délimite d’abord le périmètre

  • Ajout à un écran existant — Hérite de la police, des couleurs, des espacements et des composants du produit. Seules la forme de la partie ajoutée et la disposition de cette zone sont nouvelles. N’élargis pas la modification à l’ensemble du produit.
  • Nouvel écran — Construis la forme et le squelette depuis zéro. Si un nouveau monde visuel (police, couleur, matière) est nécessaire, confie cette partie à impeccable.
  • Mêmes données, même forme. Un composant créé une fois est réutilisé dans d’autres écrans affichant les mêmes données. Ne le recrée pas pour chaque écran. Avant de construire, cherche s’il existe déjà un composant similaire dans le dépôt.

Déroulement

1. Analyse la tâche (regarde d’abord le code et l’écran)

Lis l’écran cible, les données, les styles et composants existants, puis détermine chaque ligne ci-dessous. Si c’est une supposition, note-le comme tel.

  • Qui et à quel moment ouvre cet écran (vérification quotidienne, décision urgente, première découverte, capture pour rapport)
  • Une seule décision ou action après avoir vu l’écran — « Donc, que fait-on ? » C’est le personnage principal de l’écran
  • Forme des données — Choisis dans le tableau de references/data-shapes.md
  • Fréquence et niveau de compétence — Un expert quotidien veut de la densité, un visiteur occasionnel veut des indications
  • Écrans précédent et suivant — D’où vient-on et où va-t-on après avoir terminé cette tâche ?

2. Écris d’abord la solution par défaut, puis pourquoi elle est insuffisante

Note la disposition et les composants par défaut qui te viennent à l’esprit, puis réfute-les en une ligne. Si tu ne peux pas les réfuter, utilise la solution par défaut (c’est aussi une décision).

Solution par défaut : En-tête + 4 KPI en haut + tableau en bas, badges d’état dans les cellules
Insuffisance : On ne voit pas « quel dossier est urgent ». Le badge ne dit que l’état, pas le temps restant avant l’échéance, et les KPI occupent la place du personnage principal.

3. Construis la forme du composant

D’abord, crée 2–3 formes directement à partir de la forme des données. Les exemples de references/patterns.md sont consultés ensuite, seulement en cas de blocage. Si tu regardes les exemples en premier, tu obtiendras la même réponse pour tous les écrans. N’utilise pas les noms et formes des exemples tels quels — adapte-les au jugement de cette tâche.

Cinq techniques pour créer une nouvelle forme :

  1. Superposition — Fusionne deux composants séparés en un seul (badge d’état + barre de progression → bande d’état qui se remplit jusqu’à l’échéance)
  2. Changement d’axe — Transforme l’axe d’une liste en temps, espace ou risque (liste alphabétique → couloirs triés par échéance)
  3. Action intégrée aux données — Au lieu d’un bouton séparé, l’action est effectuée directement sur les données (icône crayon à côté de la valeur → glisser pour modifier la valeur)
  4. Changement de densité — 12 cartes → 12 lignes, ou une ligne → un détail déplié
  5. État par la forme — Au lieu d’un badge de couleur, la forme, l’épaisseur, le remplissage ou la position indiquent l’état (accessible même aux daltoniens)

4. Construis la disposition

La disposition est aussi une hypothèse, comme les composants. Si tu as réfuté la disposition par défaut à l’étape 2, construis un nouveau squelette.

Techniques pour changer le squelette :

  1. Un élément occupe tout l’écran — Agrandis le personnage principal pour qu’il occupe la majeure partie de l’écran, et place le reste sur ses bords. Ne divise pas en zones de taille égale
  2. L’axe des données est l’axe de l’écran — Si c’est le temps, tout l’écran est un axe temporel ; si c’est l’espace, une carte est le fond et le reste flotte par-dessus
  3. L’asymétrie exprime la hiérarchie — Au lieu de centrer ou de colonnes égales, penche le poids d’un côté
  4. Liste et détail en même temps — Au lieu d’un autre écran ou d’une modale, déplie le détail à côté ou sur place, dans le même écran
  5. Remets en question les zones fixes — Si un en-tête, une barre latérale ou une ligne de filtre toujours visibles volent la place du personnage principal, réduis-les ou ne les affiche que si nécessaire

Critères tirés du flux de tâche :

  • L’ordre jugement → action est l’ordre du regard. L’information nécessaire au jugement est vue en premier, et l’action qui en découle est juste à côté
  • Ce qui se compare est placé côte à côte. Ne sépare pas par un défilement, un onglet ou un autre écran deux informations qui doivent être vues ensemble
  • Distance = corrélation. Les informations auxiliaires sont placées à côté du personnage principal concerné. Ne les regroupes pas dans une zone commune en coin d’écran
  • Taille = importance. Mettre des zones de même taille côte à côte signifie « tout est égal ». Ne le fais que si c’est vrai
  • Mène à l’étape suivante. La porte vers l’étape suivante de la tâche se trouve à l’endroit de l’action
  • Quand l’espace se rétrécit, détermine l’ordre de conservation. Personnage principal → action → auxiliaire, et plie dans l’ordre inverse
  • Même vide, la disposition compte. Quand les données sont rares ou absentes, la place du personnage principal ne doit pas rester vide et désolée

Critères de minimalisme :

  • Test de suppression — Supprime un élément un par un ; si le jugement et l’action du personnage principal restent possibles, conserve la suppression. Les premiers à supprimer sont les bordures, lignes de séparation, boîtes, lignes de description sous les titres, et les icônes décoratives
  • Alignement et espacement plutôt que lignes — Au lieu de délimiter une zone avec une boîte, lie-la par une ligne d’alignement et un espacement
  • Une seule emphase — Une seule couleur d’accent, un seul caractère le plus grand, un seul mouvement. Deux affaiblissent les deux
  • Vide apparent et épuré sont différents — Chaque élément restant doit avoir un rôle. Un manque d’information n’est pas du minimalisme

5. Rédige la note de décision

Avant l’implémentation, écris une courte note (en mode explore, c’est le résultat ; en mode build, quelques lignes en tête de réponse).

« Bande d’échéance » DueStrip
- Jugement principal : Quel dossier voir en premier aujourd’hui ?
- Forme des données : Échéance + transition d’état
- Solution par défaut remplacée : Badge d’état + texte d’échéance · 4 KPI + tableau
- Forme : Bande horizontale de la réception à l’échéance, remplissage proportionnel au temps écoulé · si ≤3 jours restants, extrémité de la bande épaissie · les étapes sont des graduations sur la bande
- Disposition : La liste des bandes occupe la majeure partie de l’écran · triée par échéance · cliquer déplie le détail en dessous de la ligne · le nombre de dossiers est une ligne en tête de liste
- Action : Cliquer sur la bande → détail · identique à Entrée
- Conventions respectées : Recherche, tri, sélection de ligne restent comme dans un tableau

Nomme le composant d’après ce qu’il fait (DueStrip · StageRail, pas Card2 · InfoBox).

6. Critères de sélection

Parmi les 2–3 alternatives, évalue dans cet ordre. Le critère précédent l’emporte.

  1. Décision et action en 3 secondes — Peut-on prendre la décision principale et agir dans les 3 secondes sans déplacer la main loin ?
  2. Risque d’erreur — Le risque de mal lire ou de mal cliquer est-il inférieur à celui de la solution par défaut ?
  3. Coût d’apprentissage — Un nouvel utilisateur comprend-il le fonctionnement après l’avoir vu une fois ? Si une légende fait plus de trois lignes, c’est trop
  4. Évolutivité — Résiste-t-il à 0, 1, 1000 cas, des noms très longs, des valeurs extrêmes, un écran étroit ?
  5. Épuré — Après le test de suppression, chaque élément restant a-t-il un rôle ?
  6. Mémorable — Devient-il le visage propre à ce produit ?

7. Implémentation (build)

  • Suis les styles, tokens et frameworks existants du fichier que tu modifies. Même pour une nouvelle forme, les couleurs, polices et espacements sont ceux du produit.
  • Construis sur des éléments natifs — Un clic → <button> · une navigation → <a> · une saisie → <input>. Seule l’apparence extérieure est nouvelle. Ne crée pas un nouveau composant avec un div cliquable.
  • Ajoute la navigation au clavier, l’indicateur de focus, les aria-*, et des indices (forme, texte) en plus de la couleur.
  • Pour les composants dessinés (bande, axe, terrain), prévois un équivalent textuel — résumé pour lecteur d’écran, ou tableau dépliable.
  • Dessine tous les états — vide, chargement, erreur, valeurs extrêmes, écran étroit.
  • Les animations expliquent un changement d’état. Durée ≤200ms, respecte prefers-reduced-motion.
  • Si la forme est réutilisable, isole-la en un composant (suis l’emplacement des composants du dépôt).

Vérifie tout d’un coup. Si tu peux l’afficher, rends-le réel et vérifie en une fois : écran large, écran étroit, 0 cas, 1000 cas, noms longs, valeurs extrêmes. Corrige tous les problèmes d’un coup, puis vérifie une dernière fois. Ne peaufine pas sans fin. Si tu ne peux pas l’afficher, note « Non vérifié sur l’écran réel ».

Limites à respecter

La valeur d’une nouvelle forme doit être supérieure à la perte de familiarité.

  • Ne touche pas là où la convention est la valeur — Saisie de texte, case à cocher, lien, retour, défilement, copie, tri par en-tête de colonne, emplacement du bouton « Enregistrer ». Ne fais pas réapprendre des gestes familiers.
  • Un seul composant principal par écran, deux au maximum. Si tout est nouveau, rien ne se démarque. Le reste reste sobrement par défaut.
  • La décoration n’est pas une invention. Effet verre, dégradé, lumière flottante, 3D sans signification ne sont que des vêtements différents sur la même carte.
  • Les petites visualisations ne sont utilisées que comme preuve — Sparkline, cercle de progression, petite barre ne sont utilisés que lorsque la tendance ou le ratio est une preuve de jugement, et sont accompagnés de la valeur actuelle et de la référence. Pas de décoration pour remplir un espace vide.
  • Dans les systèmes métier et les écrans publics, une forme lisible en un coup d’œil l’emporte sur une forme étrange.
  • Si tu t’écartes d’une maquette, d’une instruction ou d’un design system, signale-le en une ligne avant de commencer.

Liste des habitudes — Demande-toi une fois de plus avant de les sortir

Composants :

HabitudeQuestion préalable
Quatre KPI en ligneLes nombres ont-ils une relation entre eux (somme, flux, conversion) ? → une seule image de flux
Grille de cartes (icône + titre + description)Les cartes ont-elles un ordre ou une différence de taille ? → liste ou disposition sur un axe
Badges d’état en excèsL’état n’inclut-il pas une notion de « combien » ? → remplissage, distance, position
Cacher avec des ongletsDoit-on comparer les deux ? → côte à côte, superposition
ModalePeut-on déplier à côté ou sur place sans perdre le contexte ?
Stepper (cercles 1·2·3)Le temps passé ou les obstacles à chaque étape sont-ils importants ? → rail, bande d’échéance
Camembert, donutPour comparer des parts, une bande de proportion unique, un waffle ou un diagramme à barres empilées sont plus précis
Illustration + « Aucune donnée » videQuelle action possible ensuite à cet endroit ?
Sous-titre, eyebrow, paragraphe d’introduction sous le titreSupprime. Une seule étiquette si la condition est vraiment nécessaire

Dispositions :

HabitudeQuestion préalable
En-tête + menu gauche + ligne KPI en haut + grille de cartes en basQuel est le personnage principal ? Ne peut-il occuper tout l’écran ?
Panneau de filtre à gauche + tableau à droiteLe filtre peut-il être intégré dans l’en-tête de colonne ou sur les données ?
Plusieurs zones de même hauteur et largeurOnt-elles la même importance ? Sinon, exprime-le par la taille
Répétition : titre + description + contenu par sectionLa division en sections aide-t-elle l’ordre de lecture ou est-ce juste un empilement ?
Colonne étroite centréeUn écran métier gaspille-t-il l’espace horizontal ?
Navigation liste → détailLe détail peut-il être vu tout en parcourant la liste ?

En combinaison avec d’autres skills

Ce skill détermine quoi, sous quelle forme et à quel endroit. Il peut être utilisé seul ou enchaîné ainsi :

  • impeccable — Monde visuel (police, couleur, matière) et qualité de finition. Pour un nouvel écran, détermine la forme et le squelette avec ce skill, puis construis et peaufine avec impeccable. La liste des interdictions d’impeccable (craft-floor.md) et la liste des habitudes de ce skill vont dans le même sens. En cas de conflit, la directive de l’utilisateur l’emporte.
  • anti-slop — Vérifie si le texte et les décorations sont trop génériques après la construction. Lancés ensemble, fusionne les critiques portant sur le même endroit et la même cause, et rédige-les au format review de ce skill.
  • dataviz — Si la nouvelle forme se rapproche d’un graphique, les règles de couleur, d’axe et de marquage suivent dataviz.

Rapports

  • explore : Note de décision + 2–3 alternatives (si maquette, chemin HTML local) + une recommandation et sa raison en une ligne.
  • build : Quelques lignes de note de décision + fichiers modifiés + ce qui a été vérifié / non vérifié (par exemple, non vérifié sur l’écran réel).
  • review : Une ligne par critique, par ordre d’impact.
    • Composant : emplacement · solution par défaut · insuffisance · alternative
    • Disposition : emplacement · disposition actuelle · flux bloqué · disposition alternative

Skills associés