Rédacteur de Description de PR
Lit le diff de la branche courante et rédige une description complète de pull request GitHub. Crée ou met à jour la PR avec une seule commande.
Style d'Écriture
Appliquer à toutes les descriptions de PR générées :
- Voix active. « Ajoute X » et non « X a été ajouté. »
- Temps présent pour le résumé (« Ajoute une couche de cache »), passé pour le contexte (« L'ancienne approche provoquait N requêtes par rendu »)
- Phrases courtes, une idée par puce
- Pas de tirets cadratins — utiliser une virgule ou un point à la place
- Pas de remplissage : « cette PR », « ce commit », « comme convenu »
- Les spécificités l'emportent sur les généralités : « réduit la latence p95 de 800 ms à 90 ms » est meilleur que « améliore les performances »
Étape 1 : Vérification de l'Environnement
Confirmer que gh est authentifié :
gh auth status
Si non authentifié : gh auth login et suivre les instructions.
Confirmer que le répertoire courant est un dépôt git avec une branche active :
git branch --show-current
Si HEAD détaché ou pas de branche, s'arrêter et demander à l'utilisateur quelle branche décrire.
Étape 2 : Récupérer le Contexte du Diff
Exécuter les trois commandes pour construire le contexte :
Résumé des fichiers (ce qui a changé) :
git diff main...HEAD --stat
Messages de commit (pourquoi cela a changé) :
git log main...HEAD --oneline
Diff complet (comment cela a changé) :
Utiliser d'abord origin/main (toujours à jour), puis local main, puis master :
if git rev-parse origin/main &>/dev/null 2>&1; then
BASE=origin/main
elif git rev-parse main &>/dev/null 2>&1; then
BASE=main
else
BASE=master
fi
git diff $BASE...HEAD
Si le diff est très volumineux (plus de 500 lignes), lire uniquement le résumé --stat et les messages de commit. Lire aussi les 200 premières lignes du diff pour comprendre les changements principaux sans traiter la totalité.
Vérifier également s'il existe déjà une PR et lire son titre/corps actuel :
gh pr view --json title,body,baseRefName 2>/dev/null
Étape 3 : Lire le Guide de Format
Lire references/pr-format-guide.md en entier avant d'écrire quoi que ce soit. Internaliser :
- Les sections requises et leur ordre
- Comment rédiger chaque section
- Ce qui doit être inclus ou omis
- Le format de la section de test
Étape 4 : Générer la Description
Rédiger la description de la PR en utilisant le format de references/pr-format-guide.md.
Règles :
- Chaque puce de la section Modifications doit correspondre à quelque chose dans le diff
- Ne pas inventer d'étapes de test qui ne sont pas implicites par les modifications de code
- Si une section n'a pas de contenu pertinent, l'omettre entièrement (ne pas écrire « N/A » ou la laisser vide)
- Section Captures d'écran : inclure uniquement s'il y a des modifications UI visibles dans le diff
- Si les messages de commit expliquent le « pourquoi », utiliser ce contexte dans le Résumé
Point de contrôle qualité : Avant de présenter, vérifier :
- Le résumé fait 1-2 phrases, voix active, sans remplissage
- Chaque puce de modification est spécifique et traçable dans le diff
- Pas de métriques ou résultats inventés
- Les étapes de test sont actionnables (quelqu'un pourrait les suivre)
- Pas de tirets cadratins dans aucune ligne
Étape 5 : Créer ou Mettre à Jour la PR
Présenter la description à l'utilisateur et demander : « Prêt à créer la PR, mettre à jour l'existante, ou seulement afficher ? »
Créer une nouvelle PR :
Transmettre le corps via stdin pour gérer correctement les backticks, guillemets et sauts de ligne :
gh pr create --title "TITRE_ICI" --body-file - << 'EOF'
CORPS_ICI
EOF
Suggérer un titre basé sur les messages de commit et le résumé du diff. Le titre doit être à l'impératif, sous 72 caractères : « Ajoute le cache Redis pour les recherches de sessions utilisateur » et non « Ajout du cache ».
Mettre à jour une PR existante :
gh pr edit --body-file - << 'EOF'
CORPS_ICI
EOF
Afficher seulement : Présenter le titre et le corps dans un bloc de code pour copier-coller manuel.
Après création ou mise à jour, confirmer : « Description de PR mise à jour. Voir sur : [URL] »