ХукПроцессы

notify-done

Отправляет уведомление о завершении задачи при остановке сессии. Полезно для длинных задач в tmux.

Закинь в Claude, Cursor или любой AI

Описание

Простым языком

Когда даёшь AI сложную задачу, она может выполняться 30-60 минут. Ты уходишь пить чай или работать над другим — и периодически возвращаешься проверять: закончил или нет? Этот хук сам тебя позовёт когда всё готово.

Настраивается на всплывающее уведомление на компьютере или сообщение в Telegram. AI закончил — ты получил сигнал. Можно спокойно заниматься своими делами.


Что делает

Хук notify-done отправляет уведомление при завершении сессии Claude Code. Когда AI работает в tmux на длинной задаче — ты узнаешь о завершении, даже если переключился на другое окно или вкладку.

Особенно полезен при работе с Agent Teams: задача может выполняться 30-60 минут. Без уведомления — сидишь и периодически проверяешь. С уведомлением — занимаешься своим делом.

Когда срабатывает

Триггер: Stop — при завершении сессии. Условие: всегда. Действие: terminal bell + системное уведомление (macOS/Linux) + опционально Telegram.


Установка

  1. Добавь конфиг Stop в .claude/settings.json
  2. Создай ~/.claude/hooks/notify-done.sh с правами chmod +x
  3. Для Telegram: создай бота через @BotFather и добавь токен в ~/.bashrc

Конфиг settings.json

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/notify-done.sh"
          }
        ]
      }
    ]
  }
}

Скрипт хука

#!/bin/bash
# notify-done.sh — уведомление о завершении сессии
# Stop: при выходе из Claude Code

PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}"
PROJECT_NAME=$(basename "$PROJECT_DIR")

COMMITS=0
if git -C "$PROJECT_DIR" rev-parse --is-inside-work-tree &>/dev/null; then
  COMMITS=$(git -C "$PROJECT_DIR" log --oneline --since="3 hours ago" 2>/dev/null | wc -l | tr -d ' ')
fi

MSG="Проект: $PROJECT_NAME | Коммитов: $COMMITS"

printf "a"

if command -v osascript &>/dev/null; then
  osascript -e "display notification "$MSG" with title "Claude Code завершил" sound name "Glass""
fi

if command -v notify-send &>/dev/null; then
  notify-send "Claude Code завершил" "$MSG" --icon=terminal --urgency=normal
fi

if [ -n "$TELEGRAM_BOT_TOKEN" ] && [ -n "$TELEGRAM_CHAT_ID" ]; then
  curl -s -X POST     "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage"     -d "chat_id=${TELEGRAM_CHAT_ID}"     -d "text=Claude Code завершил%0A${MSG}"     --max-time 5 >/dev/null 2>&1
fi

exit 0

Примеры работы

Что пропускает

  • Промежуточные остановки — только финальный Stop
  • Уведомления в headless-режиме без дисплея
  • Telegram — только если переменные окружения настроены

Что отправляет

  • macOS: нативное уведомление со звуком Glass и именем проекта
  • Linux: notify-send с иконкой терминала
  • Terminal: bell-сигнал для tmux и screen
  • Telegram: текстовое сообщение если бот настроен

Настройка под себя

  • Добавь Slack webhook через curl POST-запрос
  • Добавь Discord webhook аналогично Telegram
  • Настрой разные звуки для успеха и ошибки через osascript
  • Добавь CLAUDE_NOTIFY=0 для отключения уведомлений в конкретной сессии
Лучший способ быть продуктивным — не сидеть и ждать AI. notify-done решает эту проблему одним хуком.
#Hooks#Claude Code
TG

> Пока нет комментариев

Связанный контент

Похожие инструменты