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-marketplaceO 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.Uma linha, dentro do Claude Code
/plugin install cm-done-toast --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-done-toast@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-done-toastCarrega 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ção | Tipo | Padrão | O que faz |
|---|---|---|---|
| minSeconds | number | 30 | Minimum turn length (seconds). Only turns at least this long raise the toast, sound and notification. |
| sound | boolean | true | Play a sound. Play a short chime when the turn finishes (macOS only: Claude Code plays clips with afplay). |
| systemNotification | boolean | false | System notification. Also raise a desktop notification via osascript (macOS) or notify-send (Linux). |
| includeAnswerPreview | boolean | false | Include 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-pluginsdepois 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.
# 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

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