---
name: pfe-rapport-generator
description: >
  Use this skill when the user wants to create, regenerate or polish a complete
  PFE / Mastère / Rapport de fin d'études PDF. Triggers: "génère mon rapport
  PFE", "crée le PDF de mon mémoire", "mets en forme mon PFE GMAO", "transforme
  mes notes en rapport complet", "améliore mon ancien PFE 2013 en PDF
  jury-ready", "génère un rapport web et mobile", or any mention of "PFE",
  "mémoire", "soutenance", "rapport de stage". This skill produces a full
  professional 80–120 page PDF following the exact Tunisian/French academic
  standard.
---

# PFE Rapport Generator – Générateur Automatique de Rapport de Mastère

## Structure PFE Standard (identique à ton PFE 2013 + Slideshare)

1. Page de garde (avec logos, jury, date)
2. Dédicace
3. Remerciements
4. Résumé (français + anglais)
5. Sommaire
6. Liste des figures
7. Liste des tableaux
8. **Introduction Générale**
9. **Chapitre 1** : Cadre général / Contexte / État de l’art
10. **Chapitre 2** : Analyse des besoins (fonctionnels & non-fonctionnels + Use-cases)
11. **Chapitre 3** : Conception (UML, diagrammes de classes, états, séquence…)
12. **Chapitre 4** : Réalisation (technologies, architecture 3-tiers, interfaces)
13. **Chapitre 5** : Tests & Validation (captures d’écran, tableaux de tests)
14. Conclusion générale + Perspectives
15. Bibliographie
16. Annexes

## Comment utiliser ce skill

**Exemples de prompts :**
- "Utilise le skill PFE pour régénérer mon ancien PDF de GMAO 2013 en version propre"
- "Crée un nouveau rapport PFE complet à partir de mes notes sur l’application web et mobile"
- "Transforme ce Slideshare en rapport PDF jury-ready"
- "Améliore mon PFE : meilleure mise en page, TOC automatique, liste des figures"

**Workflow Avancé (La Pipeline Parfaite) :**
1. **Extraction (`markitdown`)** : Le skill analyse les notes brutes, images, ou anciens PDF via `python -m markitdown <fichier>`.
2. **Rédaction Markdown/JSON** : Il rédige le contenu massif par chapitre sous format JSON structuré (`data.json`) selon le modèle `templates/rapport_schema.json`, en respectant le lexique académique (`references/design_guidelines.md`).
3. **Génération DOCX (`docx-js`)** : Il compile le document Word complet grâce au script fourni : `node scripts/build_pfe.js data.json`.
4. **Conversion PDF (`soffice`)** : Il convertit le rapport Word en PDF définitif via `python scripts/office/soffice.py --headless --convert-to pdf rapport_final.docx`.
5. **Livraison** : Appelle l'outil `present_files` pour livrer le document prêt à imprimer (avec TOC, marges académiques et polices correctes).

## Antigravity Skill Powers (Intégration Avancée)

Ce skill est nativement capable d'exploiter les outils **Google Antigravity** pour un rapport "Perfecto" :

### 1. Capture Automatisée (browser_subagent)
Si le projet est une application web accessible localement ou en ligne :
- **Action** : Lancer un `browser_subagent` pour naviguer dans l'application.
- **Objectif** : Prendre des captures d'écran des interfaces clés (Login, Dashboard, Formulaires).
- **Rangement** : Sauvegarder les images dans un dossier `screenshots/` et les injecter dans le `data.json`.

### 2. Design de Branding (generate_image)
Si le logo de l'institution ou un diagramme illustratif manque :
- **Action** : Utiliser `generate_image` avec un prompt précis.
- **Objectif** : Créer des visuels premium pour la page de garde.

### 3. Diagrammes Techniques (Diagram Power)
Pour les schémas UML et architectures (indispensables en PFE) :
- **Action** : Utiliser la logique du skill `diagram-generator` pour coder un **SVG** (Sequence, Class, ERD, Use Case, C4, Flowchart).
- **Style** : Appliquer les thèmes "Modern Dark" ou "Clean Light".
- **Workflow SVG-to-PNG** : 
    1. Sauvegarder le SVG dans un fichier `.html`.
    2. Utiliser `browser_subagent` pour ouvrir le fichier et prendre une capture d'écran de l'élément SVG.
    3. Sauvegarder en `diagrams/schema_nom.png`.
- **Rangement** : Injecter le chemin dans le `data.json` sous le type `diagram`.

### 4. "Perfect Docs" Standards (@docx)
Le skill suit rigoureusement les standards de perfection du skill officiel `docx` :
- **Typographie** : Utilisation de **Arial 12pt** (universel) ou **Times New Roman** (académique).
- **Tableaux** : Rendu à double-largeur (`columnWidths` + cell `width`) pour une compatibilité parfaite avec Google Docs et Word.
- **Structure XML** : Overrides des IDs de titres (`Heading1`, `Heading2`) pour une Table des Matières (TOC) native et fonctionnelle.

---

## Workflow de Production Professionnel

### 1. Analyse profonde du projet source
Le skill commence par une phase d'analyse critique du projet (code, documentation, anciens rapports). 
- **Outil contextuel** : Utiliser `pdf-reading` pour extraire la structure technique des rapports de référence.
- **Outil technique** : Utiliser `markitdown` pour convertir les fichiers complexes en Markdown intelligible.
- **Objectif** : Identifier l'architecture, les cas d'utilisation, et les choix technologiques sans invention.

### 2. Rédaction structurée (JSON/Drafting)
Une fois les notes extraites, le skill génère un fichier JSON massif (`data.json`) respectant rigoureusement `templates/rapport_schema.json`.
- **Dédicace & Remerciements** : Personnalisés sur demande ou laissés en placeholders.
- **Introduction & État de l'art** : Rédigés avec un ton académique neutre.
- **Analyse & Conception** : Basées sur le code source réel (UML déduit logiquement).
- **Réalisation & Tests** : Descriptions techniques précises des environnements et outils.

### 3. Compilation DOCX
Le fichier JSON est ensuite compilé en un document Word (`.docx`) via le moteur Node.js :
`node scripts/build_pfe.js data.json`
Le script assure :
- Mise en page A4, marges de 2.5cm, double interligne.
- Police Times New Roman 12pt (standard académique).
- Sommaire automatique cliquable.
- Numérotation des pages et en-têtes élégants.

### 4. Conversion et Livraison
Si nécessaire, le DOCX est converti en PDF pour la soumission finale.
Le skill livre les fichiers finaux via l'outil `present_files`.

## Directives Anti-Hallucination
> [!IMPORTANT]
> - Ne JAMAIS inventer des fonctionnalités qui ne sont pas présentes dans le code source ou les notes fournies.
> - Si une information technique manque (ex: détails d'un serveur spécifique), demander à l'utilisateur au lieu de supposer.
> - Respecter la vérité technologique : si le projet est en React, ne pas parler d'Angular dans les chapitres de réalisation.

## Aide-mémoire des Outils
- **Analyse PDF** : `python scripts/read_pdf.py <file>`
- **Captures** : `browser_subagent` -> `screensshots/dashboard.png`
- **Branding** : `generate_image` -> `assets/logo.png`
- **Compilation** : `node scripts/build_pfe.js data.json`