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:
| Herramienta | Qué 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ñal | Efecto |
|---|---|
| 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, fusionable | READY, 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ón | WAITING |
| 7+ días de silencio sin aprobación | STALE |
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:
- 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.
- 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.