Dropstone Docs

GitHub

Usa Dropstone en problemas y solicitudes de extracción de GitHub.

Dropstone se integra con tu flujo de trabajo de GitHub. Menciona /dropstone en cualquier comentario y Dropstone ejecutará la tarea dentro de tu ejecutor de GitHub Actions.


Características

  • Clasificar problemas: Pide a Dropstone que investigue un problema y te lo explique.
  • Corregir e implementar: Pide a Dropstone que corrija un problema o implemente una característica. Trabajará en una rama nueva y enviará un PR con todos los cambios.
  • Seguro: Dropstone se ejecuta dentro de los ejecutores de GitHub.

Instalación

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

dropstone github install

Esto te guiará a través de la instalación de la aplicación de GitHub, la creación del flujo de trabajo y la configuración de secretos.


Configuración Manual

O puedes configurarlo manualmente.

  1. Instala la aplicación de GitHub

    Ve a github.com/apps/dropstone-agent. Asegúrate de que esté instalada en el repositorio de destino.

  2. Añade el flujo de trabajo

    Añade el siguiente archivo de flujo de trabajo a .github/workflows/dropstone.yml en tu repositorio. Asegúrate de establecer el model apropiado y las claves API requeridas en env.

    name: dropstone
    
    on:
      issue_comment:
        types: [created]
      pull_request_review_comment:
        types: [created]
    
    jobs:
      dropstone:
        if: contains(github.event.comment.body, '/dropstone')
        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 Dropstone
            uses: blankline-org/dropstone-cli/github@latest
            env:
              DROPSTONE_API_KEY: ${{ secrets.DROPSTONE_API_KEY }}
            with:
              model: dropstone/dropstone-pro
              # share: true
              # github_token: xxxx
    
  3. Almacena tu clave API en secretos del repositorio

    En tu organización o repositorio Settings, expande Secrets and variables en la izquierda y selecciona Actions. Añade DROPSTONE_API_KEY como un nuevo secreto del repositorio.


Configuración

  • model: El nivel de Dropstone a usar. Uno de dropstone/dropstone-fast, dropstone/dropstone-pro, o dropstone/dropstone-heavy. Esto es requerido.

  • agent: El agente a usar. Debe ser un agente principal. Vuelve a default_agent de la configuración o "build" si no se encuentra.

  • share: Si compartir la sesión de Dropstone. Por defecto es true para repositorios públicos.

  • prompt: Indicación personalizada opcional para anular el comportamiento predeterminado. Úsalo para personalizar cómo Dropstone procesa las solicitudes.

  • token: Token de acceso de GitHub opcional para realizar operaciones como crear comentarios, confirmar cambios y abrir solicitudes de extracción. Por defecto, Dropstone usa el token de acceso de instalación de la aplicación de GitHub de Dropstone, por lo que los commits, comentarios y solicitudes de extracción aparecen como provenientes de la aplicación.

    Alternativamente, puedes usar el token GITHUB_TOKEN integrado del ejecutor de GitHub Actions sin instalar la aplicación de GitHub de Dropstone. Solo asegúrate de otorgar los permisos requeridos en tu flujo de trabajo:

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

    También puedes usar tokens de acceso personal (PAT) si lo prefieres.


Eventos Soportados

Dropstone puede ser activado por los siguientes eventos de GitHub:

Tipo de EventoActivado PorDetalles
issue_commentComentario en un problema o PRMenciona /dropstone en tu comentario. Dropstone lee el contexto y puede crear ramas, abrir PRs o responder.
pull_request_review_commentComentario en líneas de código específicas en un PRMenciona /dropstone mientras revisas código. Dropstone recibe la ruta del archivo, números de línea y contexto de diff.
issuesProblema abierto o editadoActiva automáticamente Dropstone cuando se crean o modifican problemas. Requiere entrada prompt.
pull_requestPR abierto o actualizadoActiva automáticamente Dropstone cuando se abren, sincronizan o reabre PRs. Útil para revisiones automatizadas.
scheduleHorario basado en cronEjecuta Dropstone en un horario. Requiere entrada prompt. La salida va a registros y PRs (sin problema para comentar).
workflow_dispatchActivación manual desde la interfaz de GitHubActiva Dropstone bajo demanda a través de la pestaña Actions. Requiere entrada prompt. La salida va a registros y PRs.

Ejemplo de Horario

Ejecuta Dropstone en un horario para realizar tareas automatizadas:

name: Scheduled Dropstone Task

on:
  schedule:
    - cron: "0 9 * * 1" # Every Monday at 9am UTC

jobs:
  dropstone:
    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 Dropstone
        uses: blankline-org/dropstone-cli/github@latest
        env:
          DROPSTONE_API_KEY: ${{ secrets.DROPSTONE_API_KEY }}
        with:
          model: dropstone/dropstone-pro
          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 prompt es requerida ya que no hay comentario del cual extraer instrucciones. Los flujos de trabajo programados se ejecutan sin un contexto de usuario para verificar permisos, por lo que el flujo de trabajo debe otorgar contents: write y pull-requests: write si esperas que Dropstone cree ramas o PRs.


Ejemplo de Solicitud de Extracción

Revisa automáticamente PRs cuando se abren o actualizan:

name: dropstone-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: blankline-org/dropstone-cli/github@latest
        env:
          DROPSTONE_API_KEY: ${{ secrets.DROPSTONE_API_KEY }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          model: dropstone/dropstone-pro
          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, Dropstone por defecto revisa la solicitud de extracción.


Ejemplo de Clasificación de Problemas

Clasifica automáticamente nuevos problemas. Este ejemplo filtra cuentas más antiguas que 30 días para reducir spam:

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: blankline-org/dropstone-cli/github@latest
        if: steps.check.outputs.result == 'true'
        env:
          DROPSTONE_API_KEY: ${{ secrets.DROPSTONE_API_KEY }}
        with:
          model: dropstone/dropstone-pro
          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 prompt es requerida ya que no hay comentario del cual extraer instrucciones.


Indicaciones personalizadas

Anula la indicación predeterminada para personalizar el comportamiento de Dropstone para tu flujo de trabajo.

- uses: blankline-org/dropstone-cli/github@latest
  with:
    model: dropstone/dropstone-pro
    prompt: |
      Review this pull request:
      - Check for code quality issues
      - Look for potential bugs
      - Suggest improvements

Esto es útil para aplicar criterios de revisión específicos, estándares de codificación o áreas de enfoque relevantes para tu proyecto.


Ejemplos

Aquí hay algunos ejemplos de cómo puedes usar Dropstone en GitHub.

  • Explicar un problema

    Añade este comentario en un problema de GitHub.

    /dropstone explain this issue
    

    Dropstone leerá todo el hilo, incluidos todos los comentarios, y responderá con una explicación clara.

  • Corregir un problema

    En un problema de GitHub, di:

    /dropstone fix this
    

    Y Dropstone creará una rama nueva, implementará los cambios y abrirá un PR con los cambios.

  • Revisar PRs y hacer cambios

    Deja el siguiente comentario en un PR de GitHub.

    /dropstone delete the attachment from S3 when the note is removed
    

    Dropstone implementará el cambio solicitado y lo confirmará en el mismo PR.

  • Revisar líneas de código específicas

    Deja un comentario directamente en líneas de código en la pestaña "Files" del PR. Dropstone detecta automáticamente el archivo, números de línea y contexto de diff para proporcionar respuestas precisas.

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

    Al comentar en líneas específicas, Dropstone recibe:

    • El archivo exacto siendo revisado
    • Las líneas específicas de código
    • El contexto de diff circundante
    • Información de números de línea

    Esto permite solicitudes más dirigidas sin necesidad de especificar manualmente rutas de archivo o números de línea.

Ctrl+I