WhatsApp Assistant

SkillSearch

Read, search, and send WhatsApp messages using whatsapp-cli.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the WhatsApp Assistant skill

What this skill tells your AI

The instructions your AI receives, as published by spamsch/son-of-simon in skills/whatsapp_assistant/SKILL.md and read by ahel’s review.

Behavior Notes

CRITICAL: Every command MUST use -store ~/.macbot/whatsapp

The -store flag is MANDATORY on every whatsapp-cli invocation and MUST come immediately after whatsapp-cli, before any subcommand. Without it the CLI uses a different default location and will find no session, no contacts, and no messages.

Copy-paste these exact templates — do NOT remove or reorder -store ~/.macbot/whatsapp:

# Sync (MUST use timeout — sync never exits on its own)
timeout 10 whatsapp-cli -store ~/.macbot/whatsapp sync

# List chats
whatsapp-cli -store ~/.macbot/whatsapp chats list

# List chats filtered
whatsapp-cli -store ~/.macbot/whatsapp chats list --query "NAME"

# List messages from a chat
whatsapp-cli -store ~/.macbot/whatsapp messages list --chat JID --limit 30

# List recent messages across all chats
whatsapp-cli -store ~/.macbot/whatsapp messages list --limit 20

# Search messages
whatsapp-cli -store ~/.macbot/whatsapp messages search --query "TERM"

# Search contacts
whatsapp-cli -store ~/.macbot/whatsapp contacts search --query "NAME"

# Send message
whatsapp-cli -store ~/.macbot/whatsapp send --to JID --message "TEXT"

# Auth (first-time setup)
whatsapp-cli -store ~/.macbot/whatsapp auth

Tool

All commands use run_shell_command to invoke whatsapp-cli.

Authentication

  • First-time setup: whatsapp-cli -store ~/.macbot/whatsapp auth
  • This displays a QR code the user must scan with WhatsApp on their phone
  • Session persists ~20 days before re-authentication is needed
  • If any command fails with an auth error, tell the user to run auth again

Syncing Messages

  • Sync runs forever until killed — it never exits on its own.
  • ALWAYS use the unix timeout command: timeout 10 whatsapp-cli -store ~/.macbot/whatsapp sync
  • Do NOT rely on the run_shell_command timeout parameter — you MUST prepend timeout 10 to the command string itself.
  • Always sync before querying when the user asks for "latest", "new", "recent", or "unread" messages
  • If message queries return empty results, run sync and retry

Be Proactive

  • When the user asks about a contact (e.g. "messages from Frank"), search contacts AND chats in parallel to find the JID faster
  • When summarising messages, add your own interpretation of what the conversation means and suggest possible follow-up actions the user might want to take
  • If a message references something actionable (meeting, deadline, document), proactively suggest creating a reminder or calendar event

Listing Chats

  • Pagination: --limit 20 --page 0
  • Results are sorted by most recent activity
  • Each chat includes a JID (WhatsApp identifier) needed for other commands

Reading Messages

  • Pagination: --limit 20 --page 0
  • Messages are sorted newest-first

Searching Messages

  • Search is case-insensitive with partial matching
  • Pagination: --limit 20 --page 0

Sending Messages

  • Individual JIDs look like: 1234567890@s.whatsapp.net
  • Group JIDs look like: 123456789-987654321@g.us
  • Always confirm message content with the user before sending

JID Format

  • Individual: phone number without + followed by @s.whatsapp.net (e.g. 1234567890@s.whatsapp.net)
  • Group: group ID followed by @g.us
  • To send to a phone number, construct the JID: strip + and spaces, append @s.whatsapp.net

Common Request Patterns

  • "my recent chats"chats list to show conversations
  • "messages from X"chats list --query "X" to find the JID, then messages list --chat <JID>
  • "send X a message"contacts search --query "X" to find JID, confirm message, then send
  • "search for X"messages search --query "X"
  • "unread messages"messages list --limit 20 (most recent messages across chats)

Output Format

  • All whatsapp-cli commands return JSON
  • Parse the JSON output to present results in a readable format to the user
  • Show sender name, timestamp, and message content when displaying messages

Signals

GitHub stars
28
Forks
1
Last commit
Jul 2026

ahel review

  • S4info
    community integration — published by spamsch, not whatsapp

Automated review, not a security audit. Ruleset v1.

Advanced
Catalog kind
skill
Gateway key
whatsapp-assistant
Source
github.com/spamsch/son-of-simon