Skip to content
Back to skills

Whatsapp Assistant

ASecurity

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

  • 29 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 11, 2026
toolsshell

Works with

  • cli

Security analysis

A100/100

Scanned June 11, 2026

npx -y skills add spamsch/son-of-simon --skill whatsapp_assistant --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Whatsapp Assistant?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Whatsapp Assistant
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/spamsch-whatsapp-assistant/badge)](https://www.skillsdirectory.com/skills/spamsch-whatsapp-assistant)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
id: whatsapp_assistant
name: WhatsApp Assistant
description: Read, search, and send WhatsApp messages using whatsapp-cli.
apps:
  - WhatsApp
tasks:
  - run_shell_command
examples:
  - "Show my recent WhatsApp chats"
  - "Read messages from Mom"
  - "Send a WhatsApp to +1234567890 saying I'm on my way"
  - "Search WhatsApp messages for flight confirmation"
  - "Find the contact for John"
safe_defaults:
  limit: 20
confirm_before_write:
  - send message
requires_permissions: []
---

## 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

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.