Pular para o conteúdo
claudemods

Mindful Claude: mod de respiração para Claude Code enquanto ele trabalha

Animação de respiração guiada acima do prompt do Claude Code enquanto o Claude trabalha; o spinner respira com você.

Permissões

  • 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.291
último teste
requer
Claude Code ≥ 2.1.287
superfícies
acima do prompt, spinner

Instale dentro do Claude Code:

/plugin install mindful-claude --marketplace halluton/Mindful-Claude
Todas as opções de instalação ↓

O que este mod faz?

O Mindful Claude é um mod de respiração para Claude Code feito pela comunidade, criado por Anthony (halluton). Ele transforma o tempo que você passa esperando o Claude em um breve exercício de respiração guiada. Quando o Claude começa a trabalhar, uma animação de respiração de nove linhas aparece acima da caixa de entrada, com uma linha de fase como Breathe in... 4s e o nome do exercício embaixo. Ao mesmo tempo, a palavra do spinner muda para acompanhar a respiração, mostrando Breathe in 4s… em vez do texto de sempre. Quando o Claude responde, a faixa some.

O raciocínio do autor, segundo o README: respirar devagar, a cerca de 5,5 respirações por minuto, aumenta a variabilidade da frequência cardíaca, então cada turno do Claude vira uma pequena sessão de respiração sem sair do terminal. São quatro exercícios (Coherent Breathing, Physiological Sigh, Box Breathing e 4-7-8 Breathing) e quatro estilos de animação (pulse, ripples, dots e wave). Por padrão, o estilo é sorteado a cada turno, nunca o mesmo duas vezes seguidas. Um comando de barra, /breathe, muda as configurações, que ficam salvas entre sessões. O README diz que ele precisa do Claude Code 2.1.269 ou mais recente.

Demonstração

A gravação inicia o Claude Code com o mod carregado e pede ao Claude que leia três arquivos e descreva o projeto. Enquanto o turno roda, a faixa de respiração acima do prompt se expande e se contrai com o rótulo Breathe in… 5s (o padrão Coherent Breathing), e a linha do spinner acompanha o mesmo ritmo.

Instalação

Use qualquer um dos métodos do bloco de instalação; eles instalam direto do marketplace do próprio autor. Depois de instalado, envie qualquer prompt e a faixa aparece enquanto o Claude trabalha.

$ install mindful-claude

Requer Claude Code ≥ 2.1.287

Instala a partir do marketplace do autor: halluton/Mindful-Claude

  1. 1.Uma linha, dentro do Claude Code

    /plugin install mindful-claude --marketplace halluton/Mindful-Claude

    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 halluton/Mindful-Claude
    claude plugin install mindful-claude@mindful-claude

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

  3. 3.Experimente sem instalar

    git clone https://github.com/halluton/Mindful-Claude
    claude --plugin-dir ./Mindful-Claude

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

Como funciona

O mod tem duas partes. hooks/register.tsx é o módulo de hooks: ele registra quando o turno começou e se conecta ao ponto de renderização AbovePrompt. Quando o engine informa que um turno está em andamento, ele monta um módulo de superfície do cliente, hooks/breathe.tsx, que desenha a animação dez vezes por segundo com o seu próprio relógio. Este é o hook de renderização 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>
  )
})

A faixa usa o horário de início do turno como chave, então cada turno ganha uma animação nova. Sempre que a linha de fase muda, a superfície envia a palavra atual de volta com surface.post. O módulo de hooks a recebe em um hook ui.message e a repassa para um segundo hook de renderização no componente Spinner, que substitui a prop message do spinner. O hook turn.complete limpa o turno, então a faixa some assim que o Claude responde. Os exercícios, a curva de suavização e as formas ficam em hooks/breath/ como funções puras.

Personalize

Tudo é configurado com o comando /breathe, que o mod registra em session.start:

  • /breathe mostra as configurações atuais, e /breathe help lista todas as opções.
  • /breathe on / off mostra ou esconde a faixa.
  • /breathe hrv, sigh, box ou 478 escolhe o exercício.
  • /breathe style wave fixa um estilo (pulse, ripples, dots, wave), e /breathe style random volta ao padrão.
  • /breathe delay 5 espera cinco segundos de turno antes de mostrar a faixa, para que respostas rápidas fiquem tranquilas.
  • /breathe spinner off deixa o texto do spinner como está.

As configurações são salvas com $.store em uma única chave config e lidas de novo no próximo início de sessão.

Permissões e segurança

Lemos todos os arquivos que o plugin carrega antes de rodá-lo. O plugin usa apenas chamadas de interface, relógio, comandos e armazenamento: nada de $.process.run, nada de rede, nada de acesso a arquivos. Ele não lê o seu código, os seus prompts nem a transcrição. As configurações ficam no $.store do próprio mod, e ele nunca edita o settings.json nem os arquivos rc do shell. Altera a interface cobre a faixa e a palavra reescrita do spinner; Adiciona comandos/ferramentas cobre o /breathe, e Armazena dados cobre as configurações salvas.

O repositório também tem uma pasta legacy/ com a versão original em bash e tmux. O plugin não a carrega. O install.sh dela edita ~/.claude/settings.json e grava em ~/.claude/mindful/, então só rode esse script se quiser a versão antiga. O claude plugin validate relata um aviso: o nome do plugin contém "claude", o que, segundo o validador, parece um plugin da Anthropic. É um aviso sobre o nome, não um problema no código.

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

Validamos com o Claude Code 2.1.291 no macOS, e os 31 testes unitários bun test do autor passam. O claude plugin test não consegue carregá-los porque eles importam bun:test. Se a faixa não aparecer:

  • Confira se claude --version é 2.1.269 ou mais recente. O README do autor também pede para definir CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 no bloco env de ~/.claude/settings.json.
  • Execute /breathe e confira se aparece breathe: on e delay 0s.
  • A faixa só é desenhada no terminal. Ela também sai do caminho enquanto uma pesquisa está aberta acima do prompt.
  • Depois de instalar em uma sessão que já estava aberta, execute /reload-plugins.

Perguntas frequentes

Quando a animação de respiração aparece?
Quando um turno começa e o prompt mostra que o Claude está trabalhando. Ela some quando o Claude responde. Com /breathe delay 5 ela só aparece depois que o Claude já trabalhou por cinco segundos.
Quais exercícios de respiração estão incluídos?
Quatro: Coherent Breathing (5,5 s inspirando, 5,5 s expirando, o padrão), o Physiological Sigh (inspiração dupla, expiração longa), Box Breathing (4 s inspirar, segurar, expirar, segurar) e 4-7-8 Breathing (4 s inspirar, 7 s segurar, 8 s expirar). Troque com /breathe hrv, sigh, box ou 478.
Ele gasta tokens ou envia algo para o modelo?
Não. O mod só desenha interface e guarda as configurações no armazenamento do próprio plugin. Ele não faz chamadas de rede e o modelo nunca vê a animação.
Posso manter a animação e deixar o spinner como está?
Sim. Execute /breathe spinner off. A faixa acima do prompt continua funcionando e o spinner volta às palavras de sempre.
Funciona no app desktop?
A faixa só é desenhada quando a superfície de renderização é o terminal; o código a ignora em qualquer outro lugar. O texto do spinner ainda pode mudar.
Aviso de conclusão em execução no Claude Code

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

Medidor de contexto em execução no Claude Code

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

Mais em Timers, tarefas e standups, Comandos slash.