--- name: cv-adalan description: "Rédige le CV d'un(e) consultant(e) ou d'un(e) freelance adalan aux couleurs de la charte, en PowerPoint (la trame officielle), en PDF A4 ou en page web responsive, en français, en anglais ou bilingue : couverture, synthèse (parcours, compétences, expertise IA, toutes les missions), zoom sur les missions, présentation d'adalan. Part des éléments fournis (CV Word ou PDF, profil LinkedIn, notes), n'invente rien, et produit le fichier avec un script à partir d'un même contenu. À utiliser dès qu'on demande un CV adalan, en PowerPoint, en PDF ou en HTML, un dossier de compétences, une fiche consultant, un profil à envoyer à un client ou à joindre à une proposition commerciale ou à un appel d'offres, la mise au format adalan d'un CV existant ou sa traduction en anglais, même sans parler de trame ni de modèle." compatibility: "Demande Python 3 et de pouvoir lire et écrire des fichiers ; le paquet python-pptx pour le PowerPoint (uv l'installe à la volée) ; un navigateur de la famille Chromium (Chrome, Chromium, Edge ou celui de Playwright) pour le PDF. LibreOffice, s'il est installé, sert à l'aperçu du PowerPoint, avec les polices de assets/polices installées." metadata: author: adalan version: "4.0" --- # CV adalan Le CV d'un(e) consultant(e) ou d'un(e) freelance au format adalan, dessiné d'après la charte graphique d'adalan, prêt à envoyer à un client ou à joindre à une proposition. L'agent rédige le contenu dans un fichier JSON ; `scripts/remplir_cv.py` en tire le fichier, dans le format que donne son extension. On ne part jamais d'une page blanche, et on ne modifie pas la trame à la main. | Format | Extension | Pour quoi | Mise en page | |---|---|---|---| | PowerPoint | `.pptx` | Un CV à retoucher, ou à intégrer à un dossier PowerPoint | La trame officielle, en slides 16:9 | | PDF | `.pdf` | Le CV à envoyer tel quel ou à joindre à une réponse | A4 portrait : bandeau et synthèse en page 1, zoom ensuite, « À propos » en dos de couverture | | Page web | `.html` | Le CV à ouvrir dans un navigateur, sur ordinateur ou sur mobile | Un seul fichier, sans appel extérieur ; un bouton l'enregistre en PDF | Les trois partent du même JSON et suivent les mêmes règles : mêmes parties, même découpage des titres de mission, mêmes libellés en gras. ## Ce que contient le CV | Partie | Contenu | |---|---| | Couverture | Sur fond encre : la date, le prénom en grand, le titre, les domaines et l'ancienneté | | Synthèse | En-tête (domaines, prénom et titre, accroche), puis trois cartes : parcours professionnel et encart d'expertise IA, profil (compétences et outils), toutes les missions en fil chronologique | | Zoom, une ou plusieurs slides | Le détail des missions sur deux colonnes de cartes, puis la formation et les langues | | À propos d'adalan | Fixe : le script l'écrit dans la langue du CV, d'après le skill `presentation-adalan` | | Demande | Option du script | Résultat | |---|---|---| | CV en français | `--langue fr` | Couverture, synthèse, zoom, « À propos » | | CV en anglais : client ou appel d'offres international | `--langue en` | Les mêmes parties en anglais, « About us » en dernier, aucun texte français | | CV bilingue, sur demande explicite | `--langue bilingue` | La version française, « À propos », puis la version anglaise | | « Le CV et sa traduction » | `--langue fr`, puis `--langue en` | Deux fichiers séparés : c'est ce qui s'envoie à un client | ## Déroulé ### 1. Réunir la matière - Lire tout ce que l'utilisateur fournit : CV existant (Word, PDF), profil LinkedIn, notes, fiches de mission. - La langue et le format se déduisent de la demande quand c'est possible (un PDF à envoyer, un PowerPoint à retoucher, une page web à partager) ; sinon, les demander avant de rédiger. Plusieurs formats à la fois, si on le demande : le JSON reste le même. - Poser en un seul message les questions sur ce qui manque vraiment : dates d'une mission, chiffres, clients qu'on peut nommer, outils IA réellement utilisés, initiale du nom pour le nom du fichier. « Je ne sais pas » est une réponse : l'information reste absente du CV. ### 2. Rédiger le contenu Copier [assets/exemple.json](assets/exemple.json) dans le dossier de travail de l'utilisateur, sous le nom `cv-.json`, puis en remplacer tout le texte en suivant [references/contenu.md](references/contenu.md), qui décrit chaque champ, la zone où il va et la façon de l'écrire. - L'exemple (Camille, sociétés « Exemple ») est fictif : il n'en reste rien dans le CV. - La synthèse liste toutes les missions ; le zoom détaille les plus parlantes, avec exactement les mêmes titres et les mêmes dates. - Pour une version anglaise, écrire la clé `en` avec la même structure que `fr` : traduction fidèle, anglais britannique, mêmes chiffres. ### 3. Produire le fichier Depuis le répertoire du skill : ```bash uv run scripts/remplir_cv.py cv-camille.json --langue fr -o "CV_Camille_D - adalan - septembre 2026.pptx" uv run scripts/remplir_cv.py cv-camille.json --langue fr -o "CV_Camille_D - adalan - septembre 2026.pdf" uv run scripts/remplir_cv.py cv-camille.json --langue fr -o "CV_Camille_D - adalan - septembre 2026.html" ``` Sans uv : `python3 scripts/remplir_cv.py …`, après `pip install python-pptx` si le paquet manque (le PowerPoint seulement). Les chemins du JSON et du fichier produit sont ceux du dossier de travail de l'utilisateur. - Nom du fichier : `CV__ - adalan - ` et l'extension du format, avec ` - EN` en fin de nom pour la version anglaise : `CV_Camille_D - adalan - septembre 2026 - EN.pdf`. Sans initiale connue : `CV_Camille - adalan - …`. - Le PDF passe par un navigateur de la famille Chromium, que le script cherche seul (Chrome, Chromium, Edge, Brave, ou le Chromium de Playwright) ; la variable `CHROME` peut en donner le chemin. - Le fichier va dans le dossier de travail de l'utilisateur, jamais dans le dépôt des skills : un CV contient des données personnelles. - Le script s'arrête sur un JSON mal formé et dit quel champ corriger. ### 4. Contrôler 1. Traiter chaque point « À relire » du script : ordre des missions, titres différents entre la synthèse et le zoom, versions française et anglaise qui ne se correspondent pas, colonne probablement trop pleine (PowerPoint), texte d'exemple restant. Corriger le JSON et relancer. 2. Regarder le rendu du PDF : le script en donne le nombre de pages (trois pour l'exemple : synthèse, zoom, « À propos »). ```bash pdftoppm -png -r 60 "CV_Camille_D - adalan - septembre 2026.pdf" apercu/page ``` La synthèse doit tenir en page 1. Une carte passée en page 2 (le fil des missions, l'encart IA) se règle comme dans la trame : raccourcir les résumés anciens, retirer une ligne de compétences. La page HTML, elle, n'a rien à vérifier de plus : elle s'adapte à la largeur. 3. Regarder le rendu du PowerPoint. Avec LibreOffice : ```bash soffice --headless --convert-to pdf --outdir apercu "CV_Camille_D - adalan - septembre 2026.pptx" pdftoppm -png -r 80 "apercu/CV_Camille_D - adalan - septembre 2026.pdf" apercu/slide ``` Lire chaque image : pas de texte qui sort d'une carte, des colonnes de zoom équilibrées. Sans LibreOffice, le dire à l'utilisateur et lui demander d'ouvrir le fichier : l'estimation de la place faite par le script est approximative. Le fichier embarque ses polices (Mona Sans et Monaspace Neon, sous les noms adalan Sans, adalan Display, adalan Mono…) : PowerPoint les affiche sans rien installer. LibreOffice peut les ignorer et en substituer d'autres, plus larges ou plus étroites : avant l'aperçu, installer les fichiers de `assets/polices` (copie dans `~/.fonts` sous Linux, `~/Library/Fonts` sous macOS), sinon l'aperçu ne dit rien de la place. 4. Passer la vérification finale ci-dessous. ### 5. Rendre - Le chemin de chaque fichier, son format, sa langue et son nombre de slides ou de pages. - Ce qui manque et n'a pas été inventé : dates, chiffres, niveau de langue, outils IA. - Les choix faits : missions regroupées dans « Autres expériences », client décrit par son secteur, encart d'expertise renommé. ## Règles - **Rien d'inventé.** Ni expérience, ni chiffre, ni client, ni diplôme, ni certification, ni outil, ni niveau de langue qui ne vienne des éléments fournis. Un trou se signale, il ne se comble pas. - **Anonymisé.** Le prénom seul : ni nom de famille, ni coordonnées, ni adresse, ni âge, ni photo. - **Tout le parcours.** Toutes les expériences dans la synthèse, de la plus récente à la plus ancienne, jamais tronquées à quelques années. - **De l'air plutôt que tout dire.** Deux ou trois puces par bloc, une ligne par puce quand c'est possible. Quand la place manque, couper du texte ou ajouter une slide de zoom ; ne jamais réduire la police. - **Le style d'un CV.** Phrases nominales, verbes à l'infinitif dans les puces, chiffres concrets (budgets, volumes, équipes), le vocabulaire du métier de la personne. - **La voix d'adalan.** Le nom en minuscules, « Consultante experte » ou « Consultant expert » selon la personne, typographie française ; en anglais, les règles de la référence sur le style. - **La slide « À propos » ne se touche pas** dans un CV : le script l'écrit. Elle évolue dans le script, comme l'explique la fin de la référence. ## Cas particuliers - **Parcours très long.** Les missions anciennes gardent leur ligne dans la synthèse, avec un résumé raccourci ; dans le zoom, elles passent dans « Autres expériences ». - **Peu d'expériences.** Une seule slide de zoom, avec des blocs plus détaillés. - **Client confidentiel ou non cité par la source.** Le décrire par son secteur : « une banque de financement ». - **Aucun usage de l'IA dans la source.** Le demander ; faute de réponse, l'encart prend un autre titre (« Certifications et méthodes ») plutôt que d'inventer. - **Un autre format est demandé** (Word, CV spécifique à un client) : ce skill ne connaît que la mise en page adalan, en PowerPoint, PDF ou HTML ; le dire et proposer l'un des trois. - **Pas de navigateur Chromium pour le PDF.** Produire la page `.html`, l'ouvrir dans un navigateur et l'enregistrer en PDF (A4, arrière-plans graphiques activés), ou installer Chromium ; le dire à l'utilisateur. - **CV en ligne.** La page HTML porte des données personnelles et demande aux moteurs de ne pas l'indexer ; ne la publier nulle part sans l'accord de la personne. - **CV pour une proposition commerciale.** Produire un fichier par personne ; le skill `proposition-commerciale-adalan` les joint en annexe. ## Exemple **Demande :** « Voici le CV de Camille en PDF. Mets-le au format adalan en français, avec sa traduction pour l'appel d'offres de Banque X. » **Résultat attendu :** 1. Une question groupée : l'initiale du nom, les outils IA qu'elle utilise, les chiffres de sa dernière mission si le PDF ne les donne pas. 2. `cv-camille.json` avec les clés `fr` et `en`. 3. `CV_Camille_D - adalan - septembre 2026.pptx` et `CV_Camille_D - adalan - septembre 2026 - EN.pptx`, cinq slides chacun (deux slides de zoom). 4. Le rendu : les chemins, et « Budget de la mission 2019-2021 non précisé dans le CV source : laissé de côté ». ## Vérification finale - [ ] Plus rien de l'exemple : ni Camille (sauf s'il s'agit d'elle), ni « Exemple », ni ses missions. - [ ] Toutes les missions dans la synthèse, en ordre antichronologique ; le zoom reprend leurs titres et leurs dates à l'identique. - [ ] Rien d'inventé ; les trous sont dans le rendu. - [ ] Prénom seul, aucune coordonnée. - [ ] Aucun texte coupé ni colonne tassée sur l'aperçu ; sans aperçu, l'utilisateur est prévenu. - [ ] Le format demandé ; un PDF en A4 portrait, avec la synthèse en page 1. - [ ] Versions française et anglaise alignées : mêmes missions, mêmes chiffres, mêmes dates. - [ ] Nom de fichier conforme, fichier hors du dépôt des skills. ## Ressources - [references/contenu.md](references/contenu.md) : chaque champ du JSON, la zone où il va et comment l'écrire ; en fin de fichier, le lien entre la trame, la page web et les scripts. - [assets/exemple.json](assets/exemple.json) : un CV complet et fictif, en français et en anglais, à copier pour commencer. - `assets/trame-cv.pptx` : la trame, lue par le script. Ne pas la modifier pour un CV. - `assets/web/` : la feuille de style du PDF et de la page HTML (`cv.css`), avec le logo et les courbes de niveau qu'elle intègre. - `assets/polices/` : les polices du CV, en `.ttf` pour la trame et en `.woff2` pour la page, et leur licence (OFL). - `scripts/remplir_cv.py` : produit le CV à partir du JSON et signale ce qu'il faut relire ; `scripts/cv_web.py` écrit le PDF et la page HTML pour lui. - `scripts/dessiner_trame.py` et `scripts/preparer_polices.py` : redessinent la trame et préparent ses polices, pour faire évoluer le skill seulement ; la fin de la référence explique quand s'en servir.