Trouver une PR à réviser
Rechercher les PRs ouvertes étiquetées security + priority: high, associer chacune à son issue liée, détecter les doublons (plusieurs PRs ciblant la même issue), et présenter un résumé clair pour que tu puisses décider quoi réviser ou fermer.
Prérequis
gh(GitHub CLI) doit être installé et authentifié.- Tu dois être dans un repository GitHub (ou l'utilisateur doit spécifier
OWNER/REPO).
Étape 1 : Récupérer les PRs candidates
Lister toutes les PRs ouvertes portant à la fois les étiquettes security et priority: high :
gh pr list --label security --label "priority: high" --state open --limit 50 --json number,title,author,headRefName,labels,body,createdAt
Si le résultat est vide, signaler qu'aucune PR ne correspond et s'arrêter.
Étape 2 : Extraire les issues liées
Pour chaque PR, analyser le corps pour trouver les références d'issues liées. Rechercher ces motifs (insensible à la casse) :
Fixes #NNN,Closes #NNN,Resolves #NNN- Section
Related Issue/Linked Issuecontenant#NNN - Numéro d'issue dans le titre de la PR, par ex. suffixe
(#NNN) - Numéro d'issue dans le nom de la branche, par ex.
fix/something-NNN
Construire un mapping : PR# → [numéros d'issues].
Si une PR n'a pas d'issue détectable, la marquer comme (no linked issue).
Étape 3 : Détecter les doublons
Grouper les PRs par numéro d'issue liée. Toute issue ayant deux ou plus PRs ouvertes est un groupe de doublons.
Pour chaque groupe de doublons, récupérer un bref résumé de chaque PR concurrente pour aider l'utilisateur à décider laquelle garder :
gh pr view <number> --json number,title,author,createdAt,additions,deletions,reviewDecision,statusCheckRollup --jq '{number,title,author: .author.login,created: .createdAt,additions,deletions,review: .reviewDecision,checks: [.statusCheckRollup[]?.conclusion] | unique}'
Étape 4 : Vérifier les PRs remplacées
Aussi signaler les PRs dont le corps contient des phrases comme :
follow-up to #NNN/supersedes #NNN/replaces #NNN/folds in #NNN
où #NNN est un autre numéro de PR ouverte dans la liste des candidates. Cela indique qu'une PR en a absorbé une autre.
Étape 5 : Présenter les résultats
Doublons / PRs remplacées
Si des doublons ou des PRs remplacées existent, les présenter d'abord dans un tableau :
### Duplicate PRs (same issue)
| Issue | PR | Author | Title | +/- | Status |
|-------|-----|--------|-------|-----|--------|
| #804 | #1121 | user1 | ... | +50/-10 | Checks passing |
| #804 | #1300 | user2 | ... | +80/-20 | Checks failing |
**Recommendation:** #1121 is smaller and passing checks — consider closing #1300.
Pour les PRs remplacées :
### Superseded PRs
- #1416 supersedes/folds in #1392 (shell-quote sandboxName)
→ Consider closing #1392 if #1416 covers its scope.
Candidates propres
Présenter les PRs non-doublons dans un tableau :
### Review candidates (no duplicates)
| PR | Issue | Title | Author | Age |
|----|-------|-------|--------|-----|
| #1476 | #577 | disable remote uninstall fallback | user1 | 2d |
| #1121 | #804 | Landlock read-only /sandbox | user2 | 6d |
Ligne de résumé
Finir avec une recommandation sur une ligne indiquant quelle PR réviser en premier, en privilégiant :
- Les PRs les plus anciennes (en attente depuis le plus longtemps)
- Les PRs avec des vérifications passantes
- Les PRs avec un diff plus petit (plus facile à réviser)
Notes
- NE PAS fermer automatiquement de PRs. Seulement présenter les résultats et les recommandations.
- Si l'utilisateur spécifie des filtres supplémentaires (par ex. une étiquette de portée comme
OpenShell), les appliquer. - Si l'utilisateur demande une étiquette de priorité différente, l'ajuster en conséquence.