prwatch

Por Rene Turcios. Triaje de atención de PR para contribuyentes: clasifica tus PR abiertos según lo que necesita atención, incluyendo cambios solicitados, hilos de revisión sin resolver, verificaciones fallidas reales, conflictos y silencio de revisores. CLI y servidor MCP con herramientas attention_report, list_my_prs, pr_status.

Documentación

prwatch

¿Qué necesita tu atención ahora mismo? prwatch responde esa pregunta para los colaboradores con PRs abiertos.

Nació de un día real: tres PRs abiertos en un repositorio, revisiones de CodeRabbit en los tres, un fallo de despliegue en Vercel que no era culpa del autor, y sin forma de ver de un vistazo qué PR realmente necesitaba trabajo. Leer manualmente cada hilo de revisión en cada PR es la forma antigua. prwatch clasifica tus PRs abiertos por urgencia con razones legibles para humanos, para que abras el correcto primero.

Instalación

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

Configura GITHUB_TOKEN (o GH_TOKEN) para el límite de tasa autenticado de 5000 req/hora. Sin token, funciona con la tasa no autenticada de 60 req/hora.

Autenticación

Un token es opcional. El modo --repo y prwatch show funcionan sin uno, ya que nunca tocan la API de búsqueda. Los informes a nivel de cuenta (attention / list sin --repo) usan la búsqueda de author:, que GitHub restringe para llamadas no autenticadas en algunas cuentas, por lo que se recomienda un token allí. Un token clásico sin ámbitos es suficiente para datos públicos; sin uno, recibes una guía clara en lugar de un error 422 crudo.

Uso de 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

Ejemplo de salida:

[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 ofrece el análisis profundo: estado de la revisión, cada verificación con su conclusión, hilos de revisión sin resolver con archivo y línea, y el desglose completo de atención.

Servidor MCP

El mismo motor que la CLI, expuesto a través de stdio para Claude, Cursor y Cline:

HerramientaQué hace
attention_report({user?, repo?})Informe de atención clasificado con puntuaciones, categorías y razones
list_my_prs({user?, repo?})Lista simple de PRs abiertos
pr_status({url})Análisis profundo de un PR: revisiones, verificaciones, hilos, puntuación de atención

Configuración de Claude Code / Cursor (~/.claude.json o configuración de MCP):

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

Inícialo directamente con npm run start:mcp.

Cómo funciona la puntuación

Cada PR abierto comienza con 50 puntos y gana o pierde urgencia según las señales:

SeñalEfecto
Cambios solicitados por un revisor+30, categoría ACTION
Conflicto de fusión (rama no fusionable)+25, categoría ACTION
Verificación fallida en tu código (build, test, lint, DCO)+12 cada una, categoría ACTION
Hilo de revisión sin resolver que solicita un cambio+8 cada uno, categoría ACTION
Aprobado, verificaciones en verde, fusionableREADY, puntuación limitada a 45
Verificación fallida que no es tu culpa (por ejemplo, Vercel "Authorization required to deploy")clasificado como BLOCKED_EXTERNAL, baja urgencia
Verificaciones aún en ejecuciónWAITING
7+ días de silencio sin aprobaciónSTALE

La puntuación se limita a 0-100. Las categorías se clasifican en este orden: ACTION, BLOCKED_EXTERNAL, READY, WAITING, STALE. El informe ordena por puntuación y luego por categoría.

Dos decisiones de criterio que vale la pena conocer:

  1. Los bloqueos externos no son fallos. Un despliegue de vista previa que falla porque un mantenedor debe autorizarlo está marcado como "failure" por GitHub, pero ningún cambio de código lo soluciona. prwatch detecta patrones conocidos (autorización requerida, iniciar sesión para desplegar, esperando aprobación del equipo) y los clasifica como externos, para que nunca inflen tu urgencia.
  2. La resolución de hilos se aproxima. La API REST de GitHub no puede decir si un hilo de revisión está resuelto, por lo que los comentarios de revisión de nivel superior de autores no contribuyentes cuentan como hilos abiertos. Los comentarios que sugieren un cambio (sugerencias de código, "por favor", "considera", "arregla") cuentan como accionables.

Desarrollo

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

Los fixtures en test/fixtures/ están modelados según las formas reales de los PRs #92, #93 y #94 de shadcn-labs/pdfcn del 2026-10-13. Las pruebas nunca tocan la red.

Licencia

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