Communitygithub.com

ShortArrow/interface-design

Prendre des décisions sur l'apparence et le comportement d'un écran, en s'appuyant sur des mesures et des normes publiées plutôt que sur des préférences subjectives.

Qu'est-ce que interface-design ?

Cette compétence transforme les questions d'interface utilisateur — couleur, disposition, taille, composants — en décisions fondées sur des mesures et des normes publiées, avant de solliciter l'avis de l'utilisateur. Elle applique le WCAG 2.2 (contraste, taille des cibles, reflow, focus), les systèmes de design (espacement, composants), axe-core (~57% des critères WCAG) et Lighthouse (même moteur, score pondéré). Les décisions non réglées par la mesure sont réduites à trois catégories légitimes : le public cible, une contrainte de marque, ou un compromis mesuré des deux côtés. La compétence prend en charge les navigateurs via MCP (Claude in Chrome) et fonctionne avec les plugins `own-the-call`, `reader-map`, `measured-claims` et `web-perf`. Elle produit un rapport avec les mesures et les captures d'écran à des fenêtres spécifiées.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ShortArrow/skills/tree/HEAD/skills/interface-design

Demander à votre IA préférée

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

Documentation

Conception d'interface

Une question à propos d'un écran n'est pas une question de goût. Le contraste a un ratio, une cible a une taille, un reflow a une largeur à laquelle il doit encore fonctionner, et une disposition a un ordre d'information qui découle de ce que le lecteur fait en premier. Ces éléments sont décidés par la mesure et par des normes publiées, donc les confier à l'utilisateur comme « que préférez-vous » gaspille son attention sur un travail qui était celui de l'agent.

Ce qui reste après la mesure est une vraie question, et cette compétence existe pour réduire ce reste et y attacher les preuves. own-the-call régit la manière dont elle est ensuite posée.

Les moments que cela remplace

Sur le point de…Au lieu de cela…
demander quelle couleur, taille, espacement ou placement l'utilisateur préfèremesurer par rapport à la norme ci-dessous ; ne demander que ce qu'aucun seuil ne tranche
qualifier un choix visuel de subjectifnommer le critère qu'il échoue ou réussit — contraste, taille de cible, largeur de reflow, visibilité du focus, ordre d'information
dire « ça a l'air bien »l'ouvrir, prendre une capture d'écran et dire ce qui a été mesuré à quelle fenêtre
dimensionner un contrôle à l'œil24×24 px CSS est le seuil WCAG AA ; un système de design peut en fixer un plus strict (Material : 48dp)
choisir des couleurs d'une palette par apparencecalculer le ratio : 4,5:1 pour le texte courant, 3:1 pour les grands textes et les éléments non textuels
livrer une disposition vérifiée à une seule taille de fenêtrevérifier à 320 px de large et 256 px de haut, où le reflow doit encore fonctionner
lire un rapport axe vert comme accessibleaxe trouve environ 57 % ; le reste concerne le clavier, l'ordre du focus et le sens
concevoir un composant qu'un système de design définit déjàprendre le leur et dire lequel
demander comment dessiner un diagrammedécider à partir de ce que le lecteur trace d'abord, puis montrer un rendu

Décider à partir de la norme avant de demander

Quatre organismes répondent à la majeure partie des questions, et ils ne sont pas toujours d'accord — là où ils diffèrent, c'est le chiffre le plus strict qu'il faut respecter, car le respecter satisfait les deux.

WCAG 2.2 est le plancher, et il est normatif : une recommandation du W3C, et ISO/IEC 40500. Cible : Niveau AA ; le Niveau AAA n'est pas atteignable pour tout contenu et le W3C le dit.

CritèreNiveauSeuil
1.4.3 Contraste (Minimum)AA4,5:1 pour le texte ; 3:1 pour les grands textes (≥18 pt, ou 14 pt en gras)
1.4.11 Contraste des éléments non textuelsAA3:1 par rapport aux couleurs adjacentes
1.4.4 Redimensionnement du texteAAutilisable à 200 %
1.4.10 ReflowAApas de défilement sur deux axes à 320 px de large ou 256 px de haut
1.4.12 Espacement du texteAAinterligne ≥1,5×, paragraphe ≥2×, lettre ≥0,12×, mot ≥0,16× la taille de police
2.4.7 Focus visibleAAun mode où l'indicateur de focus est visible
2.4.11 Focus non masquéAAle contrôle ciblé n'est pas complètement caché
2.5.8 Taille de la cible (Minimum)AA24×24 px CSS, ou espacement de 24 px
2.4.13 Apparence du focusAAApérimètre ≥2 px, contraste 3:1 entre l'état ciblé et non ciblé
2.5.5 Taille de la cible (Amélioré)AAA44×44 px CSS

Un système de design tranche ce que WCAG laisse ouvert : échelle d'espacement, échelle typographique, anatomie des composants, rôles de couleur. Prendre son composant n'est pas un raccourci, c'est la décision — et elle apporte le travail d'accessibilité déjà effectué. Material Design 3 fixe des cibles tactiles de 48×48 dp, plus strictes que les 24 px du WCAG, et demande que la couleur soit choisie via des rôles (primary, on-primary, surface) plutôt que par des hex fixes, ainsi le theming et le mode sombre suivent sans seconde décision. Pour les travaux publics japonais, le système de design de l'Agence numérique (design.digital.go.jp, β版 comme standard vivant) propose des composants, des directives et des tokens, avec les tokens et exemples de composants sur GitHub sous licence MIT.

axe-core mesure ce qui peut être mesuré, et énonce sa propre limite : environ 57 % des problèmes WCAG en moyenne. Un rapport vert n'est donc une preuve que pour 57 % de la question, et dire « axe passe » sans ce nombre surestime la portée — measured-claims s'applique à ce chiffre comme à tout autre.

npx @axe-core/cli http://localhost:5173 --tags wcag2a,wcag2aa,wcag22aa
npx lighthouse http://localhost:5173 --only-categories=accessibility --quiet

Le score d'accessibilité de Lighthouse est le même moteur habillé d'un nombre. Ses audits sont des règles d'axe-core — chacune renvoie à la page de règle de Deque — donc les 57 % sont hérités, et le score ajoute deux façons d'être mal interprété. C'est une moyenne pondérée, poids de 3 à 10 selon l'évaluation d'impact utilisateur d'axe, et les audits manuels et de bonnes pratiques en sont complètement exclus, donc l'arithmétique ne peut pas atteindre la partie qu'une personne doit vérifier. Chaque audit est aussi binaire : un seul bouton non étiqueté fait échouer « Les boutons ont un nom accessible », sans demi-mesure. Donc 100 signifie « le sous-ensemble automatique pondéré a réussi », et le rapport honnête d'un score parfait dit cela, pas « accessible ». Utilisez-le pour la liste classée de ce qu'il faut corriger ; utilisez le JSON d'axe lorsque le constat importe plus que le classement. Les catégories de performance de Lighthouse relèvent de web-perf, pas de cette compétence.

Ce qu'aucun des deux ne voit : si l'ordre du focus suit l'ordre de lecture, si un étiquette nomme ce qu'elle étiquette, si le sens d'une icône survit sans couleur, si l'ordre d'information de la disposition correspond à la tâche. Ceux-ci sont lus par une personne, et cette personne peut être l'agent.

Regarder, puis dire ce qui a été vu

Une affirmation sur une interface sans observation derrière elle est la rumeur de measured-claims dans un autre médium. L'hôte dispose d'un navigateur, donc l'observation est disponible :

mcp__claude-in-chrome__navigate      → la page
mcp__claude-in-chrome__read_page     → structure, titres, étiquettes
mcp__claude-in-chrome__computer      → capture d'écran à une fenêtre spécifiée
mcp__claude-in-chrome__resize_window → 320 px, pour tester le reflow

Signalez la fenêtre avec le constat. « Ça a l'air bien » ne nomme aucune largeur ni aucune mesure ; « à 320 px, la deuxième colonne passe sous la première et rien ne défile latéralement » est une lecture que quelqu'un peut vérifier. L'ordre du clavier est parcouru avec Tab et signalé comme la séquence observée, car c'est la moitié qu'axe ne couvre pas.

L'ordre d'information est dérivé, pas choisi

Où va quelque chose découle de ce que le lecteur en fait, ce qui est la question de reader-map appliquée à un écran : qui arrive, ce qu'ils sont venus faire, ce dont ils ont besoin en premier. Un contrôle utilisé une fois lors de la configuration et un contrôle utilisé chaque minute ne sont pas en concurrence pour la même place.

Donc « où cela devrait-il aller » trouve sa réponse en nommant la tâche, pas en listant trois positions. Quand deux tâches sont réellement en concurrence et qu'aucune ne domine, c'est le reste qui mérite d'être demandé — et il est demandé avec les tâches concurrentes nommées, pas comme un choix de coins.

Il en va de même pour un diagramme. Ce que le lecteur trace en premier décide de la direction du flux ; la forme suit le tracé, et un seul rendu est présenté plutôt que trois décrits.

Ce qui revient véritablement à l'utilisateur

Trois choses survivent à la mesure :

  • Quel public ou marché l'interface sert, quand ce n'est pas encore fixé — cela détermine quelle norme s'applique (regulated-claims pour un marché réglementé).
  • Une contrainte de marque — une couleur, police ou marque imposée. La contrainte est la leur ; si elle respecte 4,5:1 est toujours mesuré, et une couleur de marque qui échoue est signalée avec le ratio et la variante passante la plus proche.
  • Un compromis déjà mesuré des deux côtés, où les preuves ne tranchent pas : densité contre lisibilité d'aperçu, un écran contre deux. Demandé avec les deux mesures attachées, c'est une question que own-the-call admet.

Tout le reste — contraste, espacement, taille de cible, focus, reflow, choix de composant, forme de diagramme, placement qui suit une tâche — est décidé et signalé.

Liste de vérification

  • Contraste calculé, pas évalué à l'œil : 4,5:1 pour le texte, 3:1 pour les grands textes et les éléments non textuels
  • Cibles interactives ≥24×24 px CSS, ou le chiffre plus strict du système de design
  • Vérifié à 320 px de large et 256 px de haut sans défilement sur deux axes
  • Focus visible sur chaque élément interactif, et non masqué
  • Ordre de tabulation parcouru et signalé tel qu'observé
  • Composants pris du système de design là où il en définit un, et nommés
  • axe ou Lighthouse exécuté, et la limite de 57 % mentionnée plutôt qu'impliquée
  • Un score d'accessibilité Lighthouse signalé comme le sous-ensemble automatique pondéré, jamais comme « accessible »
  • Chaque affirmation sur l'apparence est accompagnée de la fenêtre à laquelle elle a été observée
  • Les questions laissées à l'utilisateur sont des trois types ci-dessus, avec les preuves attachées

Comment cela se connecte

own-the-call façonne la question qui survit à cette compétence ; la plupart des questions sur un écran ne devraient pas l'atteindre. reader-map fournit l'ordre des tâches auquel cette compétence applique le placement. measured-claims régit tous les ratios et pourcentages ici, les 57 % inclus. document-structure et cognitive-rhythm possèdent la prose sur une page ; cette compétence possède le cadre autour d'elle. any-screenshot est la manière de capturer un écran en dehors d'un navigateur. La vitesse de chargement et d'interaction, les Core Web Vitals et le score de performance de Lighthouse appartiennent à web-perf dans le plugin cloudflare ; cette compétence ne prend que la catégorie d'accessibilité de Lighthouse.

Sources

  • W3C, « Web Content Accessibility Guidelines (WCAG) 2.2 », Recommandation W3C datée du 12 décembre 2024 (www.w3.org/TR/WCAG22/) : les quatre principes, les niveaux A/AA/AAA, et la suppression du 4.1.1 Parsing comme obsolète.
  • W3C, « How to Meet WCAG 2.2 (Quick Reference) » (www.w3.org/WAI/WCAG22/quickref/) : tous les seuils du tableau ci-dessus, lus au Niveau AAA pour inclure 2.4.13 et 2.5.5.
  • Deque Labs, README d'axe-core (github.com/dequelabs/axe-core) : MPL-2.0 ; règles mappées à WCAG 2.0, 2.1 et 2.2 aux niveaux A, AA et AAA ; « vous pouvez trouver en moyenne 57 % des problèmes WCAG automatiquement ».
  • Chrome for Developers, « Accessibilité de la notation dans Lighthouse » (developer.chrome.com/docs/lighthouse/accessibility/scoring) : le score est une moyenne pondérée, poids de 3 à 10, « basée sur les évaluations d'impact utilisateur d'axe », avec chaque audit renvoyant à une page de règle d'axe-core 4.11 de Deque University ; chaque audit est binaire ; les audits manuels et à faible impact sont exclus du score. La page ne dit pas elle-même qu'un score parfait signifie que la page est accessible — ni le contraire, donc l'avertissement ci-dessus est propre à cette compétence.
  • Système de design de l'Agence numérique (design.digital.go.jp) : v2.18.2, étiqueté β版 dans le sens d'un standard vivant. Le site n'indique aucun niveau WCAG ni aucune cible JIS X 8341-3. digital-go-jp/design-tokens, design-system-example-components-react et -html sur GitHub sont sous licence MIT.
  • La cible tactile 48×48 dp de Material Design 3 et ses directives sur les rôles de couleur sont extraites de sources secondaires citant m3.material.io, pas de ce site : ses pages sont rendues par script et n'ont pas pu être lues ici. Le chiffre de 48 dp est une recommandation de conception, pas un minimum imposé par la plateforme.

L'affirmation que ces sources ne sont pas d'accord, et que le chiffre le plus strict est celui à respecter, est la lecture du propriétaire de ce catalogue plutôt que l'une de leurs positions publiées.

Aucune des commandes ci-dessus n'a été exécutée lors de la rédaction de cette compétence : les deux téléchargent un paquet lors de la première utilisation, et le bac à sable ici refuse d'exécuter du code fraîchement téléchargé. Les drapeaux proviennent de la documentation de chaque outil plutôt que d'une exécution, donc la première utilisation dans un projet est aussi le premier test de l'invocation.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

ShortArrow/library-design

Designing a library — a published package, or an in-app module from the moment it has a second consumer. The implementation stays editable forever, while the public API, the dependency set, the performance characteristics and every observable behaviour freeze at first external use (Hyrum's law). Five duties to the caller: take no control, add no hidden cost (zero-cost abstraction as the bar), hold no hidden state, hide no failure, block no escape. Use when designing or reviewing a public API, when extracting shared code into a module, when asked to "make this reusable", when a signature-compatible change alters an observable behaviour, and when an application is being shaped around a framework's types and lifecycle.

ShortArrow/test-design

Deriving test cases, triggered by the moments that produce weak ones: about to write a test list that is the happy path restated, about to derive tests by reading the implementation they check, about to test the bound the specification names and not the other one, about to enumerate the roles the specification lists and skip the caller it forgot, about to vary one condition at a time from the happy path, about to draw a state or decision table without tying each row to a test, about to write an expected result with "or" in it, about to skip the error paths as unlikely, about to leave a path unimplemented and untested, or about to grade a suite as adequate by reading it. A test derived from the implementation passes by construction; coverage counts classes, not tests. Use when writing a test plan or list, when a use case is the specification in hand, when adding tests to existing code, when reviewing a suite for gaps, and when a suite is all green and proves little.

Skills associés