--- name: release-notes description: > Génère des notes de release HTML orientées utilisateurs finaux. Transforme les commits techniques en descriptions accessibles sans jargon. allowed-tools: [Bash, Read, Write, Grep, Glob, AskUserQuestion] model: sonnet --- # Release Notes Skill Génère un document HTML orienté utilisateurs finaux, sans jargon technique. ## Variables ```bash REPORT_PATH=".claude/reports" TARGET="$ARGUMENTS" # Format: "branche-source branche-cible [nom-release]" ``` ## Workflow ### Étape 0: Extraction et validation des arguments ```bash # Parser les arguments BRANCH_SOURCE=$(echo "$TARGET" | awk '{print $1}') BRANCH_TARGET=$(echo "$TARGET" | awk '{print $2}') RELEASE_NAME=$(echo "$TARGET" | awk '{print $3}') ``` **AVANT TOUTE EXÉCUTION**, vérifier que les arguments obligatoires sont fournis : 1. Si `$BRANCH_SOURCE` est manquant ou vide : - Lister les branches disponibles : `git branch -r --list 'origin/release/*' --list 'origin/feature/*' | head -10` - Utiliser `AskUserQuestion` pour demander la branche source - Question : "Quelle est la branche source à analyser ?" - Proposer les branches récentes de type `release/*` ou `feature/*` 2. Si `$BRANCH_TARGET` est manquant ou vide : - Utiliser `AskUserQuestion` pour demander la branche cible - Question : "Quelle est la branche de référence ?" - Options suggérées : `main`, `develop`, `master` **Ne pas continuer** tant que les deux arguments obligatoires ne sont pas fournis. Si `$RELEASE_NAME` n'est pas fourni, utiliser le nom de `$BRANCH_SOURCE` en retirant le préfixe "release/" ou "feature/". ### Étape 1: Validation des branches ```bash # Vérifier que les branches existent git rev-parse --verify $BRANCH_SOURCE git rev-parse --verify $BRANCH_TARGET # Vérifier qu'il y a des différences DIFF_COUNT=$(git rev-list --count $BRANCH_TARGET..$BRANCH_SOURCE) if [ $DIFF_COUNT -eq 0 ]; then echo "Aucune différence entre les branches" exit 0 fi echo "Commits à analyser: $DIFF_COUNT" ``` ### Étape 2: Collecte des commits ```bash # Récupérer tous les commits avec leur message complet git log $BRANCH_TARGET..$BRANCH_SOURCE --oneline --no-merges # Pour plus de contexte si nécessaire git log $BRANCH_TARGET..$BRANCH_SOURCE --pretty=format:"%h|%s|%b" --no-merges ``` ### Étape 3: Analyse et catégorisation Analyser chaque commit et le catégoriser selon son **impact utilisateur** : #### Catégories 1. **Nouveautés** (icône étoile) - Nouvelles fonctionnalités visibles par l'utilisateur - Nouveaux écrans, boutons, options - Mots-clés : feat, feature, ✨, 🚀, nouveau, ajout 2. **Améliorations** (icône flèche vers le haut) - Améliorations de fonctionnalités existantes - Meilleure ergonomie, rapidité - Mots-clés : improve, enhance, ♻️, ⚡, amélioration, optimisation, perf 3. **Corrections** (icône coche) - Bugs corrigés impactant l'utilisateur - Problèmes résolus - Mots-clés : fix, 🐛, correction, résolution, bug 4. **Sécurité** (icône bouclier) - si applicable - Améliorations de sécurité - Mots-clés : security, 🔒, sécurité #### Commits à IGNORER (ne pas inclure dans les notes) - `refactor:` - Refactorisation interne - `test:` / `✅` - Tests - `chore:` / `🔧` - Maintenance technique - `ci:` / `👷` - CI/CD - `docs:` / `📝` - Documentation technique (sauf si user-facing) - `style:` / `💄` - Formatage code - Commits de merge - Mises à jour de dépendances ### Étape 4: Rédaction des notes Pour chaque commit retenu, rédiger une description **orientée utilisateur** : **Règles de rédaction STRICTES :** 1. **ZÉRO jargon technique** - ❌ "Refactoring du composant UserController" - ✅ "Amélioration de la gestion de votre compte" - ❌ "Ajout d'un endpoint API REST" - ✅ "Nouvelle fonctionnalité disponible" 2. **Bénéfice utilisateur en premier** - ❌ "Ajout d'un cache sur les requêtes API" - ✅ "L'application est maintenant plus rapide" - ❌ "Optimisation des requêtes SQL" - ✅ "Les pages se chargent plus rapidement" 3. **Verbes d'action simples** - Vous pouvez maintenant... - Il est désormais possible de... - Nous avons corrigé... - Nous avons amélioré... 4. **Phrases courtes et claires** - Max 1-2 phrases par élément - Pas d'acronymes sans explication (pas de API, SQL, REST, etc.) 5. **Ton positif et professionnel** - Éviter les formulations négatives - Focus sur ce qui est possible/amélioré ### Étape 5: Génération du HTML Utiliser le template suivant avec CSS inline : ```html Notes de version - [RELEASE_NAME]

Quoi de neuf ?

Version [RELEASE_NAME]

[DATE du jour]

⭐ Nouveautés

📈 Améliorations

✅ Corrections

🔒 Sécurité

``` **Notes :** - Ne pas inclure les sections vides - Remplacer [RELEASE_NAME] par le nom de la release - Remplacer [DATE] par la date du jour au format "26 novembre 2025" ### Étape 6: Sauvegarde du fichier ```bash OUTPUT_FILE="$REPORT_PATH/release_notes_${RELEASE_NAME}.html" mkdir -p "$REPORT_PATH" ``` Utiliser le tool `Write` pour écrire le contenu HTML dans `$OUTPUT_FILE`. Afficher le résumé : ``` Notes de release générées : $OUTPUT_FILE Résumé : - X nouveautés - Y améliorations - Z corrections ``` ## Exemples de transformation | Commit technique | Note utilisateur | |------------------|------------------| | `✨ feat: implémenter cache Redis sur endpoint /api/users` | L'affichage de la liste des utilisateurs est maintenant plus rapide | | `🐛 fix: corriger validation email dans le formulaire d'inscription` | Nous avons corrigé un problème qui empêchait certaines adresses email d'être acceptées lors de l'inscription | | `⚡ perf: optimiser requêtes N+1 sur la page dashboard` | Le tableau de bord se charge maintenant plus rapidement | | `✨ feat: ajouter export CSV des factures` | Vous pouvez maintenant exporter vos factures au format Excel | | `🐛 fix: résoudre crash sur iOS 16 lors de l'upload` | Nous avons corrigé un problème qui pouvait faire fermer l'application lors de l'envoi de fichiers | ## Règles importantes 1. **ZÉRO jargon technique** - L'utilisateur final ne doit pas voir de termes comme "API", "refactoring", "backend", "cache", "endpoint", "requête" 2. **Bénéfice utilisateur** - Chaque item doit répondre à "Qu'est-ce que ça change pour moi ?" 3. **Ignorer l'invisible** - Ne pas mentionner les changements internes (tests, CI, deps, refactoring) 4. **Ton positif** - Utiliser un ton accueillant et positif 5. **Accessibilité** - HTML sémantique, contrastes suffisants, responsive 6. **Concision** - Max 1-2 phrases par item, pas de détails superflus