Español
Documentación
GitHub

GitHub

Usa OpenCode en issues y pull requests de GitHub.

OpenCode se integra con tu flujo de trabajo de GitHub. Menciona /opencode o /oc en tu comentario, y OpenCode ejecutara tareas dentro de tu runner de GitHub Actions.


Caracteristicas

  • Triaje de issues: Pide a OpenCode que investigue un issue y te lo explique.
  • Corregir e implementar: Pide a OpenCode que corrija un issue o implemente una caracteristica. Trabajara en una nueva rama y enviara un PR con todos los cambios.
  • Seguro: OpenCode se ejecuta dentro de tus runners de GitHub.

Instalacion

Ejecuta el siguiente comando en un proyecto que este en un repositorio de GitHub:

opencode github install

Esto te guiara a traves de la instalacion de la app de GitHub, la creacion del workflow y la configuracion de secrets.


Configuracion Manual

O puedes configurarlo manualmente.

  1. Instalar la app de GitHub

    Ve a github.com/apps/opencode-agent (opens in a new tab). Asegurate de que este instalada en el repositorio de destino.

  2. Agregar el workflow

    Agrega el siguiente archivo de workflow a .github/workflows/opencode.yml en tu repositorio. Asegurate de establecer el model apropiado y las claves API requeridas en env.

    .github/workflows/opencode.yml
    name: opencode
     
    on:
      issue_comment:
        types: [created]
      pull_request_review_comment:
        types: [created]
     
    jobs:
      opencode:
        if: |
          contains(github.event.comment.body, '/oc') ||
          contains(github.event.comment.body, '/opencode')
        runs-on: ubuntu-latest
        permissions:
          id-token: write
        steps:
          - name: Checkout repository
            uses: actions/checkout@v6
            with:
              fetch-depth: 1
              persist-credentials: false
     
          - name: Run OpenCode
            uses: anomalyco/opencode/github@latest
            env:
              ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
            with:
              model: anthropic/claude-sonnet-4-20250514
              # share: true
              # github_token: xxxx
  3. Almacenar las claves API en secrets

    En la configuracion de tu organizacion o proyecto, expande Secrets and variables a la izquierda y selecciona Actions. Luego agrega las claves API requeridas.


Configuracion

  • model: El modelo a usar con OpenCode. Toma el formato provider/model. Esto es requerido.

  • agent: El agente a usar. Debe ser un agente primario. Recurre a default_agent de la configuracion o "build" si no se encuentra.

  • share: Si compartir la sesion de OpenCode. Por defecto es true para repositorios publicos.

  • prompt: Prompt personalizado opcional para anular el comportamiento predeterminado. Usa esto para personalizar como OpenCode procesa las solicitudes.

  • token: Token de acceso de GitHub opcional para realizar operaciones como crear comentarios, hacer commits de cambios y abrir pull requests. Por defecto, OpenCode usa el token de acceso de instalacion de la App de GitHub de OpenCode, por lo que los commits, comentarios y pull requests aparecen como provenientes de la app.

    Alternativamente, puedes usar el GITHUB_TOKEN integrado (opens in a new tab) del runner de GitHub Action sin instalar la App de GitHub de OpenCode. Solo asegurate de otorgar los permisos requeridos en tu workflow:

    permissions:
      id-token: write
      contents: write
      pull-requests: write
      issues: write

    Tambien puedes usar tokens de acceso personal (opens in a new tab) (PAT) si lo prefieres.


Eventos Soportados

OpenCode puede ser activado por los siguientes eventos de GitHub:

Tipo de EventoActivado PorDetalles
issue_commentComentario en un issue o PRMenciona /opencode o /oc en tu comentario. OpenCode lee el contexto y puede crear ramas, abrir PRs o responder.
pull_request_review_commentComentario en lineas de codigo especificas en un PRMenciona /opencode o /oc mientras revisas codigo. OpenCode recibe la ruta del archivo, numeros de linea y contexto del diff.
issuesIssue abierto o editadoActiva automaticamente OpenCode cuando se crean o modifican issues. Requiere entrada de prompt.
pull_requestPR abierto o actualizadoActiva automaticamente OpenCode cuando se abren, sincronizan o reabren PRs. Util para revisiones automatizadas.
scheduleProgramacion basada en CronEjecuta OpenCode en un horario. Requiere entrada de prompt. La salida va a logs y PRs (no hay issue para comentar).
workflow_dispatchActivacion manual desde la UI de GitHubActiva OpenCode bajo demanda a traves de la pestana Actions. Requiere entrada de prompt. La salida va a logs y PRs.

Ejemplo de Programacion

Ejecuta OpenCode en un horario para realizar tareas automatizadas:

.github/workflows/opencode-scheduled.yml
name: Scheduled OpenCode Task
 
on:
  schedule:
    - cron: "0 9 * * 1" # Every Monday at 9am UTC
 
jobs:
  opencode:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: write
      pull-requests: write
      issues: write
    steps:
      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          persist-credentials: false
 
      - name: Run OpenCode
        uses: anomalyco/opencode/github@latest
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        with:
          model: anthropic/claude-sonnet-4-20250514
          prompt: |
            Review the codebase for any TODO comments and create a summary.
            If you find issues worth addressing, open an issue to track them.

Para eventos programados, la entrada de prompt es requerida ya que no hay comentario del cual extraer instrucciones. Los workflows programados se ejecutan sin contexto de usuario para verificacion de permisos, por lo que el workflow debe otorgar contents: write y pull-requests: write si esperas que OpenCode cree ramas o PRs.


Ejemplo de Pull Request

Revisa automaticamente PRs cuando se abren o actualizan:

.github/workflows/opencode-review.yml
name: opencode-review
 
on:
  pull_request:
    types: [opened, synchronize, reopened, ready_for_review]
 
jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
      pull-requests: read
      issues: read
    steps:
      - uses: actions/checkout@v6
        with:
          persist-credentials: false
      - uses: anomalyco/opencode/github@latest
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          model: anthropic/claude-sonnet-4-20250514
          use_github_token: true
          prompt: |
            Review this pull request:
            - Check for code quality issues
            - Look for potential bugs
            - Suggest improvements

Para eventos pull_request, si no se proporciona prompt, OpenCode revisa el pull request por defecto.


Ejemplo de Triaje de Issues

Triaje automatico de nuevos issues. Este ejemplo filtra cuentas con mas de 30 dias para reducir spam:

.github/workflows/opencode-triage.yml
name: Issue Triage
 
on:
  issues:
    types: [opened]
 
jobs:
  triage:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: write
      pull-requests: write
      issues: write
    steps:
      - name: Check account age
        id: check
        uses: actions/github-script@v7
        with:
          script: |
            const user = await github.rest.users.getByUsername({
              username: context.payload.issue.user.login
            });
            const created = new Date(user.data.created_at);
            const days = (Date.now() - created) / (1000 * 60 * 60 * 24);
            return days >= 30;
          result-encoding: string
 
      - uses: actions/checkout@v6
        if: steps.check.outputs.result == 'true'
        with:
          persist-credentials: false
 
      - uses: anomalyco/opencode/github@latest
        if: steps.check.outputs.result == 'true'
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        with:
          model: anthropic/claude-sonnet-4-20250514
          prompt: |
            Review this issue. If there's a clear fix or relevant docs:
            - Provide documentation links
            - Add error handling guidance for code examples
            Otherwise, do not comment.

Para eventos issues, la entrada de prompt es requerida ya que no hay comentario del cual extraer instrucciones.


Prompts Personalizados

Anula el prompt predeterminado para personalizar el comportamiento de OpenCode para tu workflow.

.github/workflows/opencode.yml
- uses: anomalyco/opencode/github@latest
  with:
    model: anthropic/claude-sonnet-4-5
    prompt: |
      Review this pull request:
      - Check for code quality issues
      - Look for potential bugs
      - Suggest improvements

Esto es util para aplicar criterios de revision especificos, estandares de codificacion o areas de enfoque relevantes para tu proyecto.


Ejemplos

Aqui hay algunos ejemplos de como puedes usar OpenCode en GitHub.

  • Explicar un issue

    Agrega este comentario en un issue de GitHub.

    /opencode explain this issue

    OpenCode leera todo el hilo, incluyendo todos los comentarios, y respondera con una explicacion clara.

  • Corregir un issue

    En un issue de GitHub, di:

    /opencode fix this

    Y OpenCode creara una nueva rama, implementara los cambios y abrira un PR con los cambios.

  • Revisar PRs y hacer cambios

    Deja el siguiente comentario en un PR de GitHub.

    Delete the attachment from S3 when the note is removed /oc

    OpenCode implementara el cambio solicitado y lo hara commit en el mismo PR.

  • Revisar lineas de codigo especificas

    Deja un comentario directamente en lineas de codigo en la pestana "Files" del PR. OpenCode detecta automaticamente el archivo, numeros de linea y contexto del diff para proporcionar respuestas precisas.

    [Comment on specific lines in Files tab]
    /oc add error handling here

    Al comentar en lineas especificas, OpenCode recibe:

    • El archivo exacto que se esta revisando
    • Las lineas de codigo especificas
    • El contexto del diff circundante
    • Informacion de numeros de linea

    Esto permite solicitudes mas dirigidas sin necesidad de especificar rutas de archivo o numeros de linea manualmente.