PPT Builder (sujet → présentation)
Produisez une présentation en deux artefacts : un cahier des charges par diapositive (JSON) et — lorsque python-pptx est présent — un vrai fichier .pptx généré à partir de ce cahier. Le cahier des charges fait foi ; le rendu est mécanique.
Entrées
| Entrée | Requis | Défaut | Notes |
|---|---|---|---|
| topic | oui | — | ce que la présentation argumente ou explique |
| audience | non | 通用商务 (business général) | détermine le ton et la profondeur |
| slide_count | non | 10 | inclut la couverture et la clôture |
| style | non | 简洁商务 (business épuré) | ex. 学术答辩 (soutenance académique) / 融资路演 (levée de fonds) / 教学课件 (cours pédagogique) |
Si le sujet est manquant, demander UNE FOIS :
Veuillez donner le thème et l'usage de la présentation (à qui s'adresse-t-elle ?). Vous pouvez préciser : le nombre de diapos (défaut 10), le style (défaut business épuré), et si vous avez déjà un plan ou des fichiers.
Auto-vérification préalable
python -c "import pptx; print('pptx-ok')"
- Affiche
pptx-ok→ export .pptx activé (Étape 3a). - ModuleNotFoundError → chemin markdown (Étape 3b). Dites à l'utilisateur une ligne :
pip install python-pptxactive l'export .pptx direct la prochaine fois. N'installez PAS par vous-même sauf si l'utilisateur dit explicitement oui.
Flux de travail
Étape 1 : Plan
Structurez l'argument (pas les sujets) dans cet ordre : Accroche d'ouverture (une question ou un fait contre-intuitif) → Carte globale → 2–3 arguments centraux (chacun avec preuve/cas) → Réfutation ou limites → Appel à l'action. Attendu : un plan numéroté où chaque diapositive énonce UNE affirmation.
Étape 2 : Cahier des charges par diapositive
Écrivez slides_spec.json :
{
"deck_title": "...",
"slides": [
{"title": "...", "bullets": ["<=18 caractères/ligne, max 5"], "notes": "Version parlée de l'intervention", "visual": "Indication graphique/écran/capture/blanc"}
]
}
Règles : titre ≤ 16 caractères et contenant une opinion (pas de mot vide comme "Introduction") ; les notes doivent être des phrases complètes que l'on peut lire à voix haute.
Étape 3a : Rendu .pptx (pptx disponible)
python "<skill-dir>/scripts/make_pptx.py" slides_spec.json deck.pptx
Attendu : exit 0 et wrote deck.pptx (N slides). Exit 3 signifie python-pptx manquant → revenir à l'étape 3b et expliquer pourquoi. Exit 2 signifie spécification invalide — lire l'erreur affichée, corriger slides_spec.json, relancer.
Étape 3b : Livrable de repli
Émettez deck_outline.md : H1 titre de la présentation, H2 par diapositive avec les puces et la note du présentateur sous chacune. L'utilisateur peut copier-coller dans n'importe quel outil.
Étape 4 : Auto-vérification avant remise
Vérifiez : chaque diapositive ne traite qu'un seul argument ; pas plus de 5 puces ; chaque diapositive a une indication visuelle concrète ; les notes ont un nombre de mots suffisant pour la durée cible (environ 1 minute/diapositive). Corrigez les violations dans la spécification et re-générez plutôt que de rafistoler le texte.
Gestion des erreurs
| Symptôme | Cause probable | Action |
|---|---|---|
| le script sort avec 2 en listant la diapositive N | violation du schéma de la spécification | corriger les champs de cette diapositive selon le modèle de l'Étape 2 |
| le script sort avec 3 | python-pptx absent | passer à l'Étape 3b, proposer l'indication pip |
| les puces dépassent 18 caractères | plan trop dense | diviser la diapositive en deux, re-générer |
| l'utilisateur veut son modèle d'entreprise | style hors scope pour v1 | livrer la spécification + outline.md pour modification manuelle |
Standard de livraison
Succès = soit deck.pptx (ouvrable, N diapos correspondant à la spécification) ou deck_outline.md, PLUS slides_spec.json, les trois chemins signalés avec le nombre de diapos. Tout le reste n'est pas terminé — dites-le clairement.
Références
scripts/make_pptx.py— exécutez-le (ne le lisez pas) ; valide la spécification puis la rend.