pr-triage

PR triage: audit open PRs, deep review selected ones, draft and post review comments. Args: "all" to review all, PR numbers to focus (e.g. "42 57"), "en"/"fr" for language, no arg = audit only in French.

By rtk-ai · 941 installs

npx skills add rtk-ai/rtk --skill pr-triage

Source repository · Upstream listing

PR Triage Quand utiliser Skill Usage Output /pr triage Trier, reviewer, commenter les PRs Tableau d'action + reviews + commentaires postés /repo recap Récap général pour partager avec l'équipe Résumé Markdown (PRs + issues + releases) Déclencheurs : Manuellement : /pr triage ou /pr triage all ou /pr triage 42 57 Proactivement : quand 5 PRs ouvertes sans review, ou PR stale 14j détectée Langue Vérifier l'argument passé au skill Si en ou english → tableaux et résumé en anglais Si fr , french , ou pas d'argument → français (défaut) Note : les commentaires GitHub (Phase 3) restent TOUJOURS en anglais (audience internationale) Workflow en 3 phases : audit automatique → deep review opt in → commentaires avec validation obligatoire. Préconditions Si l'un échoue, stop et expliquer ce qui manque. Phase 1 — Audit (toujours exécutée) Data Gathering (commandes en parallèle) Fallback collaborateurs : si gh api .../collaborators échoue (403/404) : Si toujours ambigu, demander à l'utilisateur via AskUserQuestion . Pour chaque PR, récupérer reviews existantes ET fichiers modifiés : Note rate limiting : la récupération des fichiers est N appels API (1 par PR). Pour repos avec 20+ PRs, prioriser les PRs candidates à l'overlap (même domaine fonctionnel, même auteur). Note : author est un objet {login: "..."} — toujours extraire .author.login . Analyse Classification taille : Label Additions XS < 50 S 50–200 M 200–500 L 500–1000 XL 1000 Format taille : +{additions}/ {deletions}, {files} files ({label}) Détections : Overlaps : comparer les listes de fichiers entre PRs — si 50% de fichiers en commun → cross reference Clusters : auteur avec 3+ PRs ouvertes → suggérer ordre de review (plus petite en premier) Staleness : aucune activité depuis 14j → flag "stale" CI status : via statusCheckRollup → clean / unstable / dirty Reviews : approved / changes requested / aucune Liens PR ↔ Issues : Scanner le body de chaque PR pour fixes N , closes N , resolves N (case insensitive) Si trouvé, afficher dans le tableau : Fixes 42 dans la colonne Action/Status Catégorisation : Nos PRs : auteur dans la liste des collaborateurs Externes — Prêtes : additions ≤ 1000 ET files ≤ 10 ET mergeable ≠ CONFLICTING ET CI clean/unstable Externes — Problématiques : un des critères suivants : additions 1000 OU files 10 OU mergeable == CONFLICTING (conflit de merge) OU CI dirty (statusCheckRollup contient des échecs) OU overlap avec une autre PR ouverte ( 50% fichiers communs) Output — Tableau de triage 0 PRs → afficher Aucune PR ouverte. et terminer. Copie automatique Après affichage du tableau de triage, copier dans le presse papier : Confirmer : Tableau copié dans le presse papier. (FR) / Triage table copied to clipboard. (EN) Phase 2 — Deep Review (opt in) Sélection des PRs Si argument passé : "all" → toutes les PRs externes Numéros ( "42 57" ) → uniquement ces PRs Pas d'argument → proposer via AskUserQuestion Si pas d'argument , afficher : Note sur les drafts : Les PRs en draft sont EXCLUES des options "Toutes les externes" et "Prêtes uniquement" Les PRs en draft sont INCLUSES dans "Problématiques uniquement" (car elles nécessitent attention) Pour reviewer un draft : taper son numéro explicitement (ex: 42 ) Si "Passer" → fin du workflow. Exécution des Reviews Pour chaque PR sélectionnée, lancer un agent code reviewer via Task tool en parallèle : Récupérer le diff via : Agréger tous les rapports. Afficher un résumé après toutes les reviews. Phase 3 — Commentaires (validation obligatoire) Génération des drafts Pour chaque PR reviewée, générer un commentaire GitHub en utilisant le template templates/review comment.md . Règles : Langue : anglais (audience internationale) Ton : professionnel, constructif, factuel Toujours inclure au moins 1 point positif Citer les lignes de code quand pertinent (format file.rs:42 ) Affichage et validation Afficher TOUS les commentaires draftés au format : Puis demander validation via AskUserQuestion : (Générer une option par PR + "Tous" + "Aucun") Posting Pour chaque commentaire validé : Confirmer chaque post : ✅ Commentaire posté sur PR {num}: {title} Si "Aucun" → Aucun commentaire posté. Workflow terminé. Gestion des cas limites Situation Comportement 0 PRs ouvertes Aucune PR ouverte. + terminer PR en draft Indiquer dans tableau, skip pour review sauf si sélectionnée explicitement CI inconnu Afficher ? dans colonne CI Review agent timeout Afficher erreur partielle, continuer avec les autres gh pr diff vide Skip cette PR, notifier l'utilisateur PR très large ( 5000 additions) Avertir : "Review partielle, diff tronqué" Collaborateurs API 403/404 Fallback sur auteurs des 10 derniers PRs mergés Notes Toujours dériver owner/repo via gh repo view , jamais hardcoder Utiliser gh CLI (pas curl GitHub API) sauf pour la liste des collaborateurs statusCheckRollup peut être null → traiter comme ? mergeable peut être MERGEABLE , CONFLICTING , ou UNKNOWN → traiter UNKNOWN comme ? Ne jamais poster sans validation explicite de l'utilisateur dans le chat Les commentaires draftés doivent être visibles AVANT tout gh pr comment