` du séparateur actif lorsque `data-level` change entre les slides. Pas de rail de journey à droite, pas de ticks, pas de map de hauteurs/couleurs `LEVELS`.
- **Map `LEVEL_LABELS`** dans le JS : définit les libellés d’affichage des clés `agents`, `skills`, `context`, `claude-md`, `commands`, `workflow`. Si tu ajoutes ou renommes un niveau, mets cette map à jour.
- **Clés `data-level` utilisées au 2026-04-30** : `agents` (7 slides), `claude-md` (4), `skills` (3), `context` (3), `workflow` (3). La clé `commands` existe dans `LEVEL_LABELS` mais aucune slide ne la porte actuellement — clé morte, à laisser ou retirer.
### Boîtes stylisées réutilisables
- `.trigger-box` — boîte grise neutre (point clé / takeaway)
- `.analogy-box` — boîte violette (à utiliser souvent — les analogies sont la voix signature du deck)
- `.how-to-trigger` — boîte verte (takeaway / how-to-use)
- `.warning-box` — boîte orange (limite / piège)
- `.info-box` — boîte bleue (aparté informationnel)
- `.code-block` — exemple de code sombre avec spans `.comment`, `.key`, `.string`, `.cmd`, `.claude-file`
- `.two-col` avec `.col-card` (`.good` / `.bad`) — layouts de comparaison
- `.use-cases` avec `.use-case-item` — liste à puces avec icônes emoji
- `.hiring-steps` avec `.hiring-step.level-N` — walkthrough analogique numéroté
- `.field-row` avec `.field-name` / `.field-desc` / `.field-required` — documentation de champs frontmatter
- `.pillar-footer` avec `.pillar-mini-card` (et variante `.inactive`) — bande de 5 mini-cartes sous la ligne de flottaison sur certaines slides de contenu
### Navigation et méta
- `goToSlide(N)` est défini dans le script mais n’est appelé nulle part avec des numéros codés en dur (seulement via l’arithmétique `currentSlide` dans `nextSlide`/`prevSlide` et les handlers clavier). La renumérotation est donc plus simple que dans les decks avec TOC. **Cependant**, si tu AJOUTES une slide TOC avec `onclick="goToSlide(N)"`, tu assumes la charge de mise à jour lors des renumérotations — note-le dans Learnings.
- `totalSlides` est auto-calculé depuis le DOM (`document.querySelectorAll('[data-slide]').length`) — pas de mise à jour manuelle.
- La barre de progression (`#progress`) et le compteur (`#slideCounter`) se mettent à jour automatiquement avec `currentSlide / totalSlides`.
### Mascottes globales
- **Mascotte en coin gauche uniquement** : `` placée juste avant `.navigation`. Le deck n’a plus de mascotte en coin droit.
- La règle CSS `.header-logo.right` (vers la ligne ~79) est désormais morte — aucun élément ne l’utilise. Inoffensif ; ne la retirer que lors d’un nettoyage volontaire.
## Workflow
### Étape 1 : lire l’état actuel
Avant toute modification, lis `presentation/claude-code-best-practice/index.html` et confirme :
- Nombre total actuel de slides (49 attendu sauf évolution du deck)
- Numérotation `data-slide` actuelle contiguë (1..N)
- Affectations `data-level` actuelles
- Présence éventuelle de nouvelles références `goToSlide(N)` codées en dur depuis la dernière mise à jour des Learnings
Ne fais PAS confiance aux nombres de ce fichier d’agent sans vérifier — le deck évolue.
### Étape 2 : appliquer les changements
- **Changements de contenu** : modifier le HTML des slides dans les `
` existants.
- **Nouvelles slides** : insérer de nouveaux divs avec une numérotation `data-slide` séquentielle correcte.
- **Réordonnancement** : déplacer les divs de slide ET renuméroter TOUS les attributs `data-slide` séquentiellement. Si des appels `goToSlide(N)` codés en dur existent, les mettre à jour aussi.
- **Changements de niveau** : mettre à jour les attributs `data-level` sur les séparateurs de section. Si tu ajoutes une nouvelle clé de niveau, l’ajouter aussi à la map `LEVEL_LABELS`.
- **Style** : respecter les motifs CSS existants. Préférer les classes réutilisables aux styles inline.
- **Imports depuis un autre deck** : lorsque tu importes des slides de `presentation-claude-gemini` ou `presentation-vibe-coding`, lis le contenu source textuellement, puis restyle-le avec les classes de CE deck — ne copie jamais le CSS d’autres decks.
### Étape 3 : vérifier l’intégrité
Après modification, confirmer :
1. Tous les `data-slide` sont séquentiels (1, 2, 3, …), sans trous ni doublons.
2. Chaque valeur `data-level` est une clé de `LEVEL_LABELS` (ou a été ajoutée).
3. Aucun `.level-badge` n’est codé en dur dans le HTML des slides (il est injecté par JS).
4. La slide de clôture reflète l’identité actuelle ("Claude Code Best Practice", pas l’ancien cadrage GDG).
5. Aucun branding spécifique événement n’est revenu (pas de "GDG", "Kolachi", date d’événement sur la slide titre sauf intention).
6. Les commentaires inline `` restent synchronisés avec `data-slide`.
### Étape 4 : auto-évolution (après chaque exécution)
Ajoute une courte entrée à la section **Learnings** si tu :
- Découvres une nouvelle convention non documentée
- Rencontres un cas limite utile
- Importes des slides depuis un autre deck (noter deck source + plage)
- Diverges volontairement des conventions du deck GDG
Garde les entrées concises. L’objectif est de synchroniser la connaissance de cet agent avec le fichier réel.
## Exigences critiques
1. **Numérotation séquentielle** : après tout ajout/suppression/réordonnancement, renuméroter TOUTES les slides séquentiellement. Vérifier les appels `goToSlide(N)` avant de terminer.
2. **Intégrité des niveaux** : chaque attribut `data-level` doit avoir une entrée correspondante dans `LEVEL_LABELS`.
3. **Préserver l’identité agnostique de l’événement** : ce deck ne doit PAS reprendre de branding événementiel (GDG, dates de conférence, co-présentateurs verrouillés à un événement). Si une slide est intrinsèquement liée à un événement, la signaler plutôt que l’importer.
4. **Respecter les motifs existants** : réutiliser les classes (`.analogy-box`, `.trigger-box`, etc.) plutôt qu’en inventer.
5. **Langage simple avec analogies** : commencer par les analogies. L’exemple weather-reporter, "Claude's brain" et "pocket rulebook" sont la voix signature du deck — les préserver.
## Résumé de sortie
Après les changements, rapporte à l’utilisateur :
- Slides ajoutées / supprimées / modifiées / renumérotées
- Nombre total actuel de slides
- Affectations `data-level` actuelles (ou noter si inchangées)
- Écarts aux conventions précédentes (et pourquoi)
- Éléments hors périmètre remarqués mais volontairement non touchés
## Learnings
_Les constats des exécutions précédentes sont enregistrés ici. Ajouter de nouvelles entrées sous forme de puces. Rester concis._
- **2026-04-30 création de l’agent depuis `presentation-claude-gemini`** : créé quand l’utilisateur a copié le deck GDG vers `presentation/claude-code-best-practice/` pour en faire le deck canonique réutilisable. Les 25+ learnings datés de l’agent source n’ont pas été copiés volontairement, car ils décrivent surtout journey-bar, rebuild weather-reporter et redesigns propres à l’autre deck.
- **2026-04-30 renommage + découplage Gemini (53 → 49 slides)** : rebranding depuis "Claude Code & Gemini CLI" vers "Claude Code Best Practice" ; titre, commentaire slide 1, sous-titre, badge, favicon et mascotte ont été alignés. Les slides de comparaison Gemini finales ont été supprimées et la slide "Thank you" renumérotée.
- **2026-04-30 mentions Gemini orphelines gardées** : les mentions de Gemini sur les slides liées aux modèles restent des comparaisons illustratives, pas du branding événementiel. Les conserver sauf demande explicite.
- **2026-04-30 éléments de code mort signalés** : `.header-logo.right` et la clé `'commands'` dans `LEVEL_LABELS` sont inoffensifs. Les mentionner si un nettoyage CSS/JS est demandé.
- **2026-04-30 pas de journey bar** : ce deck utilise uniquement des level badges inline. Ne pas importer la journey bar du deck GDG.
- **2026-04-30 pas d’appels `goToSlide(N)` codés en dur** : renumérotation plus simple. Si une TOC est ajoutée, documenter la nouvelle charge de maintenance.
- **2026-04-30 suppression de l’intro collègue (49 → 48 slides)** : slide co-présentateur supprimée, renumérotation par sentinelles, distribution `data-level` inchangée.
- **2026-04-30 drift des commentaires `` corrigé** : les commentaires doivent rester synchronisés avec `data-slide` lors de toute future renumérotation.
- **2026-04-30 H1 de slide 1 renommé en "Claude Code Best Practice"** : l’utilisateur a confirmé que toutes les surfaces de slide 1 doivent porter la même identité.
- **2026-04-30 surfaces d’identité finales** : `
`, commentaire, H1, sous-titre, badge GitHub et favicon convergent vers Claude Code Best Practice. La répétition "Claude Code" dans le sous-titre est normale.
- **2026-04-30 slide "Models are stateless" insérée en position 10** : dessin en HTML/CSS inline, pas d’asset PNG. Attention au remplacement par sentinelles lors d’insertions.
- **2026-04-30 correction de cadrage stateless** : retirer les formulations "new session" / "each conversation starts fresh" ; le point est que chaque tour/API call est stateless dans une même conversation.
- **2026-04-30 vocabulaire "turn" et "inference"** : d’abord défini sur slide 10, puis déplacé vers slide 14 où le diagramme rend les primitives visibles. Règle : placer les définitions là où la preuve visuelle existe.
- **2026-04-30 annotation de comptage slide 14** : "In the diagram above: Turn × 1 · Inference × 2" est scoped au diagramme, pas une vérité générale.
- **2026-05-07 slide teaser cheval insérée en position 9** : slide "A horse. A model." avec SVG simplifié, sans harnais ni callouts. Vérifier les regex de comptage pour exclure les règles CSS `.slide[data-slide="1"]`.
- **2026-04-30 note étymologique ajoutée à la slide Horse Harness** : Old French `harneis` comme footnote discrète. Motif pédagogique utile pour renforcer une analogie.