Dual-channel notifications on watchexec events. TRIGGERS - watchexec alerts, Telegram+Pushover, file change notifications.
View on GitHubFebruary 5, 2026
Select agents to install to:
npx add-skill https://github.com/terrylica/cc-skills/blob/main/plugins/devops-tools/skills/dual-channel-watchexec/SKILL.md -a claude-code --skill dual-channel-watchexec-notificationsInstallation paths:
.claude/skills/dual-channel-watchexec-notifications/# Dual-Channel Watchexec Notifications Send reliable notifications to both Telegram and Pushover when watchexec detects file changes or process crashes. ## When to Use This Skill Use this skill when: - Setting up file change monitoring with notifications - Implementing process crash alerting via Telegram and Pushover - Creating watchexec wrappers with dual-channel notification support - Formatting messages for both HTML (Telegram) and plain text (Pushover) - Troubleshooting notification delivery or formatting issues ## Core Pattern **watchexec wrapper script** → **detect event** → **notify-script** → **Telegram + Pushover** ```bash # 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> ``` --- ## Critical Rule: Format Differences **Telegram**: HTML mode ONLY ```bash MESSAGE="<b>Alert</b>: <code>file.py</code>" # Escape 3 chars: & → &, < → <, > → > ``` **Pushover**: Plain text ONLY ```bash /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**: - Markdown requires escaping 40+ chars (`.`, `-`, `_`, etc.) - HTML only requires escaping 3 chars (`&`, `<`, `>`) - Industry best practice --- ## Quick Reference ### Send to Both Channels ```bash /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 ``` #
Issues Found: