--- name: specs-ui description: > Crée et fait évoluer des spécifications UI maquettées en HTML + Tailwind CSS : écrans desktop et mobile annotés, parcours, règles fonctionnelles, points ouverts et journal des itérations, pour itérer sur une application ou un outil avant les développements. Si l'interface n'est pas encore validée, propose d'abord trois propositions qui diffèrent par la disposition (navigation, organisation des écrans) et par le thème (couleurs, typographie, formes), à choisir ou combiner. Peut aussi partir d'un site ou d'un code existant pour reprendre son style et spécifier de nouvelles fonctionnalités. Utiliser dès que la personne parle de maquettes, wireframes, specs UI, spécifications fonctionnelles avec écrans, prototype d'interface, parcours à maquetter, charte ou direction graphique pour une app, ou nouvelle fonctionnalité à maquetter sur un site existant, même sans prononcer le mot « specs ». Aussi pendant les développements, pour tenir les specs à jour avec l'implémentation (statut des écrans, écarts). metadata: author: fpasquet version: "3.5.1" --- # Specs UI maquettées en Tailwind Ce skill produit un petit site de specs (une page par écran, publié comme un seul artifact multi-pages) qui sert de référence entre le métier et les développeurs : chaque écran y est maquetté en Tailwind (desktop et mobile), situé dans son parcours et annoté avec ses règles. On itère jusqu'à valider le fonctionnement et le rendu, puis les développements reprennent les mêmes tokens et les mêmes classes. Documents, libellés, annotations et échanges sont en français. Le code (scripts, attributs, variables, identifiants techniques) est en anglais ; ses commentaires peuvent être en français. Les specs sont **fonctionnelles et UI** : aucun nom de bibliothèque, de fonction, de champ d'API ni de notation technique dans les écrans, les annotations ou les règles (`redaction-specs.md`, « Specs fonctionnelles, sans code »). `` désigne le dossier de ce skill : les scripts se lancent avec `node /scripts/…` depuis le projet de la personne. ## Économiser le contexte (à lire en premier) Un projet de specs grossit vite : un lot d'une dizaine d'écrans en une seule page dépasse 300 Ko. C'est pourquoi les specs sont découpées en **pages par écran**, et pourquoi il ne faut jamais relire ce qui n'est pas utile. Règles : 1. **`specs/ui/CONTEXTE.md` est la mémoire du projet.** En reprise, le lire en premier et s'en contenter tant que possible. Il contient les décisions, l'identité, la disposition, les personas, les **faits du fil rouge en chaînes exactes** (identifiants, libellés, heures : à y ajouter dès qu'un écran en crée), l'inventaire avec les ancres, l'état des lots et leurs URL, les conventions propres au projet, les points ouverts et la prochaine étape. Le créer depuis `templates/contexte.md` dès l'étape 1, et le **mettre à jour à la fin de chaque étape**. Il doit rester sous 200 lignes. 2. **Ne jamais lire les pages construites (`specs/ui/site/`).** Les specs vivent dans `specs/ui/sources/` : un fichier par état d'écran. On lit et modifie seulement les fichiers utiles (`sources//070-e15d.html`, `sources/shared/shells.html`), puis on reconstruit (étape 3). 3. **Relire ses captures en commençant par le moins cher.** Lire d'abord les alertes de `capture.mjs`, puis la planche réduite (`--sheet`, environ 1 000 tokens pour plusieurs écrans), et ouvrir un cadre seul seulement en cas de doute. Les captures de section (`--sections`) coûtent cher : à réserver aux mises en page de document. 4. **Limiter au travail en cours** : `--ids` pour ne capturer que les écrans modifiés, références du skill lues selon la table ci-dessous. 5. **Déléguer sobrement, au bon modèle** (voir « Répartir le travail entre modèles »). Un sous-agent reçoit le chemin de `CONTEXTE.md` et sa tâche, pas un résumé de tout le projet. Deux sous-agents en parallèle ne travaillent jamais sur les mêmes fichiers, et l'inventaire révisé (ID, titres, ancres) est écrit dans `CONTEXTE.md` avant de les lancer. 6. **Publier seulement ce qui a changé.** Tout le projet est un seul artifact multi-pages : `prepare-publish.mjs` liste les pages modifiées depuis la dernière publication, et seules celles-là sont envoyées. Regrouper les retouches avant de publier. ### Répartir le travail entre modèles Écrire ou modifier du HTML d'écran, appliquer une décision, extraire du texte : c'est de l'exécution, qui ne demande pas le modèle le plus capable. Quand l'environnement permet de choisir le modèle d'un sous-agent (paramètre `model` de l'outil Agent dans Claude Code), répartir ainsi : | Rôle | Modèle | Tâches | |---|---|---| | Conception et décision | modèle principal de la session | Cadrage, propositions (disposition + thème), inventaire, **fiches d'écran**, relecture des planches avec la grille de `qualite-ui.md`, dialogue et questions, `CONTEXTE.md`, publication | | Rédaction | `sonnet` | Écrire les fichiers d'écran d'un lot à partir des fiches ; appliquer des retours ou des décisions dans les sources ; mutualiser un composant ; migrer un projet | | Exécution mécanique | `haiku` | Lancer `build.mjs` et `capture.mjs` et rapporter les alertes ; corriger une pastille ou un lien signalé ; extraire en texte brut les points ouverts, journaux ou inventaires ; renommer en série | **Pourquoi Sonnet pour rédiger** : écrire un écran demande de composer une mise en page soignée et de rester fidèle à la fiche, au fil rouge et à la grille de qualité. Haiku y perd en finition et oblige à des allers-retours qui coûtent plus que l'écart de prix. Haiku reste le bon choix pour ce qui ne demande aucun jugement de mise en page : lancer les scripts, extraire, renommer, corriger une pastille ou un lien signalé. **Fiche d'écran** : ce que le modèle principal transmet au rédacteur, en 10 à 20 lignes par écran. Elle contient l'ID et les ancres de chaque état, l'objectif et l'usage dominant, le point focal, le contenu exact (faits du fil rouge), les composants et l'écran modèle à reprendre, les annotations à écrire (règle, condition, renvoi), les liens Depuis / Ensuite, et la portée mobile. Plus la fiche est précise, moins le rédacteur a besoin de contexte, et plus il peut être léger. Le rédacteur ne décide pas : une ambiguïté ou un manque dans la fiche lui fait poser la question dans son compte rendu, pas improviser. Le modèle principal relit toujours les planches avant de publier ; un défaut de conception revient au rédacteur avec une consigne précise. | Tâche | À lire | |---|---| | Reprise, itération, retouche | `CONTEXTE.md`, puis les fichiers sources concernés ; `redaction-specs.md` §6 si besoin | | Nouveau lot de specs | `CONTEXTE.md`, `tailwind.md` §2 à §6, `qualite-ui.md` §9, un écran existant comme modèle, `shells.html` | | Propositions d'interface | `propositions.md`, `qualite-ui.md` | | Site existant | `site-existant.md` | | Inventaire, évolution transverse | `redaction-specs.md` §1 à §4 | ## Fichiers produits Les trois skills de la chaîne rangent leurs livrables dans un seul dossier `specs/` à la racine du projet. C'est aussi le dossier qui vit dans le dépôt de code de l'application pendant les développements : ``` specs/ ├── ui/ ce skill : specs maquettées ├── prototype/ skill prototype-ui (facultatif) └── requirements/ skill requirements-doc : cahier des charges (facultatif) ``` ``` specs/ui/ ├── CONTEXTE.md mémoire du projet (à jour à chaque étape) ├── tokens.css identité : bloc @theme Tailwind, injecté dans chaque document ├── propositions.html propositions d'interface et décision (jamais supprimé ; copié dans le site) ├── captures/ captures du site existant (étape 1B) ├── assets/ (facultatif) images du produit : logos, illustrations, photos de démonstration ├── sources/ │ ├── site.json titre, introduction, URL de l'artifact, liste ordonnée des lots, dossier des images │ ├── shared/shells.html coquilles