Notificación cuando Claude Code termina: toast y sonido
Un toast «Done in 2m 14s» y un sonido al terminar un turno largo de Claude, más un aviso de escritorio opcional.
Permisos
- Ejecuta comandosPuede ejecutar programas de shell en tu equipo ($.process.run / spawn). Revisa el código fuente para ver exactamente cuáles.
- Modifica la interfazDibuja en la interfaz de Claude Code: bandas, paneles, texto de estado, avisos (ui.render / $.ui.*).
- Reproduce sonidoPuede reproducir audio o leer texto en voz alta ($.audio.*).
- probado con
- v2.1.291
- última prueba
- requiere
- Claude Code ≥ 2.1.287
- superficies
- aviso
- código fuente
- ClaudeMods (MIT)
Instalar dentro de Claude Code:
/plugin install cm-done-toast --marketplace rotbit/claudemods-marketplace¿Qué hace este mod?
Aviso de finalización te da una notificación cuando Claude Code termina: cuando acaba un turno que ha llevado un buen rato, un toast muestra Done in 2m 14s y suena un breve aviso de dos notas. Si el turno termina con un error, el mensaje es Stopped on an error after 2m 14s. Los turnos cortos, los interrumpidos y los de subagentes no hacen ruido, así que el sonido significa «vuelve, tu respuesta está lista».
Si trabajas en otra ventana durante las tareas largas, activa la opción de notificación del sistema y el mismo mensaje aparecerá en el Centro de notificaciones de macOS o como una ventana emergente de notify-send en Linux. Requiere Claude Code 2.1.287 o posterior.
Demo
La grabación envía a Claude una tarea que tarda más que el umbral. Cuando el turno termina, el toast con la duración del turno aparece en la parte inferior de la pantalla.
Instalación
Elige uno de los métodos del bloque de instalación. El sonido funciona en macOS sin configurar nada; las notificaciones del sistema hay que activarlas.
$ install cm-done-toast
Requiere Claude Code ≥ 2.1.287
1.Una línea, dentro de Claude Code
/plugin install cm-done-toast --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-done-toast@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-done-toastCarga el mod solo para una sesión. No se añade nada a tu configuración.
Cómo funciona
El mod tiene un único hook. Extraído 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 se dispara cuando Claude termina un turno. El hook espera primero a next(e), así que nunca retrasa el resultado del turno. shouldNotify, en hooks/format.ts, devuelve false para los turnos de subagentes (los que tienen agentId), los turnos abortados y cualquier turno más corto que minSeconds. toastText formatea la duración como 45s, 2m 14s o 1h 3m.
El sonido es sounds/done.wav, incluido con el mod y reproducido con $.audio.play. La API de mods no tiene un campo de plataforma ni una llamada de notificación, así que, cuando las notificaciones del sistema están activadas, el mod pregunta una vez a uname -s y guarda la respuesta. Después ejecuta osascript -e 'display notification …' en macOS o notify-send en Linux. Los argumentos se pasan como un array argv sin shell, de modo que las comillas en la respuesta de Claude no pueden escaparse. El sonido y la notificación se lanzan sin esperar resultado; los errores se ignoran.
Personalízalo
Cambia estas opciones en /config. Para usar tu propio sonido, sustituye sounds/done.wav en la carpeta del mod o cambia la ruta asset en el hook. El texto del toast lo genera toastText en hooks/format.ts, y el título de la notificación, 'Claude Code', es el segundo argumento de notificationArgv.
| Ajuste | Tipo | Valor por defecto | Qué hace |
|---|---|---|---|
| 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. |
Cámbialos en Claude Code con /config: el mod se recarga en caliente.
Permisos y seguridad
Modifica la interfaz cubre el toast. Reproduce sonido cubre el aviso sonoro. Ejecuta comandos aparece porque $.process.run está en el código, pero solo se usa si activas systemNotification: entonces ejecuta uname -s una vez y, después, osascript o notify-send con argumentos fijos. Con la configuración por defecto no se inicia ningún proceso.
El mod no intercepta llamadas a herramientas, no lee tus prompts, no toca archivos ni usa la red. Desactívalo con /plugin disable cm-done-toast, o inicia una sesión con todos los mods desactivados usando 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.
- Modifica la interfaz
- Dibuja en la interfaz de Claude Code: bandas, paneles, texto de estado, avisos (ui.render / $.ui.*).
- Reproduce sonido
- Puede reproducir audio o leer texto en voz alta ($.audio.*).
Compatibilidad y solución de problemas
Probado con Claude Code 2.1.291 en la terminal de macOS. Si no pasa nada al terminar un turno:
- Comprueba que
claude --versionsea 2.1.287 o posterior y que el mod esté habilitado en/plugin. - Ejecuta
/reload-pluginsdespués de instalar desde la shell. - Puede que el turno haya sido más corto que
minSeconds. - Que no haya sonido fuera de macOS es lo esperado.
- En macOS, permite las notificaciones de tu aplicación de terminal en Ajustes del Sistema si la notificación del sistema nunca aparece.
- En Linux, instala libnotify (
notify-send) para las notificaciones del sistema.
Preguntas frecuentes
- ¿Por qué no recibí ninguna notificación tras una respuesta corta?
- Los turnos más cortos que minSeconds (30 por defecto) no avisan. Pon minSeconds a 0 para que te avise de todos los turnos.
- ¿Por qué no hay sonido en Linux o Windows?
- Claude Code reproduce los clips de audio con afplay, que solo existe en macOS. El toast sigue apareciendo en todas las plataformas.
- ¿Cómo consigo una alerta del Centro de notificaciones de macOS?
- Activa systemNotification en /config. El mod ejecutará entonces osascript en macOS o notify-send en Linux. macOS puede preguntarte una vez si tu terminal puede enviar notificaciones.
- ¿Lo activan los subagentes?
- No. Los turnos con un agentId se omiten, igual que los turnos interrumpidos, así que recibes una notificación por respuesta.
- ¿Puede la notificación incluir la respuesta de Claude?
- Activa includeAnswerPreview para añadir los primeros 80 caracteres. Está desactivado por defecto porque el texto aparecería entonces en el historial de notificaciones del sistema.
# 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

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

Rama git 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.
- sobre el prompt
- Ejecuta comandos
- Intercepta llamadas a herramientas
- Modifica la interfaz
probado con v2.1.291
Más en Toasts y notificaciones, Temporizadores, tareas y standups.