Mindful Claude: mod de respiración para Claude Code mientras trabaja
Animación de respiración guiada sobre el prompt de Claude Code mientras Claude trabaja; el spinner respira contigo.
Permisos
- 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.291
- última prueba
- requiere
- Claude Code ≥ 2.1.287
- superficies
- sobre el prompt, spinner
- código fuente
- Anthony (halluton) (MIT)
Instalar dentro de Claude Code:
/plugin install mindful-claude --marketplace halluton/Mindful-Claude¿Qué hace este mod?
Mindful Claude es un mod de respiración para Claude Code, creado por la comunidad: su autor es Anthony (halluton). Convierte el tiempo que pasas esperando a Claude en un breve ejercicio de respiración guiada. Cuando Claude empieza a trabajar, aparece una animación de respiración de nueve filas sobre el cuadro de entrada, con una línea de fase como Breathe in... 4s y el nombre del ejercicio debajo. Al mismo tiempo, la palabra del spinner cambia para seguir la respiración, de modo que dice Breathe in 4s… en lugar de su texto habitual. Cuando Claude responde, la franja desaparece.
El razonamiento del autor, según el README: respirar despacio, a unas 5,5 respiraciones por minuto, aumenta la variabilidad de la frecuencia cardiaca, así que cada turno de Claude se convierte en una pequeña sesión de respiración sin salir de la terminal. Hay cuatro ejercicios (Coherent Breathing, Physiological Sigh, Box Breathing y 4-7-8 Breathing) y cuatro estilos de animación (pulse, ripples, dots y wave). Por defecto el estilo se elige al azar en cada turno, sin repetir nunca el mismo dos veces seguidas. Un comando de barra, /breathe, cambia la configuración, que se conserva entre sesiones. El README indica que necesita Claude Code 2.1.269 o posterior.
Demo
La grabación inicia Claude Code con el mod cargado y pide a Claude que lea tres archivos y describa el proyecto. Mientras se ejecuta el turno, la franja de respiración sobre el prompt se expande y se contrae con la etiqueta Breathe in… 5s (el patrón predeterminado, Coherent Breathing), y la línea del spinner sigue el mismo ritmo.
Instalación
Usa cualquiera de los métodos del bloque de instalación; instalan directamente desde el marketplace del propio autor. Una vez instalado, envía cualquier prompt y la franja aparecerá mientras Claude trabaja.
$ install mindful-claude
Requiere Claude Code ≥ 2.1.287
Se instala desde el marketplace del autor: halluton/Mindful-Claude
1.Una línea, dentro de Claude Code
/plugin install mindful-claude --marketplace halluton/Mindful-ClaudePé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 halluton/Mindful-Claude claude plugin install mindful-claude@mindful-claudeDespués ejecuta /reload-plugins en cualquier sesión que ya esté abierta.
3.Pruébalo sin instalarlo
git clone https://github.com/halluton/Mindful-Claude claude --plugin-dir ./Mindful-ClaudeCarga el mod solo para una sesión. No se añade nada a tu configuración.
Cómo funciona
El mod tiene dos partes. hooks/register.tsx es el módulo de hooks: recuerda cuándo empezó el turno y se engancha al punto de renderizado AbovePrompt. Cuando el motor informa de que un turno está en marcha, monta un módulo de superficie de cliente, hooks/breathe.tsx, que dibuja la animación diez veces por segundo con su propio reloj. Este es el hook de renderizado de hooks/register.tsx:
on('ui.render', { component: 'AbovePrompt' }, async ($, e, next) => {
if (e.surface !== 'terminal' || !config.enabled || !e.props.isWorking || e.props.hasSurvey) return next(e)
const now = await $.clock.now()
const running = turn ?? (turn = { startedAt: now, style: pickStyle(config.style, lastStyle) })
const elapsedMs = now - running.startedAt
if (elapsedMs < config.delay * 1000) return next(e)
const { Box, Client } = $.ui.resolve(e)
// ...
return (
<Box flexDirection="column">
<Client key={key} module="./breathe.tsx" width={e.viewport?.columns ?? 80} height={rows}
props={{ exercise: config.exercise, style: running.style, elapsedMs }} />
{await next(e)}
</Box>
)
})La franja usa como clave la hora de inicio del turno, así que cada turno recibe una animación nueva. Cada vez que cambia la línea de fase, la superficie envía la palabra actual de vuelta con surface.post. El módulo de hooks la recibe en un hook de ui.message y la pasa a un segundo hook de renderizado sobre el componente Spinner, que sustituye la prop message del spinner. El hook de turn.complete borra el turno, de modo que la franja desaparece en cuanto Claude responde. Los ejercicios, la curva de suavizado y las formas están en hooks/breath/ como funciones puras.
Personalízalo
Todo se ajusta con el comando /breathe, que el mod registra en session.start:
/breathemuestra la configuración actual, y/breathe helplista todas las opciones./breathe on/offmuestra u oculta la franja./breathe hrv,sigh,boxo478elige el ejercicio./breathe style wavefija un estilo (pulse,ripples,dots,wave), y/breathe style randomvuelve al valor predeterminado./breathe delay 5espera cinco segundos dentro de un turno antes de mostrar la franja, para que las respuestas rápidas no se vean interrumpidas./breathe spinner offdeja el texto del spinner como está.
La configuración se guarda con $.store bajo una única clave config y se vuelve a leer en el siguiente inicio de sesión.
Permisos y seguridad
Leímos todos los archivos que carga el plugin antes de ejecutarlo. El plugin solo usa llamadas de interfaz, reloj, comandos y almacenamiento: nada de $.process.run, nada de red, nada de acceso a archivos. No lee tu código, tus prompts ni la transcripción. Su configuración se guarda en el $.store propio del mod, y nunca edita settings.json ni los archivos rc de la shell. Modifica la interfaz cubre la franja y la palabra reescrita del spinner; Añade comandos/herramientas cubre /breathe, y Guarda datos cubre la configuración guardada.
El repositorio también contiene una carpeta legacy/ con la versión original en bash y tmux. El plugin no la carga. Su install.sh edita ~/.claude/settings.json y escribe en ~/.claude/mindful/, así que ejecútalo solo si quieres la versión antigua. claude plugin validate informa de un aviso: el nombre del plugin contiene "claude", lo que según el validador parece un plugin de Anthropic. Es un aviso sobre el nombre, no un problema del código.
- 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
Lo validamos con Claude Code 2.1.291 en macOS, y los 31 tests unitarios de bun test del autor pasan. claude plugin test no puede cargarlos porque importan bun:test. Si la franja no aparece:
- Comprueba que
claude --versiones 2.1.269 o posterior. El README del autor también pide definirCLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1en el bloqueenvde~/.claude/settings.json. - Ejecuta
/breathey comprueba que dicebreathe: onydelay 0s. - La franja solo se dibuja en la terminal. También se aparta mientras hay una encuesta abierta sobre el prompt.
- Después de instalar en una sesión que ya estaba abierta, ejecuta
/reload-plugins.
Preguntas frecuentes
- ¿Cuándo aparece la animación de respiración?
- Cuando empieza un turno y el prompt indica que Claude está trabajando. Desaparece cuando Claude responde. Con /breathe delay 5 solo aparece después de que Claude lleve cinco segundos trabajando.
- ¿Qué ejercicios de respiración incluye?
- Cuatro: Coherent Breathing (5,5 s inspirando, 5,5 s espirando, el predeterminado), el Physiological Sigh (doble inspiración, espiración larga), Box Breathing (4 s inspirar, retener, espirar, retener) y 4-7-8 Breathing (4 s inspirar, 7 s retener, 8 s espirar). Cambia con /breathe hrv, sigh, box o 478.
- ¿Gasta tokens o envía algo al modelo?
- No. El mod solo dibuja interfaz y guarda su configuración en el almacén propio del plugin. No hace llamadas de red y el modelo nunca ve la animación.
- ¿Puedo mantener la animación pero dejar el spinner como está?
- Sí. Ejecuta /breathe spinner off. La franja sobre el prompt sigue funcionando y el spinner vuelve a sus palabras habituales.
- ¿Funciona en la aplicación de escritorio?
- La franja solo se dibuja cuando la superficie de renderizado es la terminal; el código la omite en cualquier otro sitio. El texto del spinner puede seguir cambiando.
# Mods relacionados

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.291

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