Dual-channel notifications on watchexec events. TRIGGERS - watchexec alerts, Telegram+Pushover, file change notifications.
From devops-toolsnpx claudepluginhub terrylica/cc-skills --plugin devops-toolsThis skill is limited to using the following tools:
examples/bot-wrapper.shexamples/notify-restart.shexamples/setup-example.shreference.mdreferences/common-pitfalls.mdreferences/credential-management.mdreferences/evolution-log.mdreferences/pushover-integration.mdreferences/telegram-html.mdreferences/watchexec-patterns.mdSearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Resolves freight exceptions including delays, damages, losses, and carrier disputes via classification workflows, escalation protocols, claims filing, and carrier-specific strategies.
Send reliable notifications to both Telegram and Pushover when watchexec detects file changes or process crashes.
Self-Evolving Skill: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.
Use this skill when:
watchexec wrapper script → detect event → notify-script → Telegram + Pushover
# wrapper.sh - Monitors process and detects restart reasons
watchexec --restart -- python bot.py
# On event, call:
notify-script.sh <reason> <exit_code> <watchexec_info_file> <crash_context>
Telegram: HTML mode ONLY
MESSAGE="<b>Alert</b>: <code>file.py</code>"
# Escape 3 chars: & → &, < → <, > → >
Pushover: Plain text ONLY
/usr/bin/env bash << 'SKILL_SCRIPT_EOF'
# Strip HTML tags before sending
MESSAGE_PLAIN=$(echo "$MESSAGE_HTML" | sed 's/<[^>]*>//g')
SKILL_SCRIPT_EOF
Why HTML for Telegram:
., -, _, etc.)&, <, >)/usr/bin/env bash << 'SKILL_SCRIPT_EOF_2'
# 1. Build HTML message for Telegram
MESSAGE_HTML="<b>File</b>: <code>handler_classes.py</code>"
# 2. Strip HTML for Pushover
MESSAGE_PLAIN=$(echo "$MESSAGE_HTML" | sed 's/<[^>]*>//g')
# 3. Send to Telegram with HTML
curl -s -d "chat_id=$CHAT_ID" \
-d "text=$MESSAGE_HTML" \
-d "parse_mode=HTML" \
https://api.telegram.org/bot$BOT_TOKEN/sendMessage
# 4. Send to Pushover with plain text
curl -s --form-string "message=$MESSAGE_PLAIN" \
https://api.pushover.net/1/messages.json
SKILL_SCRIPT_EOF_2
# Fire-and-forget background notifications (don't block restarts)
"$NOTIFY_SCRIPT" "crash" "$EXIT_CODE" "$INFO_FILE" "$CONTEXT_FILE" &
Before deploying:
&, <, >)stat (not find -newermt)_, ., -)Key Lessons:
& → &, < → <, > → >stat for file detection on macOS (not find -newermt)For detailed information, see:
Bundled Examples:
examples/notify-restart.sh - Complete dual-channel notification scriptexamples/bot-wrapper.sh - watchexec wrapper with restart detectionexamples/setup-example.sh - Setup guide and installation steps| Issue | Cause | Solution |
|---|---|---|
| Telegram escaping errors | Using Markdown instead of HTML | Switch to HTML mode with parse_mode=HTML |
| Pushover shows HTML tags | HTML not stripped | Strip tags with sed before sending to Pushover |
| Notifications not arriving | Credentials missing | Verify BOT_TOKEN, CHAT_ID, Pushover keys |
| Special chars broken | Missing HTML escaping | Escape &, <, > in dynamic content |
| find -newermt fails macOS | macOS incompatibility | Use stat for file detection instead |
| Notifications blocking | Not running in background | Add & to run notify script fire-and-forget |
| Duplicate notifications | Restart loop | Add debounce logic or cooldown period |
| Missing crash context | Context file not written | Verify watchexec info file path exists |
After this skill completes, check before closing:
Only update if the issue is real and reproducible — not speculative.