mcpbeat Sign in

Whatsapp Agent Skill

Send and receive WhatsApp messages via the unofficial linked-device client pywhats (pip install pywhats) — pair with QR, send text/images, group chat, read receipts, presence/typing, and a long-running JSON event stream. Use when the user wants to script WhatsApp as a linked companion device (like WhatsApp Web), pair a device, send a WhatsApp from Python, or listen for inbound messages. Triggers: 'whatsapp', 'send whatsapp', 'pair whatsapp', 'pywhats', 'linked device', 'whatsapp web client'. NOT the official WhatsApp Business/Cloud API.

13k tokens
context cost
the whole folder, loaded on every use
5
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
363
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/sanjay3290/ai-skills --skill whatsapp

The instruction itself

6 sections, as written by the author

WhatsApp (pywhats)

Drive a WhatsApp account as a linked companion device (like WhatsApp Web)

from async Python via pywhats (pre-alpha,

text/image only). This is an unofficial multi-device client — not the

official WhatsApp Business / Cloud API.

CLI entrypoint: scripts/wa.py (auto-bootstraps a managed venv on first run).

Mental model

  • Pairing = one-time QR scan. wa.py pair shows an ASCII QR; scan it in

WhatsApp → Linked Devices. Credentials persist to

$PYWHATS_HOME/<session>.session (+ .signal.db).

  • Resuming = silent. Later commands reconnect with the same session — no QR.
  • JIDs address chats. Bare phone 15550001234[email protected];

groups use [email protected].

  • Events are how you receive. wa.py listen prints one JSON object per event.

⚠️ Never bare-await Client calls inside a handler

Event handlers run inline on the receive loop. Awaiting send_*,

mark_read, get_group_info, download_media, etc. inside a handler

deadlocks the connection. Always asyncio.create_task(...). The listen

subcommand already does this for --read.

Commands

scripts/wa.py pair                                          # one-time QR pair
scripts/wa.py send-text 15550001234 "hello"                 # 1:1 text
scripts/wa.py send-image 15550001234 photo.jpg --caption hi # 1:1 image
scripts/wa.py group-info [email protected]            # group metadata JSON
scripts/wa.py group-send [email protected] "hi all"   # group text
scripts/wa.py mark-read 15550001234 MSGID [--sender JID]    # blue ticks
scripts/wa.py presence available                            # global presence
scripts/wa.py typing 15550001234 composing [--media audio]  # typing indicator
scripts/wa.py listen --read --events message,receipt        # JSONL event stream
scripts/wa.py --session work send-text 15550001234 "hi"     # named session

| Command | Behavior |

|---------|----------|

| pair | Fresh link via ASCII QR; idempotent if already paired |

| send-text <to> <text> | Send 1:1 text; print message id |

| send-image <to> <path> [--caption C] | Send image (jpg/png/webp, ≤16MB); print id |

| group-info <gid> | Print group JSON (subject, owner, participants, …) |

| group-send <gid> <text> | Resolve members then send group text; print id |

| mark-read <chat> <ids...> | Blue-tick; --sender for groups |

| presence <available\|unavailable> | Global presence |

| typing <to> <composing\|paused> | Chat presence; optional --media audio |

| listen | Long-running JSON lines; --read, --events, --subscribe JID (required for presence events) |

Global: --session NAME (default default, or env PYWHATS_SESSION) —

goes before the subcommand: wa.py --session work pair.

Sessions / multi-account

$PYWHATS_HOME/                 # default: ~/.pywhats
  venv/                        # managed Python + pywhats
  default.session              # --session default
  default.session.signal.db
  work.session                 # --session work

Override home with PYWHATS_HOME. Unpaired / logged-out sessions print a clear

message to re-run wa.py --session <name> pair.

If pair reports the device was logged out right after scanning, that is

WhatsApp device-churn reaping, not a failure of the skill — the dead session is

deleted automatically; follow the recovery steps it prints (remove linked

devices, wait 15–20 min, pair once).

Full reference

references/api.md — every Client method, every event

payload, JID construction, and the download_media note.

Other skills for the same job

different authors, same section of the catalogue
Pydicom
by christophacham
×3

Python library for working with DICOM (Digital Imaging and Communications in Medicine) files. Use this skill when reading, writing, or modifying medical imaging data in DICOM format, extracting pixel data from medical images (CT, MRI, X-ray, ultrasound), anonymizing DICOM files, working with DICOM metadata and tags, converting DICOM images to other formats, handling compressed DICOM data, or processing medical imaging datasets. Applies to tasks involving medical image analysis, PACS systems, radiology workflows, and healthcare imaging applications.

13k tokens scripts
Pydicom
by ComeOnOliver
×3

Python library for working with DICOM (Digital Imaging and Communications in Medicine) files. Use this skill when reading, writing, or modifying medical imaging data in DICOM format, extracting pixel data from medical images (CT, MRI, X-ray, ultrasound), anonymizing DICOM files, working with DICOM metadata and tags, converting DICOM images to other formats, handling compressed DICOM data, or processing medical imaging datasets. Applies to tasks involving medical image analysis, PACS systems, radiology workflows, and healthcare imaging applications.

15k tokens scripts
Remotion Best Practices
by ncklrs
×3

Best practices for Remotion - Video creation in React

19k tokens
Podcast Generation
by microsoft
vendor ×2

Generate AI-powered podcast-style audio narratives using Azure OpenAI's GPT Realtime Mini model via WebSocket. Use when building text-to-speech features, audio narrative generation, podcast creation from content, or integrating with Azure OpenAI Realtime API for real audio output. Covers full-stack implementation from React frontend to Python FastAPI backend with WebSocket streaming.

4k tokens scripts
Remotion Best Practices
by ComeOnOliver
×2

Best practices for Remotion - Video creation in React

23k tokens
Remotion To Hyperframes
by aiskillstore
×1

Port an existing Remotion (React) composition''s source to HyperFrames HTML. Use ONLY on an explicit ask to port/convert/migrate/translate a Remotion source — one-way, Remotion-only. A passing Remotion mention, reference-only code, or "make something like my Remotion video" is a fresh build (/general-video). Unclear → /hyperframes.

88k tokens scripts
Gemini API Dev
by lingxling
×1

Use this skill when building applications with Gemini API hosted models, including Gemini and Gemma 4, working with multimodal content (text, images, audio, video), implementing function calling, using structured outputs, or needing current model specifications. Covers SDK usage...

2k tokens
Github Issue Creator
by lingxling
×1

Turn error logs, screenshots, voice notes, and rough bug reports into crisp, developer-ready GitHub issues with repro steps, impact, and evidence.

1k tokens

How to use it

Copy the folder

Take sanjay3290/whatsapp from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.

Install what it needs

The instructions reference pip. Without those the skill loads but fails at the first command.