Back to Skills

dual-channel-watchexec-notifications

verified

Sends dual-channel notifications (Telegram + Pushover) on watchexec events with proper formatting. Use when monitoring file changes, process restarts, or setting up alerts.

View on GitHub

Marketplace

cc-skills

terrylica/cc-skills

Plugin

devops-tools

devops

Repository

terrylica/cc-skills
8stars

plugins/devops-tools/skills/dual-channel-watchexec/SKILL.md

Last Verified

January 25, 2026

Install Skill

Select agents to install to:

Scope:
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-notifications

Installation paths:

Claude
.claude/skills/dual-channel-watchexec-notifications/
Powered by add-skill CLI

Instructions

# Dual-Channel Watchexec Notifications

Send reliable notifications to both Telegram and Pushover when watchexec detects file changes or process crashes.

## 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: & → &amp;, < → &lt;, > → &gt;
```

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

### Execution Pattern

```bash
# Fire-and-forget background notifications (don't block restarts)
"$NOTIFY_SCRIPT" "crash" "$EXIT_CODE" "$INFO_FILE" "$CONTEXT_FILE" &
```

---

## Validation Checklist

Before deploying:

- [ ] Using HTML parse mode for Telegram (not Markdown)
- [ ] HTML tags stripped for Pushover (plain text only)
- [ ] HTML escaping applied to all dynami

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
3666 chars

Issues Found:

  • name_directory_mismatch