prwatch

Por Rene Turcios. Triagem de atenção para PRs para contribuidores: classifica seus PRs abertos pelo que precisa de atenção, incluindo alterações solicitadas, threads de revisão não resolvidas, verificações com falha real, conflitos e silêncio dos revisores. CLI e servidor MCP com ferramentas attention_report, list_my_prs, pr_status.

Documentação

prwatch

O que precisa da sua atenção agora? prwatch responde a essa pergunta para contribuidores com PRs abertos.

Ele nasceu de um dia real: três PRs abertos em um repositório, revisões do CodeRabbit em todos os três, uma falha de deploy na Vercel que não era culpa do autor, e nenhuma maneira de ver rapidamente qual PR realmente precisava de trabalho. Ler manualmente cada thread de revisão em cada PR é o jeito antigo. prwatch classifica seus PRs abertos por urgência com razões legíveis para humanos, para que você abra o certo primeiro.

Instalação

Requisitos: Node 20+.

git clone https://github.com/CloudCorpRecords/prwatch
cd prwatch
npm install
npm run build
npm link   # or run with npx tsx src/cli.ts

Defina GITHUB_TOKEN (ou GH_TOKEN) para o limite de taxa autenticado de 5000 req/h. Sem um token, funciona no limite não autenticado de 60 req/h.

Autenticação

Um token é opcional. O modo --repo e prwatch show funcionam sem um, pois nunca tocam a API de busca. Relatórios de conta inteira (attention / list sem --repo) usam a busca author:, que o GitHub restringe para chamadas não autenticadas em algumas contas, então um token é recomendado nesses casos. Um token clássico sem escopos é suficiente para dados públicos; sem um, você recebe orientação clara em vez de um erro 422 bruto.

Uso via CLI

prwatch attention                     # rank my open PRs by urgency
prwatch attention --user octocat --repo shadcn-labs/pdfcn
prwatch attention --json              # machine readable output
prwatch list                          # simple one line per PR
prwatch show https://github.com/shadcn-labs/pdfcn/pull/92

Exemplo de saída:

[ACTION]  74  shadcn-labs/pdfcn#92
         feat: add Business Letter block
         - 4 unresolved review threads need a reply or code change (business-letter.tsx, business-letter.mdx)
         https://github.com/shadcn-labs/pdfcn/pull/92
[READY]   45  shadcn-labs/pdfcn#93
         feat: add Resume block
         - Approved and green, ready to merge.
         https://github.com/shadcn-labs/pdfcn/pull/93

prwatch show dá o mergulho profundo: estado da revisão, cada verificação com sua conclusão, threads de revisão não resolvidas com arquivo e linha, e o detalhamento completo da atenção.

Servidor MCP

Mesmo motor da CLI, exposto via stdio para Claude, Cursor e Cline:

FerramentaO que faz
attention_report({user?, repo?})Relatório de atenção ranqueado com pontuações, categorias e razões
list_my_prs({user?, repo?})Lista simples de PRs abertos
pr_status({url})Mergulho profundo em um PR: revisões, verificações, threads, pontuação de atenção

Configuração do Claude Code / Cursor (~/.claude.json ou configurações do MCP):

{
  "mcpServers": {
    "prwatch": {
      "command": "node",
      "args": ["/absolute/path/to/prwatch/dist/mcp.js"],
      "env": { "GITHUB_TOKEN": "ghp_your_token_here" }
    }
  }
}

Inicie diretamente com npm run start:mcp.

Como a pontuação funciona

Cada PR aberto começa com 50 pontos e ganha ou perde urgência com base em sinais:

SinalEfeito
Mudanças solicitadas por um revisor+30, categoria ACTION
Conflito de merge (branch não mesclável)+25, categoria ACTION
Verificação falhando no seu código (build, test, lint, DCO)+12 cada, categoria ACTION
Thread de revisão não resolvida que pede uma mudança+8 cada, categoria ACTION
Aprovado, verificações verdes, mesclávelREADY, pontuação limitada a 45
Verificação falhando que não é sua culpa (por exemplo, Vercel "Authorization required to deploy")classificada como BLOCKED_EXTERNAL, baixa urgência
Verificações ainda em execuçãoWAITING
7+ dias de silêncio sem aprovaçãoSTALE

A pontuação é limitada a 0-100. As categorias são classificadas nesta ordem: ACTION, BLOCKED_EXTERNAL, READY, WAITING, STALE. O relatório ordena por pontuação e depois por categoria.

Duas decisões de julgamento que vale a pena conhecer:

  1. Bloqueios externos não são falhas. Um deploy de preview que falha porque um mantenedor precisa autorizá-lo é marcado como "falha" pelo GitHub, mas nenhuma mudança de código resolve isso. prwatch detecta padrões conhecidos (autorização necessária, entrar para fazer deploy, aguardando aprovação da equipe) e os classifica como externos, para que nunca inflacionem sua urgência.
  2. A resolução de threads é aproximada. A API REST do GitHub não consegue dizer se uma thread de revisão está resolvida, então comentários de revisão de nível superior de não autores contam como threads abertas. Comentários que sugerem uma mudança (sugestões de código, "por favor", "considere", "corrija") contam como acionáveis.

Desenvolvimento

npm install
npm test        # tsx --test test/*.test.ts
npm run build   # tsc, emits to dist/
npm run dev     # run the CLI from source

Os fixtures em test/fixtures/ são modelados com base nas formas reais dos PRs #92, #93 e #94 de shadcn-labs/pdfcn de 2026-10-13. Os testes nunca tocam a rede.

Licença

MIT. Copyright (c) 2026 Rene Turcios. Veja LICENSE.