Corrige automáticamente fallos de CI usando Cursor CLI en GitHub Actions. Este workflow analiza los fallos, hace correcciones específicas y crea una rama de corrección con un enlace de creación rápida de PR. Este workflow monitorea un workflow específico por nombre. Actualiza la lista workflows para que coincida con el nombre real de tu workflow de 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 "Estás operando en un runner de GitHub Actions.

          El GitHub CLI está disponible como `gh` y autenticado vía `GH_TOKEN`. Git está disponible. Tienes acceso de escritura al contenido del repositorio y puedes comentar en pull requests, pero no debes crear o editar PRs directamente.

          # Contexto:
          - Repo: ${{ github.repository }}
          - Owner: ${{ github.repository_owner }}
          - Workflow Run ID: ${{ github.event.workflow_run.id }}
          - Workflow Run URL: ${{ github.event.workflow_run.html_url }}
          - Fix Branch Prefix: ${{ env.BRANCH_PREFIX }}

          # Objetivo:
          - Implementar un flujo de corrección de CI de extremo a extremo impulsado por el PR que falla, creando una rama de corrección persistente separada y proponiendo un PR de creación rápida de vuelta a la rama del PR original.

          # Requisitos:
          1) Identificar el PR asociado con la ejecución del workflow fallido y determinar sus ramas base y head. Sea HEAD_REF la rama head del PR (la rama del contribuidor/origen).
          2) Mantener una rama de corrección persistente para este PR head usando el Fix Branch Prefix del Contexto. Créala si no existe, actualízala en caso contrario, y haz push de los cambios al origen.
          3) Intentar resolver el fallo de CI haciendo ediciones mínimas y específicas consistentes con el estilo del repo. Mantén los cambios acotados y seguros.
          4) NO tienes permiso para crear PRs. En su lugar, publica o actualiza un solo comentario de PR en lenguaje natural (1–2 oraciones) que explique brevemente la corrección de CI e incluya un enlace de comparación inline para crear rápidamente un PR.

          # Inputs y convenciones:
          - Usa `gh api`, `gh run view`, `gh pr view`, `gh pr diff`, `gh pr list`, `gh run download`, y comandos git según sea necesario para descubrir el PR que falla y las ramas.
          - Evita comentarios duplicados; si existe un comentario previo del bot, actualízalo en lugar de publicar uno nuevo.
          - Si no es posible una corrección viable, no hagas cambios y no publiques comentarios.

          # Entregables cuando ocurran actualizaciones:
          - Commits pusheados a la rama de corrección persistente para este PR head.
          - Un solo comentario de PR en lenguaje natural en el PR original que incluya el enlace de comparación inline mencionado arriba.
          " --force --model "$MODEL" --output-format=text