Communitygithub.com

terrain-ui

Construisez une interface web dans un style industriel sobre inspiré des conventions de menus de jeux (papier et encre, une seule couleur d'accent pour « actuel » et « principal », sélection lisible en un coup d'œil, boutons secondaires en forme de pilule, titres de chemin `//`, lignes de contour fermées et légères). Utilisez ce skill lorsqu'on vous demande une page, un portfolio, un tableau de bord ou un composant dans ce style, ou dans un look « industriel », « terminal-like », « inspiré d'Endfield » ou « 终末地风格 ».

Qu'est-ce que terrain-ui ?

Ce skill permet aux assistants IA de Claude Code, Cursor, Codex et autres de générer des interfaces web dans un style industriel unique, inspiré des conventions de menus de jeux vidéo. Il fournit un ensemble de huit règles cohérentes concernant les couleurs, la sélection, les boutons, la navigation, la typographie, les animations, les arrière-plans et les métriques. Le skill inclut des fichiers CSS (assets/terrain.css), JavaScript (assets/contours.js), des exemples et une documentation de recherche. Il définit trois types de pages (Lecture, Vitrine, Atelier) avec des comportements visuels distincts. Utile pour les développeurs qui souhaitent un style cohérent, lisible et minimaliste sans recourir à des actifs de jeu ou à des éléments décoratifs superflus.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/sayuriovo/terrain-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

Terrain UI

Ces règles ont été distillées à partir de l'interface d'un jeu à thème industriel, en ne conservant que ce qui s'est avéré utile pour des pages web ordinaires. Le skill ne contient aucun actif de jeu et ne tente pas de recréer le jeu.

Lisez l'intégralité de ce fichier avant de commencer. Ouvrez assets/terrain.css pour les couleurs et le balisage des composants, utilisez assets/contours.js pour l'arrière-plan de contours, et consultez references/research.md pour savoir d'où vient chaque règle et pourquoi certains éléments ont été omis.

Huit règles

  1. Une seule couleur d'accent, deux significations : l'emplacement actuel et l'action principale. Par défaut #FEEC00, échantillonnée à partir de l'onglet sélectionné du jeu. Utilisez-la uniquement en remplissage, avec un texte de couleur encre par-dessus ; dans le thème clair, ne l'utilisez jamais pour des lignes ou du texte. La même chose s'applique au survol : seul le bouton principal s'emplit de l'accent au survol. Les liens, les boutons en forme de pilule et les lignes de liste s'éclaircissent simplement ou obtiennent un soulignement plus épais.
  2. La sélection dépend de la direction :
    • Listes verticales : le survol éclaircit la ligne ; la ligne sélectionnée devient sombre avec un texte clair, et une barre d'accent apparaît sur la gauche.
    • Onglets horizontaux : l'onglet sélectionné se remplit entièrement de l'accent. Lors du changement, l'ancien bloc se rétracte et le nouveau s'ouvre latéralement depuis son centre.
  3. La forme du bouton indique la priorité : l'action principale est un bloc dont le coin inférieur droit est coupé ; les actions secondaires sont des pilules avec une icône ronde à l'extrémité droite. Au maximum une action principale par groupe de boutons.
  4. Placez un chemin en haut à gauche de chaque page : // Travail / À propos de moi. Les niveaux auxquels vous pouvez revenir sont des liens.
  5. Les numéros sont décoratifs, et ils doivent être vrais : définissez les ID, dates et compteurs actuel / total dans des chiffres larges tabulaires. N'inventez jamais de données et n'ajoutez pas de texte technique factice. La même règle s'applique au texte : ne décrivez un produit (fonctionnalités, portée prise en charge, installation) qu'à partir de ce que l'utilisateur a fourni ou de la documentation du projet, et respectez leur portée. Lorsqu'il n'y a pas de source, écrivez un texte provisoire tel que [TODO: ...] au lieu de le compléter.
  6. Affichez les touches de raccourci : par exemple ← → à côté des boutons de page. Affichez-les uniquement sur les appareils dotés d'un pointeur fin.
  7. Arrière-plan : lignes de contour fermées : un bloc dans chacun des deux coins, opacité de 6 % à 9 %, toutes les cinquièmes lignes plus épaisses, non animées.
  8. Mouvement court et ferme : survol 90 ms, sélection 110 à 120 ms, courbe cubic-bezier(.2,0,0,1). Désactivez tout lorsque le système demande de réduire les mouvements.

Choisissez d'abord un type de page

Décidez du type de page que vous construisez avant de commencer. Les trois partagent les mêmes couleurs et composants ; ils diffèrent par leur audace. En cas de doute, choisissez Lecture.

TypeUtilisé pourCommentÉquivalent dans le jeu
LectureArticles, détails de projet, paramètres, aideUne colonne de texte, environ 65 caractères latins ou 38 CJK de large ; accent uniquement sur l'élément de navigation actuel et le bouton principal ; contours facultatifsEncyclopédie, archives
VitrinePages d'accueil, portfolios, pages d'atterrissageGrands titres larges, police de contour autorisée ; grands chiffres en arrière-plan ; contours activés ; le contenu peut apparaître bloc par blocMenu principal, boutique
AtelierPages d'administration, tableaux de bord, outils, paramètres d'extensionNavigation en liste verticale à gauche, onglets en haut ; principalement des tableaux, des chiffres et des formulaires ; pas de grands titres ; mouvement uniquement en réponse aux actionsInventaire, équipement, liste d'amis

Composants

Tous se trouvent dans assets/terrain.css avec le préfixe tu-. examples/demo.html montre chacun d'eux.

ComposantClassesNotes
Titre de chemintu-crumbRègle 4
Liste verticaletu-listMarquez l'élément actuel avec aria-current
Onglets horizontauxtu-tabs tu-tabMarquez l'onglet actuel avec aria-selected="true" ou aria-current
Bouton principal / secondairetu-btn / tu-btn--pill + tu-btn__iconRègle 3
Indice de touchetu-kbdRègle 6
Ligne de champtu-fields tu-sepSéparez les métadonnées avec une barre verticale │
Panneautu-panelUn bloc plat : pas de rayon, d'ombre ou de bordure
Tableautu-table-wrap tu-tablePetites étiquettes d'en-tête larges ; alignez à droite les colonnes numériques avec tu-right ; défilement latéral sur écrans étroits
Champ de saisietu-field tu-input tu-hintAu focus, le soulignement s'épaissit et une barre d'accent apparaît sur la gauche
Erreurtu-error, plus aria-invalid="true" sur le champUn petit carré d'accent et une phrase expliquant comment la corriger ; pas de texte rouge
Interrupteurtu-switch« On » est un état actif, donc la piste se remplit de l'accent
Dialogue<dialog class="tu-dialog">Les boutons se trouvent dans une barre de pied : un principal, annuler en pilule ; il apparaît net à partir d'un flou
Toasttu-toastUne barre sombre avec une barre d'accent sur la gauche ; glisse depuis la gauche et disparaît après 2 secondes
État videtu-emptyUne boîte en pointillés avec une phrase expliquant ce qui apparaîtra ici, éventuellement un bouton principal
Chargementtu-progress, plus tu-progress--busy en attenteUne ligne de 2 px ; lorsque la progression est connue, définissez --tu-value et affichez le pourcentage

Pas de rouge. Les avertissements, échecs et états en attente utilisent le petit carré d'accent avec du texte encre. Placez les actions irréversibles telles que la suppression derrière un dialogue de confirmation.

Pour tout ce qui ne figure pas dans ce tableau, déduisez-le des huit règles : si c'est « actuel » ou « principal » détermine s'il peut utiliser l'accent ; si c'est principal ou secondaire détermine bloc ou pilule ; si cela peut être cliqué détermine s'il s'éclaircit au survol.

Mouvement

ActionDuréeComment
Éclaircissement au survol90 msTransition de couleur d'arrière-plan
Barre de sélection de liste apparaît110 msscaleY(0 → 1)
Changement d'onglet120 msBloc d'accent scaleX(0 → 1), s'ouvrant depuis le centre
Survol du bouton principal280 msL'accent apparaît depuis la gauche
Changement de pageSortie 320 ms, entrée 480 msL'ancienne page se floute et disparaît ; la nouvelle page apparaît bloc par bloc, espacés de 100 ms

À ne pas faire

  • Marqueurs invisibles (points rouges, badges NOUVEAU) : dans le jeu, ils poussent les joueurs à collecter des récompenses ; sur un portfolio ou un site ordinaire, ils ressemblent à du harcèlement.
  • Verre dépoli, déchirures de glitch, lignes de balayage, lueur, grands remplissages d'accent, cartes arrondies avec ombres.
  • Éléments exclusifs au jeu tels que menus carrousel 3D, illustrations de personnages et barres de couleur de rareté.
  • Tout actif officiel du jeu : captures d'écran, logos, icônes, illustrations de personnages, texte ou fichiers de police officiels.

Typographie

  • Texte et chiffres latins : Saira (open source, SIL OFL). Étiquettes étirées à 125 %, tout en majuscules, espacement de 0,06 em. Le site officiel n'ajoute pas d'espacement à ses grandes étiquettes ; un petit espacement est conservé ici pour les petites tailles.
  • Chinois : Noto Sans SC ou la police sans système. Pas de police serif ou brush pour le corps du texte.
  • Tous les chiffres sont tabulaires (font-variant-numeric: tabular-nums).

Livraison d'un fichier HTML unique

  • Utilisez les classes terrain.css telles quelles ; n'ajoutez pas de surcharges au niveau de la page qui changent leurs couleurs. Si un changement est nécessaire, le composant a un problème et doit être signalé au skill.
  • Placez terrain.css dans un élément <style> et contours.js dans un élément <script>. Avant d'intégrer un script, assurez-vous qu'il ne contient pas de </script> littéral ; si c'est le cas, écrivez-le </script>.
  • Si la page doit fonctionner hors ligne, intégrez Saira en tant que data URI woff2 dans @font-face ; sinon, liez Google Fonts et conservez les polices de secours.

Liste de contrôle avant livraison

  • Un type de page a été choisi et les tailles de titres de différents types ne sont pas mélangées sur une même page.
  • L'accent apparaît uniquement sur l'emplacement actuel et les actions principales ; il n'y a pas de rouge sur la page.
  • Chaque groupe de boutons a au maximum un bouton principal en bloc ; les autres sont des pilules.
  • Les listes verticales et les onglets horizontaux utilisent leurs propres styles de sélection.
  • Chaque page a un titre de chemin //.
  • Tous les chiffres sont des données réelles ; chaque affirmation sur un produit a une source et n'exagère pas sa portée.
  • Les thèmes clair et foncé ont été vérifiés ; rien ne défile latéralement à la largeur d'un téléphone (environ 400 px).
  • Le focus clavier est visible ; tout est immobile avec la réduction de mouvement activée.
  • Aucun actif officiel du jeu n'est utilisé.

Fichiers

FichierContenu
assets/terrain.cssJetons de couleur (clair et foncé) et tous les composants
assets/contours.jsArrière-plan de contours, une ligne à configurer : TerrainContours.mount(canvas)
examples/demo.htmlChaque composant sur une page, prêt à être ouvert
examples/screenshots/La page des composants en mode clair, foncé, largeur téléphone et le dialogue
references/research.mdNotes de recherche : ce qui a été observé, ce qui a été conservé, ce qui a été omis

Skills associés