Pular para o conteúdo
claudemods

Notificação do Claude Code ao terminar: toast e som

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

Permissões

  • Executa comandosPode executar programas de shell na sua máquina ($.process.run / spawn). Confira no código-fonte exatamente quais.
  • Altera a interfaceDesenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
  • Reproduz somPode reproduzir áudio ou falar textos em voz alta ($.audio.*).
testado com
v2.1.291
último teste
requer
Claude Code ≥ 2.1.287
superfícies
notificação
código-fonte
ClaudeMods (MIT)

Instale dentro do Claude Code:

/plugin install cm-done-toast --marketplace rotbit/claudemods-marketplace
Todas as opções de instalação ↓

O que este mod faz?

O Aviso de conclusão dá a você uma notificação do Claude Code ao terminar: quando um turno que levou um bom tempo acaba, um toast diz Done in 2m 14s e toca um som curto de duas notas. Um turno que termina com erro mostra Stopped on an error after 2m 14s no lugar. Turnos curtos, turnos interrompidos e turnos de subagentes ficam em silêncio, então o som sempre significa "pode voltar, sua resposta está pronta".

Se você trabalha em outra janela durante tarefas longas, ative a opção de notificação do sistema e a mesma mensagem aparece na Central de Notificações do macOS ou como um popup notify-send no Linux. Requer Claude Code 2.1.287 ou posterior.

Demonstração

A gravação envia ao Claude uma tarefa que demora mais do que o limite configurado. Quando o turno termina, o toast com a duração do turno aparece na parte de baixo da tela.

Instalação

Escolha um dos métodos do bloco de instalação. O som funciona no macOS sem configuração nenhuma; as notificações do sistema precisam ser ativadas por você.

$ install cm-done-toast

Requer Claude Code ≥ 2.1.287

  1. 1.Uma linha, dentro do Claude Code

    /plugin install cm-done-toast --marketplace rotbit/claudemods-marketplace

    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 rotbit/claudemods-marketplace
    claude plugin install cm-done-toast@claudemods

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

  3. 3.Experimente sem instalar

    git clone https://github.com/rotbit/claudemods-marketplace
    claude --plugin-dir ./claudemods-marketplace/cm-done-toast

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

Como funciona

O mod tem um único hook. Trecho de hooks/register.ts:

on('turn.complete', async ($, e, next) => {
  const result = await next(e)
  if (!shouldNotify(e, minSeconds)) return result

  const text = toastText(e, includeAnswerPreview)
  $.ui.toast(text)

  if (sound) {
    $.audio.play({ asset: 'sounds/done.wav' }).catch(() => undefined)
  }

  if (systemNotification) {
    platform ??= $.process
      .run(['uname', '-s'], { timeoutMs: 5000 })
      .then(ran => (ran.exitCode === 0 ? parseUname(ran.stdout) : undefined))
      .catch(() => undefined)
    platform
      .then(found =>
        found === undefined ? undefined : $.process.run(notificationArgv(found, 'Claude Code', text), { timeoutMs: 10000 }),
      )
      .catch(() => undefined)
  }

  return result
})

turn.complete dispara quando o Claude termina um turno. O hook aguarda next(e) primeiro, então nunca atrasa o resultado do turno. shouldNotify em hooks/format.ts retorna false para turnos de subagentes (os que têm agentId), turnos abortados e qualquer coisa mais curta que minSeconds. toastText formata a duração como 45s, 2m 14s ou 1h 3m.

O som é sounds/done.wav, que vem junto com o mod e é tocado com $.audio.play. A API de mods não tem um campo de plataforma nem uma chamada de notificação, então, quando as notificações do sistema estão ativadas, o mod pergunta uname -s uma vez e guarda a resposta. Em seguida ele executa osascript -e 'display notification …' no macOS ou notify-send no Linux. Os argumentos são passados como um array argv, sem shell, então aspas na resposta do Claude não conseguem escapar do comando. O som e a notificação são disparados sem esperar resultado; os erros são simplesmente ignorados.

Personalize

Altere estas opções em /config. Para usar o seu próprio som, substitua sounds/done.wav na pasta do mod ou mude o caminho asset no hook. O texto do toast vem de toastText em hooks/format.ts, e o título da notificação, 'Claude Code', é o segundo argumento de notificationArgv.

ConfiguraçãoTipoPadrãoO que faz
minSecondsnumber30Minimum turn length (seconds). Only turns at least this long raise the toast, sound and notification.
soundbooleantruePlay a sound. Play a short chime when the turn finishes (macOS only: Claude Code plays clips with afplay).
systemNotificationbooleanfalseSystem notification. Also raise a desktop notification via osascript (macOS) or notify-send (Linux).
includeAnswerPreviewbooleanfalseInclude answer preview. Add the first 80 characters of Claude's answer to the toast and notification.

Altere isso no Claude Code com /config — o mod recarrega na hora.

Permissões e segurança

Altera a interface cobre o toast. Reproduz som cobre o som de conclusão. Executa comandos aparece porque $.process.run está no código, mas ele só é usado quando você ativa systemNotification: aí ele executa uname -s uma vez, seguido de osascript ou notify-send com argumentos fixos. Com as configurações padrão, nenhum processo é iniciado.

O mod não intercepta chamadas de ferramentas, não lê seus prompts, não mexe em arquivos e não usa a rede. Desative-o com /plugin disable cm-done-toast, ou inicie uma sessão com todos os mods desligados usando claude --safe-mode.

Executa comandos
Pode executar programas de shell na sua máquina ($.process.run / spawn). Confira no código-fonte exatamente quais.
Altera a interface
Desenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
Reproduz som
Pode reproduzir áudio ou falar textos em voz alta ($.audio.*).

Compatibilidade e solução de problemas

Testado com Claude Code 2.1.291 no macOS, no terminal. Se nada acontecer quando um turno terminar:

  • Verifique se claude --version é 2.1.287 ou posterior e se o mod está ativado em /plugin.
  • Execute /reload-plugins depois de instalar pelo shell.
  • O turno pode ter sido mais curto que minSeconds.
  • A ausência de som fora do macOS é esperada.
  • No macOS, permita notificações para o seu app de terminal nos Ajustes do Sistema se a notificação do sistema nunca aparecer.
  • No Linux, instale o libnotify (notify-send) para ter notificações do sistema.

Perguntas frequentes

Por que não recebi notificação depois de uma resposta curta?
Turnos mais curtos que minSeconds (30 por padrão) ficam em silêncio. Defina minSeconds como 0 para ser avisado a cada turno.
Por que não há som no Linux ou no Windows?
O Claude Code toca clipes de áudio com afplay, que só existe no macOS. O toast continua aparecendo em todas as plataformas.
Como recebo um alerta na Central de Notificações do macOS?
Ative systemNotification em /config. O mod então executa osascript no macOS ou notify-send no Linux. O macOS pode perguntar uma vez se o seu terminal pode enviar notificações.
Subagentes também disparam o aviso?
Não. Turnos com agentId são ignorados, assim como turnos interrompidos, então você recebe uma notificação por resposta.
A notificação pode incluir a resposta do Claude?
Ative includeAnswerPreview para adicionar os primeiros 80 caracteres. Fica desligado por padrão porque o texto passa a aparecer no histórico de notificações do sistema.
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

Contador de chamadas de ferramentas em execução no Claude Code

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

Branch do Git acima do prompt em execução no Claude Code

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

Mais em Toasts e notificações, Timers, tarefas e standups.