Examen de Rédaction de PR
Extraire les retours éditoriaux des PR GitHub pour apprendre des améliorations de révision.
Prérequis
- GitHub CLI :
ghinstallé - Session
ghauthentifiée :gh auth statusdoit confirmer votre connexion- Pour les repos privés, votre token doit avoir les bonnes permissions (typiquement
repo).
- Pour les repos privés, votre token doit avoir les bonnes permissions (typiquement
- Python : 3.12+
- uv (recommandé) : https://github.com/astral-sh/uv
Division des responsabilités
| Outil | Responsabilité |
|---|---|
| Script Python | Appels API, parsing, suivi des fichiers à travers les renommages, extraction structurée |
| Analyse LLM | Reconnaissance de patterns, comparaison de paragraphes, synthèse de leçons de style |
Démarrage rapide
> **Tous les chemins sont relatifs au répertoire contenant ce fichier SKILL.md.**
> Avant d'exécuter un script, d'abord `cd` dans ce répertoire ou utilisez le chemin complet.
# Obtenir des suggestions et retours
uv run scripts/extract_pr_reviews.py <pr_url>
# Obtenir la comparaison premier→final pour analyse approfondie
uv run scripts/extract_pr_reviews.py <pr_url> --diff
# Identique au-dessus, mais limiter chaque dump PREMIER/FINAL à 2k caractères pour les prompts LLM
uv run scripts/extract_pr_reviews.py <pr_url> --diff --max-file-chars 2000
Workflow
Étape 1 : Extraire avec --diff
uv run scripts/extract_pr_reviews.py https://github.com/org/repo/pull/123 --diff
Cela affiche :
- Suggestions Explicites — texte exact avant/après des blocs
suggestion(supporte plusieurs blocs par commentaire) - Retours du Reviewer — commentaires en texte brut (le "pourquoi" des changements)
- Évolution des Fichiers — premier brouillon et version finale de chaque fichier texte
Conseil : ajoutez
--max-file-chars 2000pour alléger chaque dump PREMIER/FINAL, ou associez--diffà--no-filessi vous ne besoin que des résumés suggestion/retours.
Étape 2 : Analyser la Sortie
Avec la sortie du script, effectuez cette analyse :
A. Cataloguer les Suggestions Explicites
Créer un tableau des corrections mécaniques :
| Pattern | Original | Corrigé |
|---|---|---|
| Grammaire | "Its easier" | "It's easier" |
| Suppression de remplissage | "using this way" | "this way" |
| Capitalisation | "Image Generation" | "image generation" |
B. Mapper les Retours aux Changements
Pour chaque commentaire de retour du reviewer :
- Trouver la section pertinente dans LE PREMIER BROUILLON
- Trouver la même section dans LA VERSION FINALE
- Documenter ce qui a changé et pourquoi
Exemple :
Retour : "would be nice to end more enthusiastically"
Premier brouillon : "...it's simple to add new tools to Claude and use them straight away."
Final : "...Let us know what you find and create in the comments below!"
Leçon : Terminer les articles de blog par un appel à l'action
C. Comparaison Paragraphe par Paragraphe
Comparer LE PREMIER BROUILLON à LA VERSION FINALE section par section :
- Qu'a été ajouté ?
- Qu'a été supprimé ?
- Qu'a été reformulé ?
- Quels changements structurels ont eu lieu ?
D. Synthétiser les Patterns de Style
Regrouper les découvertes par catégories :
| Catégorie | Patterns Trouvés |
|---|---|
| Clarté | Passif→actif, phrases plus courtes, suppression de remplissage |
| Précision | Vague→spécifique, "Create"→"Generate" |
| Ton | Enthousiasme ajouté, finales avec appel à l'action |
| Structure | Transitions ajoutées, meilleure fluidité des sections |
| Grammaire | its/it's, accord sujet-verbe |
| Contenu | Liens ajoutés, exemples, contexte |
Options du Script
📁 Tous les chemins sont relatifs au répertoire contenant ce fichier SKILL.md.
| Flag | Sortie | Cas d'usage |
|---|---|---|
| (aucun) | Suggestions + retours | Examen rapide de ce que les reviewers ont dit |
--diff |
Ajoute les dumps PREMIER/FINAL à la sortie par défaut | Analyse approfondie de comment l'auteur a répondu |
--max-file-chars N |
Tronque chaque bloc PREMIER/FINAL à N caractères (ajoute ...[X chars tronqués]) |
Garder les prompts dans les limites de tokens LLM |
--no-files |
Supprime les dumps PREMIER/FINAL même avec --diff |
Quand vous n'avez besoin que des suggestions explicites + retours du reviewer |
--json |
JSON brut (inclut file_evolutions avec --diff sans --no-files) |
Traitement programmatique |
Formats d'entrée : passer soit l'URL complète de la PR, soit
owner/repo PR_NUMBER, ouowner repo PR_NUMBER.
Structure de Sortie
Sortie par Défaut
- Writing Suggestions : Groupées par reviewer, affiche original→texte suggéré (blocs entre balises) avec une note du reviewer et un lien retour vers GitHub
- Reviewer Feedback : Commentaires simples sans suggestions de code, chacun marqué avec son lien GitHub
Avec --diff
- Explicit Suggestions : Paires avant/après compactes, notes du reviewer, et permaliens GitHub en un seul endroit
- Reviewer Feedback : Liste numérotée des demandes (même vue qu'en défaut)
- File Evolution : PREMIER BROUILLON et VERSION FINALE pour chaque fichier
.md/.txt/.rst/.mdx; ajouter--max-file-charspour tronquer chaque bloc avec un indicateur visible...[X chars tronqués]
Gestion des Renommages de Fichiers
Le script trace les fichiers à travers les renommages en :
- Vérifier chaque commit pour les opérations de renommage
- Construire un historique de chemins (par ex.
claudeimages.md→claude-images.md→claude-and-mcp.md) - Récupérer le contenu en utilisant le chemin correct pour chaque commit
Exemple de Sortie d'Analyse
Après exécution du script et analyse LLM, produire un résumé comme :
## Style Lessons from PR #123
### Mechanical Fixes
- Fix grammar: "Its" → "It's" (contraction)
- Lowercase generic terms: "Image Generation" → "image generation"
- Remove filler: "the output quality of" → "the quality of"
### Reviewer-Driven Changes
- **"end more enthusiastically"** → Added call-to-action in conclusion
- **"emphasize these are SoTA"** → Changed "latest" to "state-of-the-art"
- **"add blurb about MCP Server"** → Added explanatory paragraph
### Structural Improvements
- Added transition sentence between sections
- Simplified setup instructions (3 sentences → 1)
- Added new bullet point for model flexibility
Limitations
- Extrait uniquement les commentaires de révision inline dans les PR (pas les commentaires sur les issues ni la description de la PR)
- Les fichiers extrêmement longs peuvent rester lourds ; dans ce cas, réduisez
--max-file-charsou utilisez--no-filespour garder les sorties compatibles avec les prompts
{{currentDate}} {{env}}