home / skills / terrylica / cc-skills / booking-notify

booking-notify skill

/plugins/calcom-commander/skills/booking-notify

This skill delivers dual-channel booking notifications via Telegram and Pushover with scheduled sync, real-time alerts, and webhook relay for emergencies.

npx playbooks add skill terrylica/cc-skills --skill booking-notify

Review the files below or copy the command above to add this skill to your agents.

Files (5)
SKILL.md
4.8 KB
---
name: booking-notify
description: Dual-channel booking notifications via Telegram + Pushover. Scheduled sync, webhook relay, emergency alerts with custom sounds. TRIGGERS - booking sync, booking digest, booking notifications, upcoming bookings, calendar sync, booking reminder, pushover, webhook, dune alert.
allowed-tools: Read, Bash, Grep, Glob
---

# Booking Notifications (Dual-Channel)

Automated booking notifications via two channels:

| Channel  | Delivery  | Format     | Use Case                                   |
| -------- | --------- | ---------- | ------------------------------------------ |
| Telegram | Scheduled | HTML       | Interactive commands, daily digest, search |
| Pushover | Real-time | Plain text | Emergency alerts with custom sound (dune)  |

## Mandatory Preflight

### Step 1: Check Sync Script Exists

```bash
ls -la "$HOME/.claude/plugins/marketplaces/cc-skills/plugins/calcom-commander/scripts/sync.ts" 2>/dev/null || echo "SCRIPT_NOT_FOUND"
```

### Step 2: Verify Environment (Required)

```bash
echo "CALCOM_OP_UUID: ${CALCOM_OP_UUID:-NOT_SET}"
echo "TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN:+SET}"
echo "TELEGRAM_CHAT_ID: ${TELEGRAM_CHAT_ID:-NOT_SET}"
echo "HAIKU_MODEL: ${HAIKU_MODEL:-NOT_SET}"
```

**All must be SET.** If any are NOT_SET, run the setup command first.

### Step 3: Verify Pushover (Optional)

```bash
echo "PUSHOVER_APP_TOKEN: ${PUSHOVER_APP_TOKEN:+SET}"
echo "PUSHOVER_USER_KEY: ${PUSHOVER_USER_KEY:+SET}"
echo "PUSHOVER_SOUND: ${PUSHOVER_SOUND:-dune}"
echo "WEBHOOK_RELAY_URL: ${WEBHOOK_RELAY_URL:-NOT_SET}"
```

**If NOT_SET**: Pushover is optional. Telegram-only operation still works. To enable, see [pushover-setup.md](./references/pushover-setup.md).

### Step 4: Verify Cal.com CLI Binary

```bash
ls -la "$HOME/.claude/plugins/marketplaces/cc-skills/plugins/calcom-commander/scripts/calcom-cli/calcom" 2>/dev/null || echo "BINARY_NOT_FOUND"
```

**If BINARY_NOT_FOUND**: Build it:

```bash
cd "$HOME/.claude/plugins/marketplaces/cc-skills/plugins/calcom-commander/scripts/calcom-cli" && bun install && bun run build
```

## Notification Channels

### Telegram (Scheduled Sync)

6h polling via launchd. Sends HTML-formatted messages for:

| Category     | Examples                                         |
| ------------ | ------------------------------------------------ |
| NEW BOOKING  | New interview scheduled, new consultation booked |
| CANCELLATION | Booking cancelled by attendee, host cancelled    |
| UPCOMING     | Booking starting in 1 hour, today's schedule     |
| RESCHEDULED  | Booking moved to new time, date changed          |

### Pushover (Real-Time Webhook)

Instant notifications via Cloud Run webhook relay:

| Event       | Priority      | Sound | Must Acknowledge? |
| ----------- | ------------- | ----- | ----------------- |
| New booking | 2 (Emergency) | dune  | Yes               |
| Rescheduled | 2 (Emergency) | dune  | Yes               |
| Cancelled   | 0 (Normal)    | dune  | No                |

### Webhook Relay

The webhook relay is a lightweight Cloud Run service that bridges Cal.com webhooks to Pushover. See [webhook-relay.md](./references/webhook-relay.md) for deployment.

## Running Manually

```bash
cd ~/own/amonic && bun run "$HOME/.claude/plugins/marketplaces/cc-skills/plugins/calcom-commander/scripts/sync.ts"
```

## Sync Behavior

1. Fetches bookings from Cal.com API (last 6h window)
2. Compares against last-known state (file-based)
3. Detects new bookings, cancellations, and reschedules
4. Sends Telegram notification (HTML) for each change
5. Sends Pushover notification (plain text) if credentials configured
6. Updates state file for next sync cycle
7. Circuit breaker prevents cascade failures on API errors

## mise Configuration (Agnostic Wiring)

Any repository can adopt these notifications by adding to `.mise.local.toml`:

```toml
[env]
# Required (Telegram)
CALCOM_OP_UUID = "<1password-uuid>"
TELEGRAM_BOT_TOKEN = "<bot-token>"
TELEGRAM_CHAT_ID = "<chat-id>"

# Optional (Pushover dual-channel)
PUSHOVER_APP_TOKEN = "<pushover-app-token>"
PUSHOVER_USER_KEY = "<pushover-user-key>"
PUSHOVER_SOUND = "dune"
WEBHOOK_RELAY_URL = "https://calcom-pushover-webhook-XXXXX.us-central1.run.app/"
```

## References

- [notification-templates.md](./references/notification-templates.md) — Dual-channel message templates
- [pushover-setup.md](./references/pushover-setup.md) — Pushover credential setup guide
- [webhook-relay.md](./references/webhook-relay.md) — Webhook relay deployment + management
- [sync-config.md](./references/sync-config.md) — Sync interval and state management

## Post-Change Checklist

- [ ] YAML frontmatter valid (no colons in description)
- [ ] Trigger keywords current
- [ ] Path patterns use $HOME not hardcoded paths
- [ ] Pushover graceful degradation verified (works without Pushover creds)

Overview

This skill provides dual-channel booking notifications using Telegram for scheduled digests and Pushover for real-time emergency alerts with custom sounds. It runs a scheduled sync to detect new, rescheduled, or cancelled bookings and relays urgent events instantly via a webhook. The design prioritizes reliability with file-based state tracking and a circuit breaker to avoid cascade failures.

How this skill works

A scheduled sync (default 6h polling) fetches recent bookings from the Cal.com API, compares them to a local state file, and detects changes: new bookings, cancellations, and reschedules. Detected changes produce HTML-formatted Telegram messages for digests and per-event alerts. If Pushover credentials are provided, an instant webhook relay sends plain-text emergency notifications with custom sounds and acknowledgement options.

When to use it

  • Keep teams informed of booking lifecycle events without manual checking
  • Deliver urgent booking alerts (reschedule/new) that require immediate acknowledgement
  • Provide an HTML daily digest or on-demand search via Telegram
  • Integrate with continuous workflows that need calendar-sync signals
  • Operate in Telegram-only environments but optionally add Pushover for escalation

Best practices

  • Verify required environment variables (Cal.com op UUID, Telegram bot token, chat ID) before enabling the skill
  • Keep the local state file backed up or versioned to avoid missed deltas after restores
  • Enable Pushover only for emergency escalation; test custom sound and acknowledgement behavior
  • Use the circuit breaker and monitor API error rates to prevent notification storms
  • Deploy the webhook relay to a managed service for reliable Pushover delivery

Example use cases

  • Daily HTML digest to a team chat summarizing new, cancelled, and upcoming bookings
  • Real-time Pushover emergency alert for a high-priority interview reschedule requiring confirmation
  • Webhook bridge that converts Cal.com events to plain-text Pushover messages with 'dune' sound
  • Automated calendar sync workflow that triggers follow-up tasks on booking changes
  • Manual run for immediate reconciliation or to re-send missed notifications after downtime

FAQ

Can this run with Telegram only?

Yes. Pushover is optional; the skill functions with Telegram-only setup for scheduled digests and per-change messages.

What happens if Cal.com API errors occur?

A circuit breaker prevents cascades. The sync will halt retries temporarily and log the error for inspection.