gh-fix-ci

Utilise cette option quand un utilisateur demande de déboguer ou corriger les vérifications GitHub PR défaillantes qui s'exécutent dans GitHub Actions ; utilise `gh` pour inspecter les vérifications et les journaux, résume le contexte de l'échec, élabore un plan de correction, et implémente uniquement après approbation explicite. Traite les fournisseurs externes (par exemple Buildkite) comme hors de portée et signale uniquement l'URL des détails.

npx skills add https://github.com/openai/skills --skill gh-fix-ci

Correction des vérifications de PR avec Gh

Aperçu

Utiliser gh pour localiser les vérifications de PR défaillantes, récupérer les journaux GitHub Actions pour les défaillances exploitables, résumer l'extrait d'erreur, puis proposer un plan de correction et l'implémenter après approbation explicite.

  • Si une compétence orientée plan (par exemple create-plan) est disponible, l'utiliser ; sinon, rédiger un plan concis en ligne et demander l'approbation avant d'implémenter.

Prérequis : s'authentifier avec la CLI GitHub standard une fois (par exemple, exécuter gh auth login), puis confirmer avec gh auth status (les portées repo + workflow sont généralement requises).

Entrées

  • repo : chemin à l'intérieur du dépôt (par défaut .)
  • pr : numéro ou URL de la PR (optionnel ; par défaut la PR de la branche actuelle)
  • authentification gh pour l'hôte du dépôt

Démarrage rapide

  • python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>"
  • Ajouter --json si vous souhaitez une sortie conviviale pour les machines en vue de la résumé.

Flux de travail

  1. Vérifier l'authentification gh.
    • Exécuter gh auth status dans le dépôt.
    • Si non authentifié, demander à l'utilisateur d'exécuter gh auth login (en veillant à inclure les portées repo + workflow) avant de poursuivre.
  2. Résoudre la PR.
    • Préférer la PR de la branche actuelle : gh pr view --json number,url.
    • Si l'utilisateur fournit un numéro de PR ou une URL, l'utiliser directement.
  3. Inspecter les vérifications défaillantes (GitHub Actions uniquement).
    • Préféré : exécuter le script fourni (gère la dérive des champs gh et les replis de journaux de tâches) :
      • python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>"
      • Ajouter --json pour une sortie conviviale pour les machines.
    • Repli manuel :
      • gh pr checks <pr> --json name,state,bucket,link,startedAt,completedAt,workflow
        • Si un champ est rejeté, réexécuter avec les champs disponibles signalés par gh.
      • Pour chaque vérification défaillante, extraire l'identifiant d'exécution de detailsUrl et exécuter :
        • gh run view <run_id> --json name,workflowName,conclusion,status,url,event,headBranch,headSha
        • gh run view <run_id> --log
      • Si le journal d'exécution indique qu'il est toujours en cours, récupérer les journaux de tâches directement :
        • gh api "/repos/<owner>/<repo>/actions/jobs/<job_id>/logs" > "<path>"
  4. Traiter les vérifications non-GitHub Actions.
    • Si detailsUrl n'est pas une exécution GitHub Actions, l'étiqueter comme externe et signaler uniquement l'URL.
    • Ne pas tenter Buildkite ou d'autres fournisseurs ; garder le flux de travail léger.
  5. Résumer les défaillances pour l'utilisateur.
    • Fournir le nom de la vérification défaillante, l'URL d'exécution (le cas échéant) et un extrait de journal concis.
    • Signaler explicitement les journaux manquants.
  6. Créer un plan.
    • Utiliser la compétence create-plan pour rédiger un plan concis et demander l'approbation.
  7. Implémenter après approbation.
    • Appliquer le plan approuvé, résumer les diffs/tests et demander si l'utilisateur souhaite ouvrir une PR.
  8. Vérifier à nouveau le statut.
    • Après les modifications, suggérer de réexécuter les tests pertinents et gh pr checks pour confirmer.

Ressources fournies

scripts/inspect_pr_checks.py

Récupérer les vérifications de PR défaillantes, extraire les journaux GitHub Actions et extraire un extrait d'erreur. Sort avec un code non nul lorsque des défaillances subsistent pour pouvoir être utilisé dans l'automation.

Exemples d'utilisation :

  • python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "123"
  • python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "https://github.com/org/repo/pull/123" --json
  • python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --max-lines 200 --context 40