Mod de rama git para Claude Code: rama y cambios 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.
Permisos
- 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.
- Modifica la interfazDibuja en la interfaz de Claude Code: bandas, paneles, texto de estado, avisos (ui.render / $.ui.*).
- probado con
- v2.1.291
- última prueba
- requiere
- Claude Code ≥ 2.1.287
- superficies
- sobre el prompt
- código fuente
- ClaudeMods (MIT)
Instalar dentro de Claude Code:
/plugin install cm-git-branch --marketplace rotbit/claudemods-marketplace¿Qué hace este mod?
El mod de rama git para Claude Code coloca una línea sobre el cuadro de entrada que te dice dónde estás en git: ⎇ main · 3 changed · ↑1 ↓0. Ves el nombre de la rama, cuántas rutas aparecen como cambiadas en git status y cuánto va la rama por delante y por detrás de su upstream. Cuando HEAD está desacoplado, muestra en su lugar el hash corto del commit. Fuera de un repositorio git, la línea sencillamente no aparece.
Resulta especialmente útil cuando Claude edita en tu nombre. Te das cuenta enseguida si una sesión empezó en main en lugar de en una rama de funcionalidad, y el contador de cambios sube a medida que Claude edita, así que sabes cuándo toca revisar y hacer commit. Requiere Claude Code 2.1.287 o posterior.
Demo
La grabación inicia Claude Code con el mod cargado en un pequeño proyecto de demostración. Antes del primer prompt, la franja sobre la entrada ya muestra la rama y el número de archivos cambiados. Después se pide a Claude que liste los archivos de src; la franja permanece en su sitio mientras se ejecuta el turno y se actualiza cuando el turno termina.
Instalación
Usa cualquiera de los tres métodos del bloque de instalación. El método de una línea funciona dentro de una sesión en marcha; el método desde la shell necesita /reload-plugins en las sesiones que ya están abiertas.
$ install cm-git-branch
Requiere Claude Code ≥ 2.1.287
1.Una línea, dentro de Claude Code
/plugin install cm-git-branch --marketplace rotbit/claudemods-marketplacePégala en una sesión abierta (v2.1.275+). Claude Code te pedirá primero añadir el marketplace.
2.Desde tu shell
claude plugin marketplace add rotbit/claudemods-marketplace claude plugin install cm-git-branch@claudemodsDespués ejecuta /reload-plugins en cualquier sesión que ya esté abierta.
3.Pruébalo sin instalarlo
git clone https://github.com/rotbit/claudemods-marketplace claude --plugin-dir ./claudemods-marketplace/cm-git-branchCarga el mod solo para una sesión. No se añade nada a tu configuración.
Cómo funciona
El mod guarda el último estado de git en un átomo de $.state y lo dibuja en el punto de renderizado AbovePrompt. Estos son los 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))Hay tres puntos de actualización. session.start toma la primera lectura e inicia un temporizador para los cambios hechos fuera de Claude Code. turn.complete actualiza tras cada turno del bucle principal; los turnos de subagentes (con un agentId) se omiten. El hook de tool.call para Bash deja que el comando se ejecute primero con await next(e) y después actualiza solo si el comando menciona git o gh pr checkout/merge. Su .catch deja pasar la llamada, así que un fallo del mod nunca bloquea tu comando.
refresh ejecuta un único git status --porcelain=v1 -b en $.session.cwd(). Ese comando da la rama, el upstream, el estado ahead/behind y la lista de cambios, así que no hacen falta llamadas separadas a rev-parse y rev-list. Una función pura, parseStatus en hooks/git.ts, se encarga de los repositorios nuevos sin commits y del HEAD desacoplado. Si git no está instalado o tarda demasiado, la franja se oculta en lugar de mostrar datos desactualizados.
Personalízalo
Cambia estas opciones en /config bajo el nombre del mod; el mod se recarga con los nuevos valores. El valor por defecto del temporizador se fija al principio de register, Math.max(2_000, ... 15_000), que además impone el mínimo de 2 segundos. Para cambiar el aspecto de la franja, edita los elementos Text del hook de ui.render: la rama se dibuja en bold y en cyan, y los detalles con dimColor.
| Ajuste | Tipo | Valor por defecto | Qué hace |
|---|---|---|---|
| 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. |
Cámbialos en Claude Code con /config: el mod se recarga en caliente.
Permisos y seguridad
Ejecuta comandos aparece porque el mod llama a $.process.run. Ejecuta exactamente dos programas: git status --porcelain=v1 -b y, solo cuando HEAD está desacoplado, git rev-parse --short HEAD. Ambos son de solo lectura, usan un array argv sin shell y tienen un tiempo límite de 10 segundos.
Intercepta llamadas a herramientas aparece porque se engancha a tool.call para Bash. Solo observa: nunca cambia ni deniega un comando, y actualiza después de que el comando haya terminado. Modifica la interfaz cubre la franja.
No lee el contenido de los archivos, no usa la red ni llama al modelo. Para desactivarlo de forma permanente, ejecuta /plugin disable cm-git-branch; para iniciar una sesión con todos los mods desactivados, usa claude --safe-mode.
- 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.
- Modifica la interfaz
- Dibuja en la interfaz de Claude Code: bandas, paneles, texto de estado, avisos (ui.render / $.ui.*).
Compatibilidad y solución de problemas
Probado con Claude Code 2.1.291 en la terminal de macOS. Si la franja no aparece, comprueba lo siguiente en este orden:
claude --versiones 2.1.287 o posterior.- La sesión se inició dentro de un repositorio git;
git statusen la misma carpeta debería funcionar. - El mod está habilitado: el menú
/pluginlo muestra en la pestaña Installed, con una línea "mod active". - Si instalaste desde la shell en una sesión abierta, ejecuta
/reload-plugins. - Hay una encuesta u otro prompt abierto sobre la entrada. La franja se aparta mientras está visible y vuelve después.
En repositorios muy grandes, aumenta intervalMs para que git status se ejecute con menos frecuencia.
Preguntas frecuentes
- ¿El mod de rama git para Claude Code modifica mi repositorio?
- No. Solo ejecuta git status --porcelain=v1 -b, y además git rev-parse --short HEAD cuando HEAD está desacoplado. Ambos son de solo lectura, se ejecutan sin shell y tienen un tiempo límite de 10 segundos.
- ¿Por qué no aparece la franja?
- Los motivos más habituales son que la carpeta de la sesión no es un repositorio git, que Claude Code es anterior a la 2.1.287, que el mod está desactivado en /plugin o que una encuesta está ocupando el espacio sobre el prompt. Después de instalar desde la shell, ejecuta /reload-plugins.
- ¿Detectará un checkout que haga en otra terminal?
- Sí, en un intervalo de actualización (15 segundos por defecto). Reduce intervalMs en /config si lo quieres antes, hasta un mínimo de 2 segundos.
- ¿Funciona en la aplicación de escritorio?
- Sí. La franja AbovePrompt se dibuja en la terminal y en la pestaña Code de la aplicación de escritorio. En claude -p y en el panel de chat de la extensión de VS Code los mods se ejecutan pero no dibujan nada, así que allí la franja no se ve.
- ¿Puedo ocultar la franja cuando no hay nada que mostrar?
- Activa hideWhenClean. La franja desaparecerá mientras el árbol de trabajo esté limpio y sincronizado con su upstream.
# Mods relacionados

Medidor de contexto
Contexto ocupado, uso del plan en 5 h y 7 días y coste de la sesión en la barra de estado, con aviso cerca del límite.
- estado
- aviso
- Modifica la interfaz
probado con v2.1.291

Bloquear comandos peligrosos
Rechaza rm -rf /, force-push a main, DROP TABLE, curl | sh y otros comandos Bash destructivos antes de que se ejecuten.
- aviso
- Intercepta llamadas a herramientas
- Modifica la interfaz
probado con v2.1.291

Contador de llamadas a herramientas
Cuenta las llamadas a herramientas por turno y sesión, muestra el total junto al spinner y añade /tally con un desglose.
- spinner
- transcripción
- estado
- Intercepta llamadas a herramientas
- Modifica la interfaz
- Añade comandos/herramientas
probado con v2.1.291