# agent_constraints.md # Généré automatiquement par prompt_injection.py # Ne pas modifier manuellement. ====================================================================== ## SECTION A — CATALOGUE DES LAYOUTS (pour The Designer) ====================================================================== #### Couverture & navigation `cover_split` (L01) — Rôles : accroche → Réservé au slide 1. Titre fort et accrocheur, sous-titre contextualisé. Pas de bullets. Message = raison d'être de la... `section_divider` (L02) — Rôles : transition → Slide de transition entre parties. Titre = nom de la section, percutant. Numéro de section bien visible. Pas de conte... `agenda` (L03) — Rôles : transition / contexte → Sommaire de la présentation. Items = titres des sections, pas des bullets de contenu. Présenter l'ossature narrative,... `content_marker` (L04) — Rôles : transition → Rappel de l'agenda en cours de présentation. current_index indique l'item actif (en orange). Identique à agenda en st... `end_slide` (L05) — Rôles : conclusion / next-steps → Dernier slide obligatoire. Titre = message de clôture fort. Next steps = 2-4 actions concrètes. Contact optionnel. #### Texte structuré `default_bullets` (L06) — Rôles : contexte / solution / preuve → Layout texte par défaut. Titre = So What affirmatif. Bullets L1 = arguments principaux, L2 = preuves/détails, L3 = ex... `two_cols_text` (L07) — Rôles : contexte / comparaison / solution → Deux colonnes de texte en parallèle. Idéal pour mise en contraste : Objectifs / Approche, Problème / Solution, Avant ... `key_message` (L08) — Rôles : accroche / solution / conclusion → Un seul message clé, occupant presque tout le slide. Style quote. Fond crème, guillemets décoratifs. Pas de bullets. ... `executive_summary` (L09) — Rôles : contexte / solution → Synthèse SCR en 3 blocs. Situation = état des lieux factuel. Complication = le problème ou la tension. Résolution = l... #### Données & KPIs `kpi_grid` (L10) — Rôles : preuve / contexte → Grille de KPIs. Chaque carte = 1 indicateur avec sa valeur et son contexte. La grille s'adapte automatiquement selon ... `big_stat` (L11) — Rôles : preuve / accroche → Un seul chiffre énorme, centré, pour un effet de choc. Utiliser pour un indicateur décisif qui mérite d'être seul sur... `comparison_table` (L12) — Rôles : preuve / comparaison → Tableau comparatif structuré. Header = noms des critères ou acteurs. Rows = lignes de données. Max 6 colonnes × 8 lig... `chart_callout` (L13) — Rôles : preuve → Graphique à gauche + encadré d'insight à droite. Le chart illustre, le callout conclut. Suivre la règle BCG : le mess... `benchmark` (L14) — Rôles : contexte / comparaison → Benchmark concurrents. Critères en lignes, acteurs en colonnes de barres. Max 4 acteurs. Utiliser pour positionner PR... #### Frameworks visuels `matrix_2x2` (L15) — Rôles : contexte / solution → Matrice 2×2 pour priorisation (impact/effort, urgence/importance…). Chaque item = une bulle positionnée par coordonné... `pyramid` (L16) — Rôles : contexte / solution → Pyramide hiérarchique. Niveau 1 = sommet (plus petit, plus rare/premium). Niveau N = base (plus large, plus fondament... `circular_diagram` (L17) — Rôles : contexte / solution → Diagramme circulaire avec logo PR central. Idéal pour écosystème, dimensions complémentaires, cycle vertueux. Légende... `from_to` (L18) — Rôles : solution / contexte → Transformation FROM → TO. Chaque paire = un changement concret. Bloc gauche optionnel pour contexte. Bloc jaune en ov... `boxes_grid` (L19) — Rôles : preuve / contexte → Matrice analytique dense. Colonne label (wheat yellow) + colonne KPI + 3-4 colonnes de contenu. Pour analyse multi-cr... #### Process & roadmap `numbered_steps` (L20) — Rôles : solution / methodologie → Étapes numérotées verticalement. Idéal pour méthodologie, bonnes pratiques, checklist d'implémentation. Titre de step... `process_arrow` (L21) — Rôles : solution / next-steps → Chevrons horizontaux pour une roadmap phasée. Étape active = dark blue. Dernier chevron = triangle fermé (→). Bullets... `gantt_timeline` (L22) — Rôles : next-steps / solution → Gantt simplifié. Workstreams à gauche (optionnel), barres colorées sur la timeline. Une couleur par workstream. Dates... `yearly_timeline` (L23) — Rôles : contexte → Timeline horizontale de jalons annuels. Idéal pour historique ou prospective. Jalon actif en rose. Labels années au-d... `phases_timeline` (L24) — Rôles : solution / methodologie → Timeline en phases horizontales contiguës. Largeur proportionnelle à la durée. Chaque phase = un bandeau coloré + pér... #### Acteurs & décision `org_chart` (L25) — Rôles : acteurs / contexte → Organigramme hiérarchique. Niveau 1 = leadership (dark blue). Nœuds distribués automatiquement. Max 4 niveaux, max 20... `raci_table` (L26) — Rôles : acteurs / solution → Matrice RACI. Tâches en lignes, acteurs en colonnes header (R/A/C/I). R = Responsible (fait), A = Accountable (décide... `decision_tree` (L27) — Rôles : decision / solution → Arbre de décision binaire. Question centrale → 2 branches YES/NO → 2 options par branche. Branche recommandée en rose... `recommendation_card` (L28) — Rôles : solution / decision / next-steps → Carte de recommandation unique et cadrée. Sidebar gauche jaune = numéro + titre court + résumé + CTA. Corps droit = h... ====================================================================== ## SECTION B — RÈGLES DE SÉQUENÇAGE (pour The Designer) ====================================================================== ### Règles de fluidité - Maximum 2 layouts texte consécutifs : `default_bullets`, `two_cols_text` - Maximum 2 tableaux consécutifs : `comparison_table`, `benchmark`, `raci_table`, `boxes_grid` - Après 3 slides denses → intercaler une respiration : `big_stat`, `key_message`, `section_divider` - Jamais 2 `section_divider` consécutifs - Le dernier slide de contenu avant `end_slide` doit être narratif (pas un tableau, pas un gantt) ### Règles de choix de layout - 1 seul chiffre décisif → `big_stat` (jamais `kpi_grid` avec 1 item) - 2 à 6 indicateurs chiffrés → `kpi_grid` - Transformation conceptuelle (avant/après) → `from_to` (pas `two_cols_text`) - Plus de 4 étapes avec timing → `process_arrow` ou `phases_timeline` (pas `numbered_steps`) - Recommandation unique et précise → `recommendation_card` - Données à comparer sur plusieurs critères avec plusieurs acteurs → `benchmark` - Données à comparer en tableau structuré → `comparison_table` - Si le contenu ne rentre dans aucun layout spécialisé → `default_bullets` - Citation ou message à marteler seul → `key_message` - Organigramme de gouvernance → `org_chart` - Responsabilités par rôle → `raci_table` ### Règles de quantité - Présentation 20 min → 10 à 15 slides max - Présentation 10 min → 6 à 10 slides max - Fusionner si > 15 slides : regrouper les slides proches thématiquement - Un `###` du Markdown avec un seul chiffre fort → envisager `big_stat` séparé - Un `##` du Markdown = 1 `section_divider` (sauf présentation < 6 slides) ====================================================================== ## SECTION C — PATTERNS NARRATIFS (pour The Designer) ====================================================================== ### Pattern "Problem → Solution → Proof" Adapté aux présentations de recommandation stratégique. ``` cover_split executive_summary (synthèse SCR dès le début) section_divider ("Le problème") big_stat (chiffre choc) default_bullets ou comparison_table section_divider ("Notre réponse") from_to ou numbered_steps kpi_grid ou chart_callout (preuve que ça marche) recommendation_card (ce qu'on demande) end_slide ``` ### Pattern "Roadmap Deck" Adapté aux présentations de planification / lancement de projet. ``` cover_split executive_summary (où on va et pourquoi) kpi_grid (état des lieux chiffré) phases_timeline ou gantt_timeline numbered_steps (comment on s'organise) org_chart ou raci_table (qui fait quoi) recommendation_card (décisions à prendre) end_slide ``` ### Pattern "Data Storytelling" Adapté aux présentations de revue de performance ou data governance. ``` cover_split big_stat (chiffre choc d'entrée) default_bullets (contexte et enjeux) kpi_grid (panorama des indicateurs) chart_callout (analyse d'un graphique clé) from_to (implication / transformation attendue) yearly_timeline (historique ou prospective) end_slide ``` ### Pattern "Executive Briefing" Adapté aux présentations courtes (< 10 slides) pour un CODIR. ``` cover_split executive_summary key_message (le So What en 1 slide) kpi_grid ou big_stat recommendation_card end_slide ``` ### Règles d'assemblage des patterns - Les patterns sont des points de départ, pas des contraintes rigides - Hybrider 2 patterns est possible si le contenu le justifie - Toujours préserver : cover_split en premier, end_slide en dernier - Les section_dividers sont optionnels pour les patterns courts (< 8 slides) ====================================================================== ## SECTION D — SCHÉMAS YAML (pour The Encoder) ====================================================================== ### `cover_split` (L01) **Requis :** titre **Optionnels :** sous_titre, accroche **Contraintes :** titre : max 70 caractères sous_titre : max 80 caractères **Exemple minimal :** ```yaml layout: cover_split titre: "Votre titre affirmatif" sous_titre: "Présentation au CODIR — juin 2026" ``` ### `section_divider` (L02) **Requis :** titre, numero_section **Optionnels :** image **Contraintes :** titre : max 60 caractères **Exemple minimal :** ```yaml layout: section_divider titre: "Votre titre affirmatif" numero_section: 1 ``` ### `agenda` (L03) **Requis :** titre, items **Contraintes :** items : min = 2 items : max = 6 item_schema : requis: numero, titre | optionnels: presentateur **Exemple minimal :** ```yaml layout: agenda titre: "Votre titre affirmatif" items: - numero: 1 titre: "Contexte et enjeux" - numero: 2 titre: "Notre proposition" ``` ### `content_marker` (L04) **Requis :** items, current_index **Contraintes :** items : min = 2 items : max = 6 **Exemple minimal :** ```yaml layout: content_marker titre: "Votre titre affirmatif" current_index: 2 ``` ### `end_slide` (L05) **Requis :** titre **Optionnels :** sous_titre, message, next_steps, contacts **Contraintes :** titre : max 70 caractères next_steps : max = 4 **Exemple minimal :** ```yaml layout: end_slide titre: "Votre titre affirmatif" message: "Merci pour votre attention" next_steps: - texte: "Valider le modèle — juillet" niveau: 1 ``` ### `default_bullets` (L06) **Requis :** titre, bullets **Optionnels :** sous_titre **Contraintes :** bullets : min = 1 bullets : max = 10 bullet_l1 : max = 5 bullet : max 120 caractères **Exemple minimal :** ```yaml layout: default_bullets titre: "Votre titre affirmatif" bullets: - texte: "Premier argument clé" niveau: 1 - texte: "Détail ou preuve" niveau: 2 ``` ### `two_cols_text` (L07) **Requis :** titre, left, right **Optionnels :** sous_titre **Contraintes :** left_schema : requis: titre, contenu right_schema : requis: titre, contenu **Exemple minimal :** ```yaml layout: two_cols_text titre: "Votre titre affirmatif" left: titre: "Titre colonne gauche" contenu: "Texte de la colonne gauche..." right: titre: "Titre colonne droite" contenu: "Texte de la colonne droite..." ``` ### `key_message` (L08) **Requis :** message **Optionnels :** auteur, fonction **Contraintes :** message : max 220 caractères auteur : max 60 caractères **Exemple minimal :** ```yaml layout: key_message titre: "Votre titre affirmatif" message: "Le message clé en une phrase forte." ``` ### `executive_summary` (L09) **Requis :** titre, situation, complication, resolution **Optionnels :** sous_titre **Contraintes :** situation : max 300 caractères complication : max 300 caractères resolution : max 300 caractères **Exemple minimal :** ```yaml layout: executive_summary titre: "Votre titre affirmatif" situation: "État des lieux factuel..." complication: "Le problème ou la tension..." resolution: "La réponse proposée..." ``` ### `kpi_grid` (L10) **Requis :** titre, items **Optionnels :** sous_titre **Contraintes :** items : min = 2 items : max = 6 item_schema : requis: titre, valeur | optionnels: sous_titre, couleur **Exemple minimal :** ```yaml layout: kpi_grid titre: "Votre titre affirmatif" items: - titre: "Indicateur 1" valeur: "85%" sous_titre: "Contexte de la valeur" - titre: "Indicateur 2" valeur: "+25%" ``` ### `big_stat` (L11) **Requis :** titre, valeur **Optionnels :** sous_titre, label, source **Contraintes :** valeur : max 10 caractères label : max 80 caractères source : max 60 caractères **Exemple minimal :** ```yaml layout: big_stat titre: "Votre titre affirmatif" valeur: "2 400" label: "jours/homme de réconciliation par an" source: "Estimation interne 2026" ``` ### `comparison_table` (L12) **Requis :** titre, headers, rows **Optionnels :** sous_titre, col_widths, highlight_col **Contraintes :** headers : min = 2 headers : max = 6 rows : min = 1 rows : max = 8 header : max 30 caractères cell : max 60 caractères **Exemple minimal :** ```yaml layout: comparison_table titre: "Votre titre affirmatif" headers: - "Critère" - "Option A" - "Option B" rows: - ["Coût", "Élevé", "Moyen"] - ["Délai", "3 mois", "6 mois"] ``` ### `chart_callout` (L13) **Requis :** titre, chart_type, data, insight **Optionnels :** sous_titre, axis_x_label, axis_y_label, couleurs, titre_insight **Contraintes :** data : min = 2 data : max = 8 insight : max 200 caractères **Exemple minimal :** ```yaml layout: chart_callout titre: "Votre titre affirmatif" chart_type: bar data: - label: "T1" valeur: 40 - label: "T2" valeur: 65 insight: "La croissance s'accélère au T2 grâce au pilote." ``` ### `benchmark` (L14) **Requis :** titre, criteria, actors, scores **Optionnels :** sous_titre, couleurs_acteurs **Contraintes :** criteria : min = 2 criteria : max = 6 actors : min = 2 actors : max = 4 critere : max 40 caractères actor : max 20 caractères **Exemple minimal :** ```yaml layout: benchmark titre: "Votre titre affirmatif" criteria: - "Coût" - "Délai" actors: - "PR" - "Concurrent A" scores: - [80, 60] - [70, 85] ``` ### `matrix_2x2` (L15) **Requis :** titre, axis_x, axis_y, items **Optionnels :** sous_titre **Contraintes :** axis_schema : requis: label | optionnels: min_label, max_label items : min = 2 items : max = 8 item_schema : requis: label, x, y | optionnels: taille, couleur **Exemple minimal :** ```yaml layout: matrix_2x2 titre: "Votre titre affirmatif" axis_x: label: "Effort" axis_y: label: "Impact" items: - label: "Initiative A" x: 20 y: 80 taille: 3 ``` ### `pyramid` (L16) **Requis :** titre, levels **Optionnels :** sous_titre **Contraintes :** levels : min = 3 levels : max = 5 level_schema : requis: label | optionnels: description, couleur **Exemple minimal :** ```yaml layout: pyramid titre: "Votre titre affirmatif" levels: - label: "Vision" description: "Callout explicatif optionnel" - label: "Stratégie" - label: "Opérations" ``` ### `circular_diagram` (L17) **Requis :** titre, segments **Optionnels :** sous_titre **Contraintes :** segments : min = 3 segments : max = 6 segment_schema : requis: label, description | optionnels: couleur, poids **Exemple minimal :** ```yaml layout: circular_diagram titre: "Votre titre affirmatif" segments: - label: "Segment 1" description: "Description courte" - label: "Segment 2" description: "Description courte" - label: "Segment 3" description: "Description courte" ``` ### `from_to` (L18) **Requis :** titre, pairs **Optionnels :** sous_titre, description, titre_summary, summary **Contraintes :** pairs : min = 2 pairs : max = 5 pair_schema : requis: from, to description : max 200 caractères summary : max 150 caractères **Exemple minimal :** ```yaml layout: from_to titre: "Votre titre affirmatif" pairs: - from: "Situation actuelle" to: "Situation cible" - from: "Processus manuel" to: "Processus automatisé" ``` ### `boxes_grid` (L19) **Requis :** titre, columns, rows **Optionnels :** sous_titre **Contraintes :** columns : min = 3 columns : max = 5 rows : min = 2 rows : max = 5 column : max 25 caractères row_schema : requis: label, kpi, contents **Exemple minimal :** ```yaml layout: boxes_grid titre: "Votre titre affirmatif" columns: - "Colonne 1" - "Colonne 2" rows: - label: "Ligne A" kpi: "xx%" contents: ["Contenu 1", "Contenu 2"] ``` ### `numbered_steps` (L20) **Requis :** titre, steps **Optionnels :** sous_titre **Contraintes :** steps : min = 2 steps : max = 6 step_schema : requis: numero, titre | optionnels: description **Exemple minimal :** ```yaml layout: numbered_steps titre: "Votre titre affirmatif" steps: - numero: 1 titre: "Première étape" description: "Ce que ça implique concrètement" - numero: 2 titre: "Deuxième étape" ``` ### `process_arrow` (L21) **Requis :** titre, phases **Optionnels :** sous_titre **Contraintes :** phases : min = 2 phases : max = 5 phase_schema : requis: label | optionnels: duree, actif, bullets, terminal **Exemple minimal :** ```yaml layout: process_arrow titre: "Votre titre affirmatif" phases: - label: "Phase 1" duree: "Juin" actif: false bullets: ["Livrable A", "Livrable B"] - label: "Phase 2" duree: "Juil-Sept" actif: true ``` ### `gantt_timeline` (L22) **Requis :** titre, period, workstreams **Optionnels :** sous_titre **Contraintes :** period_schema : requis: start, end workstreams : min = 1 workstreams : max = 5 workstream_schema : requis: tasks | optionnels: label **Exemple minimal :** ```yaml layout: gantt_timeline titre: "Votre titre affirmatif" period: start: "2026-06" end: "2026-12" workstreams: - label: "Workstream 1" tasks: - start: "2026-06" end: "2026-08" ``` ### `yearly_timeline` (L23) **Requis :** titre, milestones **Optionnels :** sous_titre **Contraintes :** milestones : min = 3 milestones : max = 6 milestone_schema : requis: annee, label | optionnels: description, actif **Exemple minimal :** ```yaml layout: yearly_timeline titre: "Votre titre affirmatif" milestones: - annee: "2024" label: "Lancement du projet" - annee: "2025" label: "Pilote Suède" actif: true - annee: "2026" label: "Déploiement nordique" ``` ### `phases_timeline` (L24) **Requis :** titre, phases **Optionnels :** sous_titre **Contraintes :** phases : min = 2 phases : max = 5 phase_schema : requis: label, periode | optionnels: items **Exemple minimal :** ```yaml layout: phases_timeline titre: "Votre titre affirmatif" phases: - label: "PREP" periode: "Juin" items: ["Brief équipe", "Setup outil"] - label: "PROD" periode: "Juil-Oct" items: ["Développement", "Tests"] ``` ### `org_chart` (L25) **Requis :** titre, root **Optionnels :** sous_titre **Contraintes :** node_schema : requis: label | optionnels: sous_label, children **Exemple minimal :** ```yaml layout: org_chart titre: "Votre titre affirmatif" root: label: "Data Gov Leader" children: - label: "Data Owner Finance" children: - label: "Data Steward" - label: "Data Owner Supply" ``` ### `raci_table` (L26) **Requis :** titre, roles, tasks **Optionnels :** sous_titre **Contraintes :** roles : min = 3 roles : max = 6 tasks : min = 2 tasks : max = 8 role : max 25 caractères task_schema : requis: label, raci **Exemple minimal :** ```yaml layout: raci_table titre: "Votre titre affirmatif" roles: - "Data Owner" - "Data Steward" - "IT" tasks: - label: "Définir les règles qualité" raci: ["A", "R", "C"] - label: "Exécuter les contrôles" raci: ["A", "R", "I"] ``` ### `decision_tree` (L27) **Requis :** titre, question, branches **Optionnels :** sous_titre **Contraintes :** question : max 80 caractères branches_schema : requis: True, False **Exemple minimal :** ```yaml layout: decision_tree titre: "Votre titre affirmatif" question: "Faut-il déployer le pilote en Suède ?" branches: yes: label: "Engagement DG confirmé" options: ["Démarrer en juin", "Allouer 0.5 ETP"] no: label: "Engagement DG manquant" options: ["Reporter à septembre", "Choisir une autre filiale"] ``` ### `recommendation_card` (L28) **Requis :** numero, titre, headline, bullets **Optionnels :** subtitle, resume, cta **Contraintes :** numero : min = 1 numero : max = 9 titre : max 30 caractères headline : max 40 caractères bullets : min = 2 bullets : max = 6 bullet : max 100 caractères resume : max 120 caractères cta : max 30 caractères **Exemple minimal :** ```yaml layout: recommendation_card titre: "Votre titre affirmatif" numero: 1 headline: "TROIS DÉCISIONS AVANT FIN JUIN" bullets: - texte: "Valider le modèle avec les DG locaux" niveau: 1 - texte: "Nommer les Data Owners" niveau: 1 - texte: "Allouer 0.5 ETP par filiale" niveau: 1 cta: "Décider en réunion du 30 juin" ```