Pular para o conteúdo
claudemods

cc-pr-tracker: status de PR no Claude Code acima do prompt

Uma linha por PR do GitHub acima do prompt do Claude Code: merge, revisão, checks obrigatórios e alertas de mudança.

Permissões

  • Lê arquivosPode ler arquivos e listar diretórios na sua máquina ($.fs.read / list / stat / exists).
  • Executa comandosPode executar programas de shell na sua máquina ($.process.run / spawn). Confira no código-fonte exatamente quais.
  • Intercepta chamadas de ferramentasVê cada chamada de ferramenta que o Claude faz (tool.call / tool.check) e pode bloqueá-la ou alterá-la.
  • Lê seus promptsPode ver o que você digita e a transcrição da conversa (prompt.* / session.append / session.messages).
  • Altera a interfaceDesenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
  • Adiciona comandos/ferramentasRegistra novos comandos de barra ou ferramentas que você ou o Claude podem acionar ($.command.register / $.tool.register).
  • Armazena dadosGuarda dados entre sessões no armazenamento privado do plugin ($.store.*).
testado com
v2.1.296
último teste
requer
Claude Code ≥ 2.1.287
superfícies
acima do prompt, notificação

Instale dentro do Claude Code:

/plugin install cc-pr-tracker --marketplace sezaakgun/cc-pr-tracker
Todas as opções de instalação ↓

O que este mod faz?

O cc-pr-tracker é um mod da comunidade criado por Seza Akgün (sezaakgun) que mantém o status de PR no Claude Code à vista enquanto você trabalha. Cole a URL de um pull request do GitHub, ou deixe o Claude abrir um, e o PR ganha uma linha acima do prompt: o estado de merge, a decisão de revisão, a contagem de checks obrigatórios que passaram, falharam ou estão pendentes, e o título. Por padrão, a linha é atualizada a cada minuto.

Quando um check obrigatório muda ou o estado de merge se altera, você recebe um toast, uma faixa de um segundo acima do prompt e, no macOS, um som do sistema. O Claude também recebe uma nota automática curta no próximo turno, com o link de log do check que falhou. Ao passar o mouse sobre uma linha, aparecem botões para abrir o PR, copiar a URL, silenciá-lo, mostrar um painel de detalhes ou parar de acompanhá-lo. O Claude pode pedir o status por conta própria através de uma ferramenta pr_status, e o /prs imprime os PRs acompanhados como texto em qualquer lugar.

Ele é parecido com o Git Branch, que mostra o branch local, mas olha para o GitHub em vez da sua árvore de trabalho. Para um simples toast de "turno terminado", veja o Done Toast. O README do autor exige o Claude Code 2.1.289 ou mais recente para tudo funcionar; versões mais antigas guardam a lista apenas na memória.

Demonstração

A gravação usa o script gh substituto do próprio autor (docs/record/gh no repositório), que responde à chamada GraphQL do mod com um JSON pronto, então nenhum repositório real do GitHub é consultado. Ela inicia o Claude Code com o mod carregado no pequeno projeto de demonstração e cola duas URLs de PR como um único prompt: acme/api#87 e acme/storefront#418. Nenhum turno do modelo é executado. O Claude Code mostra "Prompt dropped by a hook: watching acme/api#87, watching acme/storefront#418", e duas linhas aparecem acima do prompt, cada uma com o repositório e o número, blocked em vermelho, approved em verde, uma contagem de checks em verde, uma contagem de pendentes em amarelo e o título do PR.

Instalação

Use qualquer um dos métodos do bloco de instalação; eles instalam direto do marketplace do próprio autor. Você também precisa do gh instalado e logado (gh auth status). Para experimentar em uma única sessão a partir de um clone, execute claude --plugin-dir . no repositório. Execute /plugin para confirmar que o mod está ativo.

$ install cc-pr-tracker

Requer Claude Code ≥ 2.1.287

Instala a partir do marketplace do autor: sezaakgun/cc-pr-tracker

  1. 1.Uma linha, dentro do Claude Code

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

    Cole em uma sessão em andamento (v2.1.275+). O Claude Code pede primeiro para adicionar o marketplace.

  2. 2.Pelo seu shell

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

    Depois execute /reload-plugins em qualquer sessão que já esteja aberta.

  3. 3.Experimente sem instalar

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

    Carrega o mod só para uma sessão. Nada é adicionado às suas configurações.

Como funciona

O plugin é um único módulo de hooks. O prompt.submit lê as URLs de PR do seu prompt, o turn.complete e um hook tool.call no Bash capturam URLs na resposta do Claude e na saída do gh pr create, e o ui.render em AbovePrompt desenha as linhas. Um timer iniciado em session.start consulta cada PR acompanhado através do gh. Esta é a chamada, 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 é uma única query somente leitura gh api graphql que busca o título, o estado, o estado de merge, a decisão de revisão e os checks do commit mais recente do PR, com a flag isRequired do próprio GitHub. Só a execução mais recente de cada check é mantida, usando os mesmos grupos que o gh pr checks. Se o GitHub recusar o GraphQL (como faz o claude.ai/code), o mod passa a fazer de quatro a seis chamadas REST por consulta. Uma consulta que falha mantém os valores antigos e marca a linha como refresh failed, para que uma instabilidade de rede não seja relatada como mudança. O primeiro carregamento de um PR e as entradas e saídas do estado de merge temporário unknown nunca geram alerta.

Personalize

Abra o /config e procure as linhas do cc-pr-tracker; cada uma também aceita /config cc-pr-tracker.<field>=<value> e é aplicada na hora. As doze opções são: Mute all PR alerts (silenciar todos os alertas de PR), Alert on (alertar em toda mudança, em falhas e quando estiver pronto para merge, ou só em falhas), Tell Claude about changes (avisar o Claude sobre mudanças), Alert sound (som de alerta), Poll every (intervalo de consulta em segundos), Auto-watch PRs (acompanhar PRs automaticamente), Remember watched PRs (lembrar os PRs acompanhados nesta sessão ou neste projeto), Stop watching merged or closed PRs (parar de acompanhar PRs com merge feito ou fechados), Count all checks (contar todos os checks), Alert on review changes (alertar em mudanças de revisão), Flash strip (faixa piscante) e Show PRs in the transcript (mostrar os PRs na transcrição). Os botões que aparecem ao passar o mouse sobre a linha silenciam ou param de acompanhar um único PR.

Permissões e segurança

Lemos todos os arquivos que o plugin carrega: .claude-plugin/plugin.json, hooks/hooks.json, hooks/register.tsx (cerca de 740 linhas de TypeScript legível), as declarações de tipos, os dois arquivos de teste, além dos scripts auxiliares e do workflow do repositório. Não há package.json, script de instalação, código empacotado ou minificado, código remoto nem import() dinâmico. Os scripts em docs/record/ só produzem as imagens do README e não são carregados pelo plugin.

Constatações, todas de acordo com o README:

  • Rede: o mod não faz nenhuma requisição por conta própria. Ele executa gh api graphql (ou gh api repos/... via REST) para os PRs que você acompanha, então o dono, o repositório e o número do PR vão para o github.com sob o seu login do gh.
  • Processos: gh para as consultas; open ou xdg-open para o botão de abrir; afplay com um som do sistema do macOS em um alerta; e, apenas dentro do terminal cmux, a CLI do próprio cmux a partir de CMUX_BUNDLED_CLI_PATH para piscar o painel e publicar uma notificação. Os argumentos são passados como arrays, não como strings de shell.
  • Ambiente: ele lê apenas CMUX_BUNDLED_CLI_PATH e CMUX_SURFACE_ID. Ele nunca grava variáveis de ambiente.
  • Arquivos: ele não grava arquivos. A lista de PRs acompanhados fica no $.store e no $.state do próprio plugin, indexada por sessão ou por projeto; listas que não são consultadas há 30 dias são removidas.
  • Influência no prompt: depois de um alerta, ele acrescenta uma nota com papel de usuário à conversa. A nota diz que é um aviso automático não escrito por você e cita os nomes dos checks vindos do GitHub como dados, limitados a 100 caracteres. Caracteres de controle no texto do GitHub são removidos antes da exibição. Você pode desligar a nota com "Tell Claude about changes". Ele também registra uma ferramenta pr_status para o Claude.
  • Hooks que bloqueiam: um prompt que contém apenas URLs de PR é descartado (sem turno do modelo); esse é o comportamento documentado. Um prompt mais longo passa sem alterações. O hook do Bash só lê a saída do gh pr create.
  • Daemons e telemetria: nenhum. O timer de consulta vive dentro do Claude Code e para junto com ele. Sem analytics.
  • Requisitos: gh, logado. macOS para os sons; o cmux é opcional.
  • Licença: MIT, com um arquivo LICENSE.

O claude plugin validate não relatou erros nem avisos; as notas dele listam quatro hooks sem .catch (config.set, prompt.submit e os dois hooks tool.call), o que é apenas informativo. Os 70 testes do autor passaram no Claude Code 2.1.296.

Lê arquivos
Pode ler arquivos e listar diretórios na sua máquina ($.fs.read / list / stat / exists).
Executa comandos
Pode executar programas de shell na sua máquina ($.process.run / spawn). Confira no código-fonte exatamente quais.
Intercepta chamadas de ferramentas
Vê cada chamada de ferramenta que o Claude faz (tool.call / tool.check) e pode bloqueá-la ou alterá-la.
Lê seus prompts
Pode ver o que você digita e a transcrição da conversa (prompt.* / session.append / session.messages).
Altera a interface
Desenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
Adiciona comandos/ferramentas
Registra novos comandos de barra ou ferramentas que você ou o Claude podem acionar ($.command.register / $.tool.register).
Armazena dados
Guarda dados entre sessões no armazenamento privado do plugin ($.store.*).

Compatibilidade e solução de problemas

Verificado com o Claude Code 2.1.296 no macOS (validate, testes e a gravação). Se algo não funcionar:

  • A URL é enviada ao modelo. O mod não foi carregado. Confira se o claude --version é 2.1.287 ou mais recente e se o /plugin mostra o cc-pr-tracker entre os mods ativos.
  • gh failed: … em uma linha. Execute gh pr view <url> em um terminal; normalmente o gh não está logado ou não consegue ver aquele repositório.
  • Não há botões ao passar o mouse. O seu terminal não informa os eventos do mouse; cole a URL de novo para parar de acompanhar, ou use o /prs.
  • Não há som. Só o macOS com /System/Library/Sounds toca sons.
  • Apenas URLs do github.com são reconhecidas; hosts do GitHub Enterprise não são.

Perguntas frequentes

O cc-pr-tracker precisa de um token do GitHub ou de uma chave de API?
Ele precisa da GitHub CLI (gh), logada com acesso aos repositórios que você acompanha. O mod não guarda nenhum token; ele executa o gh a cada consulta, então é o próprio login do gh que decide o que ele consegue ver.
Com que frequência ele consulta, e isso gasta tokens do modelo?
A cada 60 segundos por padrão, com uma chamada GraphQL por PR via gh; o intervalo vai de 30 a 3600 segundos no /config. As consultas não chamam o modelo. Só um alerta adiciona uma nota curta que o Claude lê no próximo turno.
Por que o meu prompt sumiu quando colei a URL de um PR?
Um prompt que contém apenas URLs de PR é descartado pelo mod, que passa a acompanhar (ou deixa de acompanhar) esses PRs, sem turno do modelo. O Claude Code mostra "Prompt dropped by a hook: watching owner/repo#N". Uma URL dentro de um prompt mais longo é acompanhada e o prompt roda normalmente.
O Claude consegue ver o status do PR?
Sim. O mod registra uma ferramenta pr_status, então o Claude pode pedir o estado, o estado de merge, a revisão e os checks dos PRs acompanhados em vez de chamar o gh. Depois de um alerta, ele também adiciona uma nota automática, marcada como não escrita por você, com os links de log dos checks que falharam.
Como desligo os alertas?
Passe o mouse sobre uma linha e clique em mute para um PR, ou ative "Mute all PR alerts" no /config. As linhas continuam sendo atualizadas, mas nada gera toast, pisca, toca som ou avisa o Claude. "Alert sound", "Flash strip" e "Tell Claude about changes" desligam partes isoladas.
Branch do Git acima do prompt em execução no Claude CodeDestaque

Branch do Git acima do prompt

Mostra a branch do Git, a contagem de alterações e o status ahead/behind em uma faixa acima do prompt do Claude Code.

  • acima do prompt
  • Executa comandos
  • Intercepta chamadas de ferramentas
  • Altera a interface

testado com v2.1.310

Aviso de conclusão em execução no Claude CodeDestaque

Aviso de conclusão

Um toast "Done in 2m 14s" e um som curto quando um turno longo do Claude termina, com notificação opcional no desktop.

  • notificação
  • Executa comandos
  • Altera a interface
  • Reproduz som

testado com v2.1.310

Mais em Git e GitHub, Toasts e notificações.