Coworker messaging
Send messages to users via WhatsApp and other connected channels. Use when asked to notify someone, send a message, reply to a contact, message a group, or proactively communicate through WhatsApp. Supports text, images, documents, audio, video, and stickers. Also provides group etiquette for observing group conversations — use `<no-reply/>` to stay silent when a response is not needed.
install
source · Clone the upstream repo
git clone https://github.com/Array-Ventures/coworker
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Array-Ventures/coworker "$T" && mkdir -p ~/.claude/skills && cp -r "$T/src/mastra/skills/messaging" ~/.claude/skills/array-ventures-coworker-messaging && rm -rf "$T"
manifest:
src/mastra/skills/messaging/SKILL.mdsource content
Messaging
Send messages through connected channels using the
msg CLI.
CLI
# Send a DM msg send --channel whatsapp --to "+1234567890" "Hello!" # Send to a group (use the group JID) msg send --channel whatsapp --to "120363001234@g.us" "Daily summary ready." # Reply to a specific message msg send --channel whatsapp --to "+1234567890" --reply-to "MSG_ID" "Got it!" # Send an image with caption msg send --channel whatsapp --to "+1234567890" --image /path/to/photo.jpg "Check this out" # Send a document msg send --channel whatsapp --to "+1234567890" --file /path/to/report.pdf # Send a voice note msg send --channel whatsapp --to "+1234567890" --audio /path/to/voice.ogg --ptt # Send a video with caption msg send --channel whatsapp --to "+1234567890" --video /path/to/clip.mp4 "Watch this" # Send a sticker msg send --channel whatsapp --to "+1234567890" --sticker /path/to/sticker.webp # List connected channels and their status msg channels # List allowlisted WhatsApp groups msg groups
Media Flags
| Flag | Description |
|---|---|
| Send an image (JPEG, PNG, WebP, GIF) |
| Send a document (PDF, DOCX, etc.) |
| Send audio (OGG, MP3, M4A) |
| Send video (MP4, MOV) |
| Send a sticker (WebP) |
| Mark audio as voice note (push-to-talk) |
When using
--image, --file, or --video, the text argument becomes the caption.
<no-reply/>
Directive
<no-reply/>When receiving a group message that does not require a response, output
<no-reply/> instead of text. The bridge suppresses sending when this directive is present.
Use
when:<no-reply/>
- Message is casual chatter or FYI with no actionable content
- Conversation does not involve you and your input adds no value
- Someone else already answered adequately
Do NOT use
when:<no-reply/>
- You are @mentioned — always respond to direct mentions
- You have genuinely useful information to contribute
- Someone asked a question you can answer
Group Etiquette
- Keep replies concise and relevant
- Do not send multiple messages in quick succession to the same group
- Wait for a natural pause before contributing to ongoing threads
- Never send sensitive information (passwords, keys, personal data) to groups
Channels
| Channel | | format |
|---|---|---|
| (DM) or (group) |