Saltar al contenido
claudemods

cc-pr-tracker: estado de PR en Claude Code sobre tu prompt

Una línea por PR de GitHub sobre el prompt de Claude Code: merge, revisión, checks requeridos y avisos al cambiar.

Permisos

  • Lee archivosPuede leer archivos y listar directorios en tu equipo ($.fs.read / list / stat / exists).
  • Ejecuta comandosPuede ejecutar programas de shell en tu equipo ($.process.run / spawn). Revisa el código fuente para ver exactamente cuáles.
  • Intercepta llamadas a herramientasVe cada llamada a herramienta que hace Claude (tool.call / tool.check) y podría bloquearla o modificarla.
  • Lee tus promptsPuede ver lo que escribes y la transcripción de la conversación (prompt.* / session.append / session.messages).
  • Modifica la interfazDibuja en la interfaz de Claude Code: bandas, paneles, texto de estado, avisos (ui.render / $.ui.*).
  • Añade comandos/herramientasRegistra nuevos comandos de barra o herramientas invocables por ti o por Claude ($.command.register / $.tool.register).
  • Guarda datosConserva datos entre sesiones en el almacén privado del plugin ($.store.*).
probado con
v2.1.296
última prueba
requiere
Claude Code ≥ 2.1.287
superficies
sobre el prompt, aviso

Instalar dentro de Claude Code:

/plugin install cc-pr-tracker --marketplace sezaakgun/cc-pr-tracker
Todas las opciones de instalación ↓

¿Qué hace este mod?

cc-pr-tracker es un mod de la comunidad creado por Seza Akgün (sezaakgun) que mantiene a la vista el estado de PR en Claude Code mientras trabajas. Pega la URL de un pull request de GitHub, o deja que Claude abra uno, y el PR recibe una línea sobre el prompt: su estado de merge, la decisión de revisión, el número de checks requeridos que han pasado, fallado o siguen pendientes, y el título. Por defecto se actualiza cada minuto.

Cuando cambia un check requerido o se mueve el estado de merge, recibes un toast, una franja de un segundo sobre el prompt y, en macOS, un sonido del sistema. Claude también recibe una breve nota automática en su siguiente turno con el enlace al log del check fallido. Al pasar el ratón por una línea aparecen botones para abrir el PR, copiar su URL, silenciarlo, mostrar un panel de detalles o dejar de vigilarlo. Claude puede consultar el estado por sí mismo con una herramienta pr_status, y /prs imprime los PR vigilados como texto en cualquier lugar.

Se parece a Git Branch, que muestra la rama local, pero mira GitHub en lugar de tu árbol de trabajo. Para un simple toast de "turno terminado" consulta Done Toast. El README del autor pide Claude Code 2.1.289 o posterior para todas las funciones; las versiones anteriores solo guardan la lista en memoria.

Demo

La grabación usa el script gh sustituto del propio autor (docs/record/gh en el repositorio), que responde a la llamada GraphQL del mod con JSON predefinido, así que no se consulta ningún repositorio real de GitHub. Inicia Claude Code con el mod cargado en el pequeño proyecto de demostración y pega dos URLs de PR como un único prompt: acme/api#87 y acme/storefront#418. No se ejecuta ningún turno del modelo. Claude Code muestra "Prompt dropped by a hook: watching acme/api#87, watching acme/storefront#418", y aparecen dos líneas sobre el prompt, cada una con el repositorio y el número, blocked en rojo, approved en verde, un recuento de checks en verde, un recuento de pendientes en amarillo y el título del PR.

Instalación

Usa cualquiera de los métodos del bloque de instalación; instalan directamente desde el marketplace del propio autor. También necesitas gh instalado y con sesión iniciada (gh auth status). Para probarlo durante una sesión desde un clon, ejecuta claude --plugin-dir . en el repositorio. Ejecuta /plugin para confirmar que el mod está activo.

$ install cc-pr-tracker

Requiere Claude Code ≥ 2.1.287

Se instala desde el marketplace del autor: sezaakgun/cc-pr-tracker

  1. 1.Una línea, dentro de Claude Code

    /plugin install cc-pr-tracker --marketplace sezaakgun/cc-pr-tracker

    Pégala en una sesión abierta (v2.1.275+). Claude Code te pedirá primero añadir el marketplace.

  2. 2.Desde tu shell

    claude plugin marketplace add sezaakgun/cc-pr-tracker
    claude plugin install cc-pr-tracker@cc-pr-tracker

    Después ejecuta /reload-plugins en cualquier sesión que ya esté abierta.

  3. 3.Pruébalo sin instalarlo

    git clone https://github.com/sezaakgun/cc-pr-tracker
    claude --plugin-dir ./cc-pr-tracker

    Carga el mod solo para una sesión. No se añade nada a tu configuración.

Cómo funciona

El plugin es un único módulo de hooks. prompt.submit lee las URLs de PR de tu prompt, turn.complete y un hook tool.call sobre Bash capturan URLs en la respuesta de Claude y en la salida de gh pr create, y ui.render sobre AbovePrompt dibuja las líneas. Un temporizador iniciado en session.start consulta cada PR vigilado a través de gh. Esta es la llamada, de hooks/register.tsx:

const gh = async (args: string[]) => {
  const { stdout, stderr, exitCode } = await $.process.run(['gh', ...args], { timeoutMs: 30_000 })
  if (exitCode) throw new Error(stderr.trim() || `gh exited ${exitCode}`)
  return JSON.parse(stdout)
}

Cada consulta es una única petición de solo lectura gh api graphql que pide el título del PR, su estado, el estado de merge, la decisión de revisión y los checks de su commit de cabeza, con el propio indicador isRequired de GitHub. Solo se conserva la última ejecución de cada check, con las mismas categorías que usa gh pr checks. Si GitHub rechaza GraphQL (como ocurre en claude.ai/code), el mod pasa a hacer entre cuatro y seis llamadas REST por consulta. Una consulta fallida conserva los valores anteriores y marca la línea como refresh failed, de modo que un corte de red momentáneo no se notifica como un cambio. La primera carga de un PR y las entradas o salidas del estado de merge temporal unknown nunca generan avisos.

Personalízalo

Abre /config y busca las filas de cc-pr-tracker; cada una acepta también /config cc-pr-tracker.<field>=<value> y se aplica al instante. Las doce opciones son: Mute all PR alerts (silenciar todos los avisos), Alert on (cada cambio, fallos y listo para merge, o solo fallos), Tell Claude about changes (avisar a Claude de los cambios), Alert sound (sonido de aviso), Poll every (intervalo de consulta en segundos), Auto-watch PRs (vigilar PR automáticamente), Remember watched PRs (recordar los PR vigilados en esta sesión o en este proyecto), Stop watching merged or closed PRs (dejar de vigilar los PR fusionados o cerrados), Count all checks (contar todos los checks), Alert on review changes (avisar de cambios en la revisión), Flash strip (franja parpadeante) y Show PRs in the transcript (mostrar los PR en la transcripción). Los botones que aparecen al pasar el ratón por la línea silencian o dejan de vigilar un PR concreto.

Permisos y seguridad

Leemos todos los archivos que carga el plugin: .claude-plugin/plugin.json, hooks/hooks.json, hooks/register.tsx (unas 740 líneas de TypeScript legible), las declaraciones de tipos, los dos archivos de tests, además de los scripts auxiliares y el workflow del repositorio. No hay package.json, script de instalación, código empaquetado o minificado, código remoto ni import() dinámico. Los scripts de docs/record/ solo generan las imágenes del README y el plugin no los carga.

Hallazgos, todos coherentes con el README:

  • Red: el mod no hace peticiones por sí mismo. Ejecuta gh api graphql (o gh api repos/... vía REST) para los PR que vigilas, así que el propietario, el repositorio y el número de PR van a github.com con tu sesión de gh.
  • Procesos: gh para las consultas; open o xdg-open para el botón de abrir; afplay con un sonido del sistema de macOS en un aviso; y, solo dentro de la terminal cmux, la propia CLI de cmux desde CMUX_BUNDLED_CLI_PATH para hacer parpadear el panel y publicar una notificación. Los argumentos se pasan como arrays, no como cadenas de shell.
  • Entorno: solo lee CMUX_BUNDLED_CLI_PATH y CMUX_SURFACE_ID. Nunca escribe variables de entorno.
  • Archivos: no escribe archivos. La lista de vigilancia se guarda en el $.store y el $.state propios del plugin, por sesión o por proyecto; las listas que no se consultan en 30 días se eliminan.
  • Influencia en el prompt: tras un aviso añade a la conversación una nota con rol de usuario. La nota indica que es un aviso automático no escrito por ti y cita los nombres de los checks de GitHub como datos, con un máximo de 100 caracteres. Los caracteres de control del texto de GitHub se eliminan antes de mostrarlo. Puedes desactivar la nota con "Tell Claude about changes". También registra una herramienta pr_status para Claude.
  • Hooks que bloquean: un prompt que solo contiene URLs de PR se descarta (sin turno del modelo); ese es el comportamiento documentado. Un prompt más largo pasa sin cambios. El hook de Bash solo lee la salida de gh pr create.
  • Daemons y telemetría: ninguno. El temporizador de consultas vive dentro de Claude Code y se detiene con él. Sin analíticas.
  • Requisitos: gh, con sesión iniciada. macOS para los sonidos; cmux es opcional.
  • Licencia: MIT, con archivo LICENSE.

claude plugin validate no informó de errores ni avisos; sus notas enumeran cuatro hooks sin .catch (config.set, prompt.submit y los dos hooks tool.call), lo cual es solo informativo. Los 70 tests del autor pasaron en Claude Code 2.1.296.

Lee archivos
Puede leer archivos y listar directorios en tu equipo ($.fs.read / list / stat / exists).
Ejecuta comandos
Puede ejecutar programas de shell en tu equipo ($.process.run / spawn). Revisa el código fuente para ver exactamente cuáles.
Intercepta llamadas a herramientas
Ve cada llamada a herramienta que hace Claude (tool.call / tool.check) y podría bloquearla o modificarla.
Lee tus prompts
Puede ver lo que escribes y la transcripción de la conversación (prompt.* / session.append / session.messages).
Modifica la interfaz
Dibuja en la interfaz de Claude Code: bandas, paneles, texto de estado, avisos (ui.render / $.ui.*).
Añade comandos/herramientas
Registra nuevos comandos de barra o herramientas invocables por ti o por Claude ($.command.register / $.tool.register).
Guarda datos
Conserva datos entre sesiones en el almacén privado del plugin ($.store.*).

Compatibilidad y solución de problemas

Comprobado con Claude Code 2.1.296 en macOS (validate, tests y la grabación). Si algo no funciona:

  • La URL se envía al modelo. El mod no se cargó. Comprueba que claude --version es 2.1.287 o posterior y que /plugin muestra cc-pr-tracker entre los mods activos.
  • gh failed: … en una línea. Ejecuta gh pr view <url> en una terminal; normalmente gh no tiene sesión iniciada o no puede ver ese repositorio.
  • No aparecen botones al pasar el ratón. Tu terminal no informa del ratón; pega la URL de nuevo para dejar de vigilarla, o usa /prs.
  • No hay sonido. Solo macOS con /System/Library/Sounds reproduce sonidos.
  • Solo se reconocen URLs de github.com; los hosts de GitHub Enterprise no.

Preguntas frecuentes

¿cc-pr-tracker necesita un token de GitHub o una clave de API?
Necesita la CLI de GitHub (gh), con sesión iniciada y acceso a los repositorios que vigilas. El mod no guarda ningún token; ejecuta gh en cada consulta, así que es el propio inicio de sesión de gh el que decide qué puede ver.
¿Con qué frecuencia consulta y gasta tokens del modelo?
Cada 60 segundos por defecto, una llamada GraphQL por PR a través de gh; el intervalo va de 30 a 3600 segundos en /config. Las consultas no llaman al modelo. Solo un aviso añade una nota breve que Claude lee en su siguiente turno.
¿Por qué desapareció mi prompt al pegar la URL de un PR?
Un prompt que solo contiene URLs de PR lo descarta el mod y empieza (o deja) de vigilarlos, sin turno del modelo. Claude Code muestra "Prompt dropped by a hook: watching owner/repo#N". Una URL dentro de un prompt más largo se vigila y el prompt se ejecuta igualmente.
¿Puede Claude ver el estado del PR?
Sí. El mod registra una herramienta pr_status, así que Claude puede pedir el estado, el estado de merge, la revisión y los checks de los PR vigilados en lugar de llamar a gh. Tras un aviso también añade una nota automática, marcada como no escrita por ti, con los enlaces a los logs de los checks fallidos.
¿Cómo desactivo los avisos?
Pasa el ratón por una línea y pulsa silenciar para un PR, o activa "Mute all PR alerts" en /config. Las líneas se siguen actualizando, pero nada muestra toasts, parpadea, suena ni avisa a Claude. "Alert sound", "Flash strip" y "Tell Claude about changes" desactivan partes concretas.
Rama git sobre el prompt funcionando en Claude CodeDestacado

Rama git sobre el prompt

Tu rama git, los archivos cambiados y el estado ahead/behind en una franja de una línea sobre el prompt de Claude Code.

  • sobre el prompt
  • Ejecuta comandos
  • Intercepta llamadas a herramientas
  • Modifica la interfaz

probado con v2.1.310

Aviso de finalización funcionando en Claude CodeDestacado

Aviso de finalización

Un toast «Done in 2m 14s» y un sonido al terminar un turno largo de Claude, más un aviso de escritorio opcional.

  • aviso
  • Ejecuta comandos
  • Modifica la interfaz
  • Reproduce sonido

probado con v2.1.310

Más en Git y GitHub, Toasts y notificaciones.