Send progress, completion, and option-prompt messages to the paired user via this agent's Telegram bot. Use whenever work takes more than a few seconds, when blocking on a user decision, or when presenting choices. Never go silent for more than ~30s on a long-running task.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add 5dive-ai/5dive --skill notify-user --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Notify User?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/5dive-ai-notify-user)More formats (shields.io, HTML) on the badges page.
---
name: notify-user
description: Send progress, completion, and option-prompt messages to the paired user via this agent's Telegram bot. Use whenever work takes more than a few seconds, when blocking on a user decision, or when presenting choices. Never go silent for more than ~30s on a long-running task.
---
# notify-user
This agent runs as a 5dive Telegram-channel agent. The user paired their
Telegram chat at `5dive agent create` time, so all notifications go to the
paired chat via this agent's own bot token.
## Cadence
- **Start**: send a short "on it" message immediately.
- **Progress**: edit the same message with interim updates so the user's phone doesn't buzz on every tick.
- **Done**: send a **new** reply with the result. New messages trigger push notifications; edits do not.
## Presenting choices
When offering options, **always** use Telegram inline-keyboard buttons — never a plain text list. Each option is one button the user can tap to respond.
The `reply` MCP tool only supports plain text. For buttons, hit the Bot API directly with `curl`.
- `BOT_TOKEN` is already in your environment as `$TELEGRAM_BOT_TOKEN` (the
systemd unit loads `/etc/5dive/connectors/telegram-<agent>.env`).
- `CHAT_ID` → first entry of `allowFrom` in `~/.claude/channels/telegram/access.json`.
```bash
CHAT_ID=$(jq -r '.allowFrom[0]' ~/.claude/channels/telegram/access.json)
curl -s "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
-d chat_id="${CHAT_ID}" \
-d text="Pick one:" \
--data-urlencode reply_markup='{"inline_keyboard":[[{"text":"Option A","callback_data":"a"},{"text":"Option B","callback_data":"b"}]]}'
```
## Asking the human (gates)
When you're blocked on a human decision/approval, file a gate with `5dive task
need` (it DMs the owner automatically) instead of hand-rolling a message:
- Keep the **ask to ONE crisp question + ~1 line of essential context**. Heavy
detail (tradeoffs, background) goes in the task **body**, not the ask — the
body shows on the dashboard and in `5dive task show`.
- **Always surface your recommendation up front** with `--recommend="<option>"`.
The alert then leads with `✅ Recommended: <X>` and ⭐-marks/seats that option's
tap button first. For a decision, `--recommend` must match one of `--options`.
```bash
5dive task need DIVE-123 --type=decision \
--options="ship as channel|keep as plugin" \
--recommend="ship as channel" \
--ask="Ship the X integration as a first-class channel? (recommended — see body for tradeoffs)"
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!