Mod de branch do Git para Claude Code: branch e alterações 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.
Permissões
- 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.
- Altera a interfaceDesenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
- testado com
- v2.1.291
- último teste
- requer
- Claude Code ≥ 2.1.287
- superfícies
- acima do prompt
- código-fonte
- ClaudeMods (MIT)
Instale dentro do Claude Code:
/plugin install cm-git-branch --marketplace rotbit/claudemods-marketplaceO que este mod faz?
O mod de branch do Git para Claude Code coloca uma linha acima da caixa de entrada que diz onde você está no git: ⎇ main · 3 changed · ↑1 ↓0. Você vê o nome da branch, quantos caminhos o git status informa como alterados e quanto a branch está à frente e atrás do upstream. Quando o HEAD está destacado (detached), ele mostra o hash curto do commit no lugar. Fora de um repositório git, a linha simplesmente não aparece.
Ele ajuda principalmente quando o Claude está editando por você. Você percebe na hora se uma sessão começou na main em vez de uma branch de feature, e o contador de alterações sobe conforme o Claude edita, então você sabe quando é hora de revisar e fazer commit. Requer Claude Code 2.1.287 ou posterior.
Demonstração
A gravação inicia o Claude Code com o mod carregado em um pequeno projeto de demonstração. Antes do primeiro prompt, a faixa acima da entrada já mostra a branch e o número de arquivos alterados. Em seguida, o Claude recebe o pedido de listar os arquivos em src; a faixa continua no lugar enquanto o turno roda e é atualizada quando o turno termina.
Instalação
Use qualquer um dos três métodos do bloco de instalação. O método de uma linha funciona dentro de uma sessão em andamento; o método pelo shell precisa de /reload-plugins nas sessões que já estão abertas.
$ install cm-git-branch
Requer Claude Code ≥ 2.1.287
1.Uma linha, dentro do Claude Code
/plugin install cm-git-branch --marketplace rotbit/claudemods-marketplaceCole em uma sessão em andamento (v2.1.275+). O Claude Code pede primeiro para adicionar o marketplace.
2.Pelo seu shell
claude plugin marketplace add rotbit/claudemods-marketplace claude plugin install cm-git-branch@claudemodsDepois execute /reload-plugins em qualquer sessão que já esteja aberta.
3.Experimente sem instalar
git clone https://github.com/rotbit/claudemods-marketplace claude --plugin-dir ./claudemods-marketplace/cm-git-branchCarrega o mod só para uma sessão. Nada é adicionado às suas configurações.
Como funciona
O mod guarda o status mais recente do git em um átomo $.state e o desenha no ponto de renderização AbovePrompt. Estes são os hooks de hooks/register.tsx:
on('session.start', async ($, e, next) => {
const started = await next(e)
await refresh($)
$.clock.every(intervalMs, () => {
refresh($).catch(() => undefined)
})
return started
})
on('turn.complete', async ($, e, next) => {
const result = await next(e)
if (e.agentId === undefined) await refresh($)
return result
})
on('tool.call', { tool: 'Bash' }, async ($, e, next) => {
const ran = await next(e)
if (mentionsGit(e.command)) await refresh($)
return ran
}).catch(($, e, next) => next(e))Há três pontos de atualização. session.start faz a primeira leitura e inicia um temporizador para captar mudanças feitas fora do Claude Code. turn.complete atualiza depois de cada turno do loop principal; turnos de subagentes (com agentId) são ignorados. O hook tool.call para Bash deixa o comando rodar primeiro com await next(e) e só atualiza se o comando mencionar git ou gh pr checkout/merge. O .catch dele repassa a chamada, então uma falha no mod nunca bloqueia o seu comando.
refresh executa um único git status --porcelain=v1 -b em $.session.cwd(). Esse comando sozinho fornece a branch, o upstream, o ahead/behind e a lista de alterações, então não são necessárias chamadas separadas de rev-parse e rev-list. Uma função pura, parseStatus, em hooks/git.ts, trata repositórios novos sem commits e o HEAD destacado. Se o git estiver ausente ou lento, a faixa é escondida em vez de mostrar dados desatualizados.
Personalize
Altere estas opções em /config, sob o nome do mod; o mod recarrega com os novos valores. O padrão do temporizador é definido no início de register, Math.max(2_000, ... 15_000), que também impõe o mínimo de 2 segundos. Para mudar a aparência da faixa, edite os elementos Text no hook ui.render: a branch é desenhada em bold e cyan, e os detalhes em dimColor.
| Configuração | Tipo | Padrão | O que faz |
|---|---|---|---|
| intervalMs | number | 15000 | Refresh interval (ms). How often to re-read git status between turns, in milliseconds (at least 2000). |
| showAheadBehind | boolean | true | Show ahead/behind. Show commits ahead of and behind the upstream branch (↑1 ↓0). |
| hideWhenClean | boolean | false | Hide when clean. Hide the band while the work tree is clean and in sync with its upstream. |
Altere isso no Claude Code com /config — o mod recarrega na hora.
Permissões e segurança
Executa comandos aparece porque o mod chama $.process.run. Ele executa exatamente dois programas: git status --porcelain=v1 -b e, somente quando o HEAD está destacado, git rev-parse --short HEAD. Os dois são somente leitura, usam um array argv sem shell e têm timeout de 10 segundos.
Intercepta chamadas de ferramentas aparece porque ele usa o hook tool.call para Bash. Ele apenas observa: nunca altera nem nega um comando, e atualiza depois que o comando termina. Altera a interface cobre a faixa.
Ele não lê o conteúdo de arquivos, não usa a rede e não chama o modelo. Para desligá-lo de vez, execute /plugin disable cm-git-branch; para iniciar uma sessão com todos os mods desligados, use claude --safe-mode.
- 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.
- Altera a interface
- Desenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
Compatibilidade e solução de problemas
Testado com Claude Code 2.1.291 no macOS, no terminal. Se a faixa não aparecer, verifique estes pontos na ordem:
claude --versioné 2.1.287 ou posterior.- A sessão foi iniciada dentro de um repositório git;
git statusna mesma pasta deve funcionar. - O mod está ativado: o menu
/plugino mostra na aba Installed, com uma linha "mod active". - Você instalou pelo shell com uma sessão aberta: execute
/reload-plugins. - Uma pesquisa ou outro prompt está aberto acima da entrada. A faixa sai do caminho enquanto ele está visível e volta depois.
Em repositórios muito grandes, aumente intervalMs para que o git status rode com menos frequência.
Perguntas frequentes
- O mod de branch do Git para Claude Code altera o meu repositório?
- Não. Ele só executa git status --porcelain=v1 -b, mais git rev-parse --short HEAD quando o HEAD está destacado. Os dois comandos são somente leitura, rodam sem shell e expiram após 10 segundos.
- Por que a faixa não aparece?
- Os motivos mais comuns são que a pasta da sessão não é um repositório git, o Claude Code é anterior à 2.1.287, o mod está desativado em /plugin ou uma pesquisa está ocupando o espaço acima do prompt. Depois de instalar pelo shell, execute /reload-plugins.
- Ele percebe um checkout que eu faço em outro terminal?
- Sim, dentro de um intervalo de atualização (15 segundos por padrão). Diminua intervalMs em /config se quiser mais rapidez, até o mínimo de 2 segundos.
- Funciona no app desktop?
- Sim. A faixa AbovePrompt é desenhada no terminal e na aba Code do app desktop. No claude -p e no painel de chat da extensão do VS Code os mods rodam, mas não desenham nada, então a faixa não fica visível ali.
- Posso esconder a faixa quando não há nada para mostrar?
- Ative hideWhenClean. A faixa então some enquanto a árvore de trabalho está limpa e sincronizada com o upstream.
# Mods relacionados

Medidor de contexto
Uso do contexto, dos limites de 5 horas e 7 dias e custo da sessão na barra de status, com aviso perto do limite.
- status
- notificação
- Altera a interface
testado com v2.1.291

Bloquear comandos perigosos
Recusa rm -rf /, force-push na main, DROP TABLE, curl | sh e outros comandos Bash destrutivos antes de rodarem.
- notificação
- Intercepta chamadas de ferramentas
- Altera a interface
testado com v2.1.291

Contador de chamadas de ferramentas
Conta as chamadas de ferramentas do Claude por turno e por sessão, mostra o total junto ao spinner e adiciona /tally.
- spinner
- transcrição
- status
- Intercepta chamadas de ferramentas
- Altera a interface
- Adiciona comandos/ferramentas
testado com v2.1.291