Corrige automatiquement les échecs CI en utilisant Cursor CLI dans GitHub Actions. Ce workflow analyse les échecs, applique des corrections ciblées et crée une branche de correction avec un lien de création rapide de PR. Ce workflow surveille un workflow spécifique par nom. Mets à jour la liste workflows pour qu’elle corresponde au nom réel de ton workflow CI.
name: Auto Fix CI Failures

on:
  workflow_run:
    workflows: [Test]
    types: [completed]

permissions:
  contents: write
  pull-requests: write
  actions: read

jobs:
  attempt-fix:
    if: >-
      ${{ github.event.workflow_run.conclusion == 'failure' && github.event.workflow_run.name != 'Auto Fix CI Failures' }}
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Install Cursor CLI
        run: |
          curl https://cursor.com/install -fsS | bash
          echo "$HOME/.cursor/bin" >> $GITHUB_PATH

      - name: Configure git identity
        run: |
          git config user.name "Cursor Agent"
          git config user.email "cursoragent@cursor.com"

      - name: Fix CI failure
        env:
          CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
          MODEL: gpt-5
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          BRANCH_PREFIX: ci-fix
        run: |
          cursor-agent -p "Tu fonctionnes dans un runner GitHub Actions.

          La CLI GitHub est disponible via `gh` et authentifiée avec `GH_TOKEN`. Git est disponible. Tu as un accès en écriture au contenu du dépôt et peux commenter les pull requests, mais tu ne dois pas créer ou modifier les PR directement.

          # Contexte :
          - Dépôt : ${{ github.repository }}
          - Propriétaire : ${{ github.repository_owner }}
          - ID d'exécution du workflow : ${{ github.event.workflow_run.id }}
          - URL d'exécution du workflow : ${{ github.event.workflow_run.html_url }}
          - Préfixe de branche de correction : ${{ env.BRANCH_PREFIX }}

          # Objectif :
          - Implémenter un flux de correction CI de bout en bout basé sur la PR en échec, en créant une branche de correction persistante séparée et en proposant une PR de création rapide vers la branche de la PR originale.

          # Exigences :
          1) Identifier la PR associée à l'exécution de workflow en échec et déterminer ses branches de base et de tête. Soit HEAD_REF la branche de tête de la PR (la branche contributeur/origine).
          2) Maintenir une branche de correction persistante pour cette tête de PR en utilisant le préfixe de branche de correction du contexte. La créer si elle n'existe pas, la mettre à jour sinon, et pousser les changements vers l'origine.
          3) Tenter de résoudre l'échec CI en appliquant des modifications minimales et ciblées cohérentes avec le style du dépôt. Garder les changements limités et sûrs.
          4) Tu n'as PAS la permission de créer des PR. À la place, poste ou mets à jour un seul commentaire de PR en langage naturel (1-2 phrases) qui explique brièvement la correction CI et inclut un lien de comparaison inline pour créer rapidement une PR.

          # Entrées et conventions :
          - Utilise `gh api`, `gh run view`, `gh pr view`, `gh pr diff`, `gh pr list`, `gh run download`, et les commandes git selon les besoins pour découvrir la PR en échec et les branches.
          - Évite les commentaires en double ; si un commentaire de bot précédent existe, mets-le à jour au lieu d'en poster un nouveau.
          - Si aucune correction exploitable n'est possible, n'applique aucun changement et ne poste aucun commentaire.

          # Livrables quand des mises à jour ont lieu :
          - Commits poussés vers la branche de correction persistante pour cette tête de PR.
          - Un seul commentaire de PR en langage naturel sur la PR originale qui inclut le lien de comparaison inline ci-dessus.
          " --force --model "$MODEL" --output-format=text