gh-fix-ci

À utiliser lorsqu'un utilisateur demande à déboguer ou corriger des checks de PR GitHub en échec qui s'exécutent dans GitHub Actions ; utilisez `gh` pour inspecter les checks et les logs, résumer le contexte de l'échec, rédiger un plan de correction, et n'implémenter qu'après approbation explicite. Considérez les fournisseurs externes (par exemple Buildkite) comme hors périmètre et ne renvoyez que l'URL de détails.

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

Plan de correction Gh Pr Checks

Aperçu

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

  • Si une skill orientée plan (par exemple create-plan) est disponible, l'utiliser ; sinon, rédiger un plan concis inline et demander l'approbation avant l'implémentation.

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

Entrées

  • repo : chemin dans le repository (par défaut .)
  • pr : numéro ou URL de PR (optionnel ; par défaut la PR de la branche courante)
  • authentification gh pour l'hôte du repo

Démarrage rapide

  • python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>"
  • Ajouter --json si vous voulez une sortie lisible par machine pour la synthèse.

Flux de travail

  1. Vérifier l'authentification gh.
    • Exécuter gh auth status dans le repo.
    • Si non authentifié, demander à l'utilisateur d'exécuter gh auth login (en veillant à inclure les scopes repo + workflow) avant de continuer.
  2. Résoudre la PR.
    • Préférer la PR de la branche courante : gh pr view --json number,url.
    • Si l'utilisateur fournit un numéro ou une URL de PR, 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 de champs gh et les fallbacks log-job) :
      • python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>"
      • Ajouter --json pour une sortie lisible par machine.
    • Fallback manuel :
      • gh pr checks <pr> --json name,state,bucket,link,startedAt,completedAt,workflow
        • Si un champ est rejeté, relancer avec les champs disponibles rapportés par gh.
      • Pour chaque vérification défaillante, extraire l'id de run 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 log de run indique qu'il est encore en cours, récupérer les logs de job directement :
        • gh api "/repos/<owner>/<repo>/actions/jobs/<job_id>/logs" > "<path>"
  4. Circonscrire les vérifications non-GitHub Actions.
    • Si detailsUrl n'est pas un run GitHub Actions, l'étiqueter comme externe et ne rapporter que l'URL.
    • Ne pas tenter Buildkite ou d'autres fournisseurs ; maintenir 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 du run (le cas échéant), et un extrait de log concis.
    • Signaler explicitement les logs manquants.
  6. Créer un plan.
    • Utiliser la skill 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 ouvrir une PR.
  8. Revérifier le statut.
    • Après les modifications, suggérer de relancer les tests concernés et gh pr checks pour confirmer.

Ressources fournies

scripts/inspect_pr_checks.py

Récupérer les vérifications PR défaillantes, extraire les logs GitHub Actions et obtenir un extrait de défaillance. Sort avec un code non-zéro quand des défaillances restent pour pouvoir être utilisé en 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

Skills similaires