Dropstone Docs

GitHub

Use Dropstone em problemas e pull-requests do GitHub.

Dropstone se integra com seu fluxo de trabalho do GitHub. Mencione /dropstone em qualquer comentário e Dropstone executará a tarefa dentro do seu executor do GitHub Actions.


Recursos

  • Triagem de problemas: Peça ao Dropstone para investigar um problema e explicá-lo para você.
  • Corrigir e implementar: Peça ao Dropstone para corrigir um problema ou implementar um recurso. Ele funcionará em uma nova branch e enviará um PR com todas as alterações.
  • Seguro: Dropstone é executado dentro dos executores do GitHub.

Instalação

Execute o seguinte comando em um projeto que está em um repositório do GitHub:

dropstone github install

Isso o guiará pela instalação do aplicativo GitHub, criação do fluxo de trabalho e configuração de segredos.


Configuração Manual

Ou você pode configurá-lo manualmente.

  1. Instale o aplicativo GitHub

    Acesse github.com/apps/dropstone-agent. Certifique-se de que está instalado no repositório de destino.

  2. Adicione o fluxo de trabalho

    Adicione o seguinte arquivo de fluxo de trabalho em .github/workflows/dropstone.yml no seu repositório. Certifique-se de definir o model apropriado e as chaves de API necessárias em 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. Armazene sua chave de API em segredos do repositório

    Nas Configurações da sua organização ou repositório, expanda Secrets and variables à esquerda e selecione Actions. Adicione DROPSTONE_API_KEY como um novo segredo do repositório.


Configuração

  • model: O nível do Dropstone a usar. Um de dropstone/dropstone-fast, dropstone/dropstone-pro, ou dropstone/dropstone-heavy. Isso é obrigatório.

  • agent: O agente a usar. Deve ser um agente primário. Volta para default_agent da configuração ou "build" se não encontrado.

  • share: Se deve compartilhar a sessão do Dropstone. Padrão é true para repositórios públicos.

  • prompt: Prompt personalizado opcional para substituir o comportamento padrão. Use isso para personalizar como o Dropstone processa solicitações.

  • token: Token de acesso do GitHub opcional para realizar operações como criar comentários, fazer commits e abrir pull requests. Por padrão, Dropstone usa o token de acesso de instalação do Aplicativo GitHub do Dropstone, portanto commits, comentários e pull requests aparecem como vindos do aplicativo.

    Alternativamente, você pode usar o token GITHUB_TOKEN integrado do executor do GitHub Actions sem instalar o Aplicativo GitHub do Dropstone. Apenas certifique-se de conceder as permissões necessárias no seu fluxo de trabalho:

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

    Você também pode usar tokens de acesso pessoal(PAT) se preferir.


Eventos Suportados

Dropstone pode ser acionado pelos seguintes eventos do GitHub:

Tipo de EventoAcionado PorDetalhes
issue_commentComentário em um problema ou PRMencione /dropstone em seu comentário. Dropstone lê o contexto e pode criar branches, abrir PRs ou responder.
pull_request_review_commentComentário em linhas de código específicas em um PRMencione /dropstone ao revisar código. Dropstone recebe caminho do arquivo, números de linha e contexto de diff.
issuesProblema aberto ou editadoAcione automaticamente Dropstone quando problemas são criados ou modificados. Requer entrada prompt.
pull_requestPR aberto ou atualizadoAcione automaticamente Dropstone quando PRs são abertos, sincronizados ou reabertas. Útil para revisões automatizadas.
scheduleAgendamento baseado em cronExecute Dropstone em um agendamento. Requer entrada prompt. A saída vai para logs e PRs (sem problema para comentar).
workflow_dispatchAcionamento manual da interface do GitHubAcione Dropstone sob demanda via aba Actions. Requer entrada prompt. A saída vai para logs e PRs.

Exemplo de Agendamento

Execute Dropstone em um agendamento para realizar tarefas 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 agendados, a entrada prompt é obrigatória já que não há comentário para extrair instruções. Fluxos de trabalho agendados são executados sem um contexto de usuário para verificação de permissão, portanto o fluxo de trabalho deve conceder contents: write e pull-requests: write se você espera que Dropstone crie branches ou PRs.


Exemplo de Pull Request

Revise automaticamente PRs quando são abertos ou atualizados:

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, se nenhum prompt for fornecido, Dropstone usa como padrão revisar o pull request.


Exemplo de Triagem de Problemas

Faça triagem automaticamente de novos problemas. Este exemplo filtra para contas com mais de 30 dias para reduzir 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, a entrada prompt é obrigatória já que não há comentário para extrair instruções.


Prompts personalizados

Substitua o prompt padrão para personalizar o comportamento do Dropstone para seu fluxo de trabalho.

- 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

Isso é útil para aplicar critérios de revisão específicos, padrões de codificação ou áreas de foco relevantes para seu projeto.


Exemplos

Aqui estão alguns exemplos de como você pode usar Dropstone no GitHub.

  • Explicar um problema

    Adicione este comentário em um problema do GitHub.

    /dropstone explain this issue
    

    Dropstone lerá toda a thread, incluindo todos os comentários, e responderá com uma explicação clara.

  • Corrigir um problema

    Em um problema do GitHub, diga:

    /dropstone fix this
    

    E Dropstone criará uma nova branch, implementará as alterações e abrirá um PR com as alterações.

  • Revisar PRs e fazer alterações

    Deixe o seguinte comentário em um PR do GitHub.

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

    Dropstone implementará a alteração solicitada e fará commit na mesma PR.

  • Revisar linhas de código específicas

    Deixe um comentário diretamente em linhas de código na aba "Files" do PR. Dropstone detecta automaticamente o arquivo, números de linha e contexto de diff para fornecer respostas precisas.

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

    Ao comentar em linhas específicas, Dropstone recebe:

    • O arquivo exato sendo revisado
    • As linhas específicas de código
    • O contexto de diff circundante
    • Informações de número de linha

    Isso permite solicitações mais direcionadas sem precisar especificar caminhos de arquivo ou números de linha manualmente.

Ctrl+I