CLAUDE.md - Malain et Possible
Projet
Site web personnel / vitrine d'Alain, construit avec Next.js 15 (App Router) + TypeScript. Heberge sur Vercel, code sur GitHub. Le site presente les profils professionnels d'Alain (CPO, COO, CTO, Agile, CPTO), ses competences, temoignages et detournements video.
Product Goal : Demontrer la maitrise des pratiques software craftsmanship (TDD, BDD, Clean Code, DDD, architecture hexagonale) en tant que manager technico-fonctionnel, pas developpeur au quotidien.
Referentiel qualite : "A propos du projet.md"
Les 24 pratiques de reference
- Expression du besoin (User Stories + criteres d'acceptation testables)
- BDD (scenarios Gherkin en francais, specifications executables)
- TDD (tests avant le code, couverture metier)
- TDD strict (cycle Red-Green-Refactor)
- Tests unitaires (chaque regle metier isolee, documentation vivante)
- Tests End-to-End (parcours utilisateur complet via Playwright)
- Definition of Done (contrat partage, checklist non negociable)
- Clean Code (noms explicites, fonctions courtes, pas de duplication)
- SOLID (S, O, L, I, D — particulierement le D avec architecture hexagonale)
- DDD (langage ubiquitaire en francais, domaine isole)
- Architecture hexagonale (Ports & Adapters, dependances exterieur -> centre)
- Cas d'usage (logique metier pure, zero dependance infra)
- Documentation des API (OpenAPI)
- Front-end (adaptation au canal, separation des responsabilites)
- Separation contenu/presentation (DOM semantique vs CSS)
- CI/CD (tests + build + deploiement automatiques, regression = blocage)
- Documentation technique detaillee
- Sprint en cours et principes Kanban
- Configuration IA et pair programming avec l'IA
- Metriques (management visuel des delivrables)
- Observabilite (logs structures, alertes, tracabilite)
- Securite (OWASP, validation entrees, gestion secrets, audit dependances)
- Gestion des erreurs et resilience (erreurs typees, fail fast, pas de catch vide)
- Performances et accessibilite (mesurer avant d'optimiser, HTML semantique)
Posture attendue : amelioration continue
- Chaque contribution doit tendre vers ces pratiques, pas les ignorer
- Signaler les ecarts : quand le code existant ne respecte pas une pratique du referentiel, le mentionner (sans forcement tout corriger d'un coup)
- Proposer des ameliorations : si une pratique du referentiel peut etre mieux appliquee, ou si une nouvelle pratique devrait y etre ajoutee, le suggerer au manager
- Boy Scout Rule : laisser le code un peu plus propre qu'on ne l'a trouve
- Ne pas regresser : ne jamais introduire un ecart volontaire par rapport au referentiel sans justification explicite
Le document est vivant. Quand un ecart ou une amelioration est identifie :
- Signaler l'ecart au manager (ex: "Le referentiel mentionne X mais le code fait Y")
- Proposer des ajouts si une pratique emerge du travail
- Ne pas modifier le referentiel sans validation du manager — c'est son document
---
Commandes de pilotage
Commandes tunnel (developpement)
| Commande | Effet | |----------|-------| | `GO US` | Jouer le role de l'agent US : reformuler la demande en User Story + CA, ecrire le fichier MD dans le sprint, mettre a jour `US en cours` (etape = `US-review`). | | `GO NEXT` | Avancer d'une etape. Faire la revue de l'etape livree, puis passer a l'etape suivante. Fonctionne pour toutes les transitions : US -> BDD -> TDD-back-end -> TDD-front-end. | | `GO FIN` | Enchainer toutes les etapes restantes sans pause. Faire les revues soi-meme. S'interrompre uniquement si un arbitrage est necessaire. | | `US VALIDEE` | La valeur metier a ete creee et delivree. Marquer l'US comme COMPLETEE : etape = `done`, renommer le fichier avec le suffixe `COMPLETE`. Ce n'est pas la validation de l'artefact US, c'est la cloture. |
Commandes operations → remplacees par des skills `/go-xxx`
Ces commandes sont desormais des skills Claude Code (fichiers dans `.claude/commands/`). Les invoquer avec `/go-prod`, `/go-debug`, etc. dans le chat.
| Skill | Effet | |-------|-------| | `/go-prod` | Analyse `git diff` : lint+Jest si contenu seul (~1 min), pipeline complet si code modifie (~20 min). Construit le message de commit. Demande au manager de lancer `npm run publie`. Ne jamais lancer `npm run publie` via Bash (pipeline ~20 min — depasse le timeout outil). | | `/go-debug` | Lire automatiquement `logs/publish-errors.txt` + `test-results.json` + `playwright-report/data.json`. Fonctionne pour tout contexte : Jest, BDD, E2E, pipeline. Identifier la cause racine, corriger. Jamais demander au manager de copier-coller des logs. Annoncer "Relance le pipeline." | | `/go-build` | tsc --noEmit puis next build. Rapport d'erreurs. | | `/go-metrics` | Collecter les metriques et afficher le rapport synthetique. | | `/go-sitemap` | Regenerer le plan du site + specs E2E apres ajout de page ou lien. | | `/go-css [containers\|off]` | Activer/desactiver les bordures debug CSS sur les containers listes. Script pur, pas de conversation LLM. | | `/go-help` | Afficher le guide de reference complet (commandes Claude + menu + skills + scenarios). |
---
Le tunnel
Mode interactif obligatoire (GO NEXT)
Lors d'un GO NEXT, le Lead Dev discute avec l'utilisateur avant de passer a l'etape suivante :
- Resumer : ce qui a ete compris de l'etape a venir (contexte, objectif).
- Proposer : le plan pour l'etape (grandes lignes, pas le detail).
- Demander validation : « Ca te convient ? », « As-tu des precisions ? ».
- Attendre : ne pas lancer l'etape tant que l'utilisateur n'a pas confirme ou ajuste.
GO FIN : pas de mode interactif. Le Lead Dev enchaine les etapes et fait les revues lui-meme. S'interrompre uniquement si un arbitrage critique est necessaire.
TDD Baby Steps — le code emerge des tests
Les tests ne sont pas listes a l'avance. Le developpeur TDD fait emerger le code :
- Choisir le cas le plus simple : ecrire UN test qui echoue (RED).
- Code minimal : implementer le strict minimum pour faire passer ce test (GREEN). Exemple : si on implemente `+` et que le premier test est `1+1`, la methode retourne `2` — c'est le code le plus simple.
- REFACTOR : ameliorer sans casser le test.
- Prochain petit pas : choisir le test suivant et recommencer.
Pas de liste prealable de tests — cela creerait un biais pour l'implementation. Les CA definissent le QUOI, les baby steps emergent du COMMENT.
Agent US
- Reformuler l'echange en User Story (En tant que / Je souhaite / Afin de) + Criteres d'Acceptation testables.
- Ecrire le fichier `US-X.Y - Titre.md` dans le dossier du sprint courant (`data/A propos/Sprints/YYYY-MM-DD - Titre/`).
- Mettre a jour `data/A propos/Sprints/US en cours.md` : reference, titre, etape = `US-review`.
- Ne produit aucun code ni fichier `.feature`.
#### Format strict du fichier US
US-X.Y - Titre de l'US
User Story
En tant que [role utilisateur] Je souhaite [action souhaitee] Afin de [benefice attendu]
Criteres d'acceptation
CA1 — Titre du premier critere
- Detail du critere
- Autre detail
CA2 — Titre du deuxieme critere
- Detail
Agent BDD
- Ecrire uniquement les fichiers `.feature` dans `tests/bdd/`.
- Gherkin en francais : `# language: fr`, mots-cles `Fonctionnalite`, `Scenario`, `Etant donne que`, `Quand`, `Alors`.
- Pour les Scenario Outline : utiliser les mots-cles anglais (contrainte du parseur playwright-bdd).
- Couvrir les CA de l'US. Pas de BDD artificiel : uniquement les comportements observables testables.
- Listes dans un step -> DocString (`"""..."""`), pas de tirets directs.
- DDD / langage ubiquitaire : si l'US exprime une longue phrase sans termes techniques, identifier le vocable du domaine (langage ubiquitaire) qui decrit la demande sans ambiguite. Utiliser ce vocabulaire dans les scenarios.
- Refactoriser : identifier dans les `.feature` existants les scenarios qui ne sont plus conformes a l'US en cours et les aligner. Ne pas laisser de scenarios obsoletes.
- Ne produit aucun code ni step definition.
- En fin de livraison : lister les steps utilises pour faciliter le TDD.
Agent TDD-back-end
- Implementer la logique metier uniquement dans `utils/` (et `types/` si necessaire).
- TDD Baby Steps strict : RED -> GREEN -> REFACTOR, un test a la fois. L'agent TDD choisit le premier test, implemente seulement lui (RED, GREEN, REFACTOR), puis choisit le prochain petit pas, et ainsi de suite. Du vrai TDD. Les CA definissent le quoi, les baby steps definissent le comment.
- Couverture 100% sur le code modifie dans `utils/`.
- Ne touche pas a `app/`, `components/`, ni aux fichiers `.feature`.
Agent TDD-front-end
- Implementer l'UI dans `app/` et `components/`.
- TDD Baby Steps strict (meme regle : l'agent choisit sa strategie d'implementation incrementale).
- Arbitrer Server Components vs Client Components selon le besoin (SSR, interactivite).
- Respecter la strategie RAW : structure DOM avec classes racine (camelCase), attributs `data-layout`.
- Tout element interactif doit avoir `e2eid="e2eid-{id}"` ou etre explicitement exclu (`e2eid={null}`).
- Nouvelle page / nouveau lien : mettre a jour le plan du site (`scripts/update-site-map.ts`), regenerer E2E (`npm run test:e2e:generate`).
- Ne touche pas a `utils/` ni aux `.feature`.
#### Contraintes sur les step definitions BDD
- Ne pas dupliquer : si un step existe deja dans un autre fichier, ne pas le redefinir.
- Steps partages : les steps de navigation generiques sont centralises (ex: `a-propos-du-site-tableau-de-bord.steps.ts`).
- Expressions Cucumber : n'echapper que les caracteres autorises (`{`, `}`, `(`, `)`, `\`, `/`, espaces). Ne pas utiliser `\+`.
Agent Designer (hors tunnel, sur demande)
- Applique uniquement le CSS dans `app/content-styles.css` et `app/globals.css`.
- Approche Data first : le DOM pilote le rendu. Styles par selecteurs (types HTML + classes racine + `data-*`), pas de surcharges ad hoc.
- Tokens (variables) dans `globals.css`. Aucune valeur en dur si un token existe.
- Ne modifie pas les composants ni les utils.
#### Brief Designer — ressources
| Ressource | Fichier | |-----------|---------| | Guide DOM et conventions | `app/raw/README.md` | | Structure des pages | `data/A propos/Documentation technique/4. Organisation du DOM.md` | | Hierarchie du site | `data/A propos/Documentation technique/5. Hierarchie du site.md` | | Tokens CSS | `app/globals.css` | | Styles types de contenu | `app/content-styles.css` | | Debug CSS | `app/css-debug.css` |
#### Strategie responsive (breakpoints)
- 1 seul breakpoint : `@media (min-width: 48rem)` (768px) — mobile portrait vs reste.
- Fluidite : privilegier `clamp()`, `min()`, `max()` pour tailles, padding, gap, typo.
- Grilles : `repeat(auto-fit, minmax(min(100%, Xpx), 1fr))` plutot que colonnes figees par breakpoint.
- Unites : `rem` pour le scaling proportionnel.
- Regle : entre 768px et grands ecrans, la fluidite suffit — pas de breakpoint intermediaire sauf necessite imperative.
#### Mode debug CSS → skill `/go-css`
- `/go-css hero sidebar` : afficher les containers listes avec bordure + fond (couleurs distinctes).
- `/go-css off` : remettre `--CouleurBordDeContainer` a transparent et desactiver les surcharges debug.
- Fichier dedie : `app/css-debug.css` — ne pas polluer `content-styles.css` ni `globals.css`.
---
Revue de code
Verifications generiques
- Principes Clean Code (SOLID, pas de duplication, noms explicites)
- Tests TDD/BDD avec couverture 100%
- Cycle RED -> GREEN -> REFACTOR respecte
- Scenarios BDD valides et coherents avec les BDD existants
Actions
- Corriger ecarts mineurs (typographie, structure)
- Retourner taches non conformes avec commentaires precis
- BLOQUER si couverture < 100%
Strategie Boy Scout
Lorsqu'on repasse sur du code qui ne respecte pas les consignes, faire nettoyer en passant (corriger soi-meme si mineur).
Verifications specifiques au projet
Voir la memoire persistante (`revue-specifique.md`) pour les verifications liees a ce projet (plan du site, e2eID, E2E, DoD, responsive).
---
Suivi des US et sprints
Fichiers de suivi
- `data/A propos/Sprints/US en cours.md` : reference, titre, etape du workflow. Parse par le site pour le board Kanban.
- Fichiers US : `US-X.Y - Titre.md` dans le dossier sprint. Renommes avec `COMPLETE` quand clotures.
- Sprint goal : `00 - Sprint goal et contexte.md` dans chaque dossier sprint.
Etats d'une US
| Etape dans `US en cours.md` | Signification | Board Kanban | |------------------------------|---------------|--------------| | `US-review` | US redigee, en attente de validation du manager | Colonne US, avec loupe | | `US` | US en cours de redaction | Colonne US | | `BDD` | Scenarios BDD en cours | Colonne BDD | | `TDD-back-end` | Implementation back-end en cours | Colonne TDD-back-end | | `TDD-front-end` | Implementation front-end en cours | Colonne TDD-front-end | | `done` | US completee (valeur metier delivree) | Colonne Fait |
Le suffixe `-review` (ex: `BDD-review`) place le post-it dans la colonne correspondante avec une loupe.
US obsolete
Quand un refactoring casse des BDD existants et que le comportement a change volontairement (pas une regression), remonter a l'US d'origine et la marquer obsolete :
- Ajouter en tete du fichier MD : `> OBSOLETE — Remplacee par US-X.Y suite au refactoring Z`
- Permet de distinguer evolution volontaire vs regression
---
Regles de qualite
TDD — toujours, pas seulement dans le tunnel
Meme pour une correction technique (CSP, config, refactoring) :
- RED : ecrire un test qui echoue (ou verifier qu'un test existant couvre le cas)
- GREEN : code minimal pour faire passer le test
- REFACTOR : ameliorer en gardant tests verts
- Cycle RED -> GREEN -> REFACTOR — UN TEST A LA FOIS
- Couverture 100% obligatoire sur le code modifie dans `utils/`
- Pas de code sans test, meme hors tunnel
BDD
- Tests BDD : scenarios en francais, comportements observables testables
- Steps non dupliques entre fichiers. Steps generiques definis une seule fois.
- Pas de BDD artificiel : uniquement la ou ca apporte de la valeur.
ESLint
- `npm run lint` doit produire 0 erreur, 0 warning
- Obligation avant toute livraison
TypeScript
- Pas de `any` : typage explicite ; `unknown` + gardes si besoin ; exceptions documentees (ex. tables Gherkin, mocks).
- Regle `@typescript-eslint/no-explicit-any` respectee sur le code modifie ; dette existante traitee en Boy Scout.
API REST (Vitrine)
- Si le contrat API change (endpoints, structure JSON), incrementer la version dans `utils/vitrine/openApiSpec.ts`
- Version API = MAJOR.MINOR (ex: 1.0, 1.1, 2.0)
- MAJOR : breaking change (suppression, renommage)
- MINOR : ajout retrocompatible
Build et tests pendant le tunnel
- Ne pas lancer le build ni la suite de tests complete pendant le tunnel (sauf tests pertinents a l'etape)
- C'est a la cloture de l'US (etape = `done`) qu'on lance build et suite de tests complete
- Metriques : `npm run metrics:collect` lors de chaque build
---
Stack technique
- Framework : Next.js 15+ (App Router, Server Components)
- Langage : TypeScript (strict, noms metier en francais)
- Tests unitaires/integration : Jest
- Tests BDD : Cucumber.js (Gherkin en francais) + playwright-bdd
- Tests E2E : Playwright
- CI/CD : GitHub Actions + Vercel
- Linter : ESLint (0 erreur, 0 warning — suivi dans les metriques)
- Pre-commit : Husky
Architecture
Structure des dossiers
app/ # Pages Next.js (App Router) - routes groupees sous (main)
(main)/ # Layout principal (Header + Footer)
api/ # Routes API (vitrine, metrics, version, a-propos)
raw/ # Page RAW (structure DOM sans CSS)
components/ # Composants React (presentationnels)
constants/ # Constantes (canonicalSpec, e2eIds, headerImages)
contexts/ # React Contexts (EditingContext)
data/ # Donnees JSON statiques (pages, profils, temoignages, menus)
A propos/ # Documentation projet (sprints, config IA, docs techniques)
types/ # Interfaces TypeScript
utils/ # Logique metier pure (architecture hexagonale)
vitrine/ # Readers/builders pour le site vitrine
projet/ # Readers pour le module "A propos" (journal, sprints, metrics)
backoffice/ # Generateurs (plan du site, hierarchie, e2eID)
shared/ # Utilitaires partages (markdown, e2eId, environment)
scripts/ # Scripts Node (publication, metrics, migration, generation)
tests/
unit/ # Tests unitaires Jest (.test.ts/.test.tsx)
integration/ # Tests d'integration Jest
bdd/ # Scenarios Gherkin (.feature) + step definitions (.steps.ts)
end-to-end/ # Specs E2E Playwright (generees automatiquement)Architecture hexagonale
- utils/ = coeur metier (readers, builders, parsers) - zero dependance sur Next.js/React
- app/ + components/ = adaptateurs front-end (Server Components, Client Components)
- app/api/ = adaptateurs API REST
- Les dependances vont toujours de l'exterieur (app) vers le centre (utils)
Types de contenu
Le site utilise 8 types de contenu definis dans `utils/vitrine/pageReader.ts` : titre, video, texteLarge, domaineDeCompetence, callToAction, groupeDeBoutons, listeDeTemoignages, listeDeDetournementsVideo
Chaque page est composee a partir de fichiers JSON dans `data/` qui referencent ces types.
Conventions
Nommage
- Noms metier en francais dans le code (variables, fonctions, types, interfaces)
- camelCase pour les classes CSS des types de contenu (ex: `.domaineDeCompetence`, `.hero`)
- Un seul nom par type de contenu : meme nom dans JSON, TypeScript et CSS — pas de variante entre couches
- e2eID : convention lettre+numero (h=header, b=bouton, v=video, a=action, c=competence, l=lien)
e2eID — conventions techniques
Tout element interactif (lien, bouton, CTA, carte cliquable) doit avoir un identifiant E2E, sauf exclusion explicite.
| Contexte | Propriete | Format | |----------|-----------|--------| | JSON | `e2eID` (camelCase) | `string \| null` | | JSX | `e2eid` (minuscules) | `"e2eid-{id}"` ou `{null}` |
- Elements issus du JSON : utiliser l'`e2eID` fourni par les donnees, ne pas inventer.
- Exclusion volontaire : `e2eid={null}` (JSX) ou `e2eID: null` (JSON).
- Ne pas utiliser `data-testid` ni `data-e2eid`. Playwright cible l'attribut `e2eid`.
- Apres nouvelle route ou nouveau lien : (1) `scripts/update-site-map.ts`, (2) `npm run test:e2e:generate`, (3) traiter `e2e-ids-pending.json`.
CSS
- Les types de contenu sont styles uniquement dans `app/content-styles.css` (CSS global)
- Tokens (couleurs, tailles) dans `app/globals.css`
- Pas de `.module.css` pour les types de contenu
- Exceptions : Maintenance, Metrics et A propos peuvent avoir du CSS dedie
Tests
- TDD strict : RED -> GREEN -> REFACTOR. L'agent TDD fait emerger le code par baby steps, dans l'ordre qu'il choisit (du plus simple au plus complexe)
- Couverture 100% visee sur `utils/`
- BDD : scenarios Gherkin en francais dans `tests/bdd/*.feature`
- E2E : specs generees automatiquement (ne pas modifier manuellement `tests/end-to-end/*.spec.ts`)
- ESLint : 0 erreur, 0 warning obligatoire avant toute livraison
Fichiers generes (NE PAS MODIFIER MANUELLEMENT)
| Fichier | Script generateur | |---------|-------------------| | `data/_Pages-Liens-Et-Menus.json` | `scripts/update-site-map.ts` | | `data/plan-du-site.json` | `scripts/update-site-map.ts` | | `data/A propos/Documentation technique/9. Hierarchie containers par page.md` | `npm run css:hierarchy` | | `tests/end-to-end/*.spec.ts` | TI `generate-e2e-navigation.integration.test.ts` |
Menu header : le fichier `data/_Menus-header.json` est la source editable du menu. Son contenu est fusionne dans `_Pages-Liens-Et-Menus.json` lors du build. Pour modifier le menu, editer `_Menus-header.json` puis regenerer.
Commandes npm
npm run dev # Demarrer en dev
npm test # Tests Jest (unit + integration)
npm run test:bdd # Tests BDD (Cucumber + Playwright)
npm run test:e2e # Tests E2E (Playwright)
npm run build # Build production
npm run publie # Script de publication (tests + build + deploy)
npm run metrics:collect # Collecter les metriques
npm run css:hierarchy # Regenerer hierarchie containers
npm run lint # ESLintCommunication
- Toujours en francais
- Explications pedagogiques pour les concepts techniques
- L'utilisateur est un manager technico-fonctionnel (CPO/Coach Agile), pas un developpeur au quotidien
- Vocabulaire CSS : utiliser les termes du glossaire `.claude/vocabulaire-ancrage-alignement.md`
Comportements a NE PAS faire
- Ne pas coder sans avoir valide l'approche avec l'utilisateur (sauf GO FIN)
- Ne pas creer de fichiers `.md` de documentation sauf demande explicite
- Ne pas modifier de fichiers non demandes
- Ne pas lancer tous les tests a chaque modification (seulement les tests pertinents)
- Ne pas refactoriser sans demande (sauf Boy Scout : nettoyer en passant)
Gestion des erreurs
Workflow pipeline (GO PROD + GO DEBUG)
Le manager lance `npm run publie` dans son terminal. En cas d'echec :
- Le pipeline ecrit `logs/publish-errors.txt` (etape en echec, scenarios KO)
- Le manager tape `GO DEBUG` dans Claude — pas de copier-coller
- Claude lit les logs, corrige, annonce "Relance le pipeline."
Regles generales
- Sources de verite : `logs/publish-errors.txt` (etape en echec) → `test-results.json` (details Jest) → `playwright-report/data.json` (details E2E/BDD). Dans cet ordre, sans relancer les tests pour retrouver les erreurs.
- Identifier le probleme metier/fonctionnel AVANT la solution technique
- Solution simple avant solution complexe
- Pas de corrections multiples en parallele
- Si echec multiple → repartir de zero avec User Story -> Plan de test -> TDD
- Lors d'un `GO TESTS` : lire les erreurs soi-meme, corriger, relancer — ne jamais demander au manager de copier-coller des logs
Vocabulaire pour les consignes d’ancrage et d’alignement
Ce document définit les termes à utiliser pour donner des consignes sur la position des éléments dans leur conteneur (alignement, répartition, ancrage). Utilise ces libellés dans tes instructions pour que l’assistant applique le bon CSS.
---
1. Alignement horizontal (axe principal du texte / ligne)
À utiliser pour : contenu dans un bloc (texte, boutons, enfants en ligne ou en colonne selon le sens du flex/grid).
| Consigne à employer | Signification | Équivalent CSS (flex) | Équivalent CSS (texte) | |--------------------|---------------|------------------------|------------------------| | aligné à gauche | Éléments collés au bord gauche du conteneur | `justify-content: flex-start` | `text-align: left` | | aligné à droite | Éléments collés au bord droit du conteneur | `justify-content: flex-end` | `text-align: right` | | centré horizontalement | Éléments au centre du conteneur en largeur | `justify-content: center` | `text-align: center` | | répartis (ou répartis sur toute la largeur) | Espace égal entre les éléments, bords sans marge vide | `justify-content: space-between` | — | | répartis avec espaces égaux | Espace égal entre les éléments et entre bords et premier/dernier élément | `justify-content: space-evenly` | — | | répartis avec marges égales | Espace égal autour de chaque élément (gauche/droite) | `justify-content: space-around` | — |
Pour du texte seul dans un bloc, privilégier : *aligné à gauche, aligné à droite, centré horizontalement* (souvent avec `text-align`).
---
2. Alignement vertical (axe perpendiculaire)
À utiliser pour : position du contenu en hauteur dans un conteneur (colonne ou ligne).
| Consigne à employer | Signification | Équivalent CSS (flex) | |---------------------|---------------|------------------------| | aligné en haut (ou en tête) | Contenu collé en haut du conteneur | `align-items: flex-start` | | aligné en bas (ou en pied) | Contenu collé en bas du conteneur | `align-items: flex-end` | | centré verticalement | Contenu au milieu en hauteur | `align-items: center` | | étiré (ou même hauteur) | Les enfants prennent toute la hauteur du conteneur | `align-items: stretch` |
Pour une grille : `align-items` sur le conteneur, ou `align-self` sur l’élément.
---
3. Répartition dans une grille
| Consigne à employer | Signification | Équivalent CSS | |---------------------|---------------|----------------| | colonnes de largeur égale | Autant de colonnes que souhaité, même largeur | `grid-template-columns: repeat(N, 1fr)` ou `1fr 1fr` pour 2 colonnes égales | | une colonne, deux colonnes… | Nombre de colonnes | `grid-template-columns: 1fr`, `1fr 1fr`, etc. | | la colonne de gauche / de droite | Cible la première ou la dernière colonne | Sélecteur sur l’enfant (ex. `:first-child`, `.ui-heroGauche`) |
---
4. Ancrage d’un seul élément dans son conteneur
Pour un bloc unique (ex. un titre, un paragraphe) dans une zone :
| Consigne à employer | Signification | Équivalent CSS | |---------------------|---------------|----------------| | ancré à gauche | Collé au bord gauche | `margin-right: auto` (dans un flex) ou `align-self: flex-start` + `text-align: left` | | ancré à droite | Collé au bord droit | `margin-left: auto` (dans un flex) ou `align-self: flex-end` + `text-align: right` | | centré (dans le conteneur) | Centré en horizontal et/ou vertical selon le contexte | `margin: 0 auto` (horizontal) ou flex/grid `justify-content: center` + `align-items: center` | | étiré en largeur | Prend toute la largeur du conteneur | `width: 100%` ou `align-self: stretch` |
---
5. Ordre et sens d’empilement
| Consigne à employer | Signification | Équivalent CSS | |---------------------|---------------|----------------| | empilés en colonne | Blocs les uns sous les autres | `flex-direction: column` ou `display: block` | | empilés en ligne (ou côte à côte) | Blocs alignés sur une ligne | `flex-direction: row` (ou `row` par défaut) | | inverser l’ordre | Ordre visuel inversé (droite→gauche ou bas→haut) | `flex-direction: row-reverse` ou `column-reverse` |
---
6. Marges et espacement
| Consigne à employer | Signification | Équivalent CSS | |---------------------|---------------|----------------| | collés (sans espace) | Pas d’espace entre conteneur et contenu ou entre frères | `padding: 0`, `gap: 0`, `margin: 0` selon le cas | | espacés de X | Espace régulier entre éléments (ou avec le bord) | `gap: X` (flex/grid) ou `margin` / `padding` | | marge uniquement en bas / en haut / à gauche / à droite | Marge sur un seul côté | `margin-bottom: X`, `margin-top: X`, etc. |
---
7. Exemples de consignes rédigées
- *« Le titre et le sous-titre du hero sont centrés horizontalement dans la colonne de gauche. »*
→ `text-align: center` sur les blocs concernés, ou `align-items: center` sur `.ui-heroGauche` si c’est un flex en colonne.
- *« La colonne gauche du hero est centrée verticalement par rapport à la vidéo. »*
→ Sur le conteneur grille/flex du hero : `align-items: center`, ou sur `.ui-heroGauche` : `justify-content: center` (si direction colonne).
- *« Les deux boutons du hero sont répartis sur toute la largeur. »*
→ `justify-content: space-between` sur `.ui-heroCtas` (avec `display: flex`).
- *« Le bloc texte du hero est ancré à gauche dans sa colonne. »*
→ Contenu de `.ui-heroGauche` avec `align-items: flex-start` (ou équivalent) et `text-align: left`.
Tu peux copier-coller ou adapter ces formulations dans tes prompts pour que l’assistant applique le bon ancrage et le bon alignement.
