Skill v1.0.0
currentAutomated scan100/100version: "1.0.0" name: whatsapp description: "Send and read WhatsApp messages via the wacli CLI. Search chats, view history, send text and files to contacts or groups." requires_bridge: "whatsapp"
Use the whatsapp bridge to read and send WhatsApp messages via the wacli CLI.
When to Use
- User asks to send a WhatsApp message
- Reading WhatsApp conversation history
- Searching WhatsApp chats or messages
When NOT to Use
- Telegram messages -> reply normally (Ciana routes automatically)
- iMessage/SMS -> use the
imessagebridge - Any other messaging platform
Pre-flight: Ensure Sync is Running
Before any WhatsApp operation, check that wacli is connected and syncing:
- Run
wacli-daemon statusto check if the sync daemon is running - If the status is "stopped", start it:
wacli-daemon start - After starting, wait a few seconds, then verify with
wacli doctorthat CONNECTED istrue - Only then proceed with the actual command
This ensures messages are always up-to-date without requiring the user to manually sync.
If wacli doctor shows AUTHENTICATED as false, tell the user they need to re-authenticate with wacli auth on the host (this requires scanning a QR code and cannot be done remotely).
Commands
All commands run via host_execute(bridge="whatsapp", command="...").
Sync Daemon Management
wacli-daemon status # Check if sync is runningwacli-daemon start # Start sync in background (idempotent)wacli-daemon stop # Stop background sync
List Chats
wacli chats list --limit 20wacli chats list --limit 20 --query "John"
Search Messages
wacli messages search "query" --limit 20wacli messages search "query" --limit 20 --chat <jid>wacli messages search "query" --after 2025-01-01 --before 2025-02-01
Send Text
wacli send text --to "+14155551212" --message "Hello!"
For groups, use JID format:
wacli send text --to "1234567890-123456789@g.us" --message "Hello group!"
Send File
wacli send file --to "+14155551212" --file /path/to/image.jpg --caption "Check this"
Auth & Diagnostics
wacli auth # Interactive QR code authentication (host only)wacli doctor # Check auth/connection/store status
Contact Resolution
When the user asks to message someone by name (e.g. "send a message to Marco"), never say you don't have the number. Instead:
- Search chats first:
wacli chats list --query "Marco" - If found, use the JID or phone number from the result to send
- If multiple matches, show the list and ask the user to pick
- Only if no match is found, ask the user for the number
Safety Rules
- Always confirm recipient and message content before sending
- Never send to unknown numbers without explicit user approval
- Rate limit - don't spam
Setup (on host)
- Install wacli:
brew install steipete/tap/wacli - Install daemon:
ln -sf $(pwd)/scripts/wacli-daemon /opt/homebrew/bin/wacli-daemon - Authenticate:
wacli auth(scan QR code with WhatsApp on phone) - Initial sync:
wacli-daemon start - Add
whatsappbridge inconfig.yaml, restart gateway