| name | draft-whatsapp-reply |
| description | Draft a WhatsApp reply with human approval. Creates a Plan.md file with proposed reply for user to approve before sending. |
| allowed-tools | Read, Write, Bash, Glob |
Draft WhatsApp Reply Skill
You are drafting a WhatsApp reply that requires human approval before sending.
Input
You will receive message details in this format:
$ARGUMENTS
Format: SENDER|JID|MESSAGE_CONTENT or SENDER|JID|MESSAGE_CONTENT|CONTEXT
The 4th field (CONTEXT) is optional. When present, it contains recent conversation messages formatted as [timestamp] Sender: content lines, separated by newlines.
Example (without context): ContactName|923212623771@s.whatsapp.net|Can you pick up groceries on your way home?
Example (with context): ContactName|923212623771@s.whatsapp.net|Can you pick up groceries on your way home?|[2026-02-16 09:30:00] Me: I'm heading out soon\n[2026-02-16 09:35:00] ContactName: Can you pick up groceries on your way home?
Your Task
- Parse the input to extract sender name, JID, message content, and optional conversation context (4th pipe-delimited field)
- Read Company_Handbook.md for tone/context guidelines
- If conversation context is provided, use it to understand the conversation flow before drafting
- Draft an appropriate, helpful, context-aware reply
- Create a Plan file for human approval
Reply Guidelines
- Keep replies concise and natural (like a real WhatsApp message)
- Match the tone of the sender (formal/informal)
- Be helpful and address the question/request directly
- Use appropriate emojis sparingly if the conversation is casual
- Don't be overly formal with family members
Plan File Structure
Create the file at: Plans/Reply_[TIMESTAMP]_[SENDER].md
Use this exact structure:
---
created: [YYYY-MM-DD HH:MM]
type: whatsapp-reply
status: pending_approval
sender: [SENDER_NAME]
jid: [SENDER_JID]
tags: [reply, whatsapp, hitl]
---
# WhatsApp Reply: [SENDER_NAME]
## Original Message
> [THE MESSAGE THEY SENT]
**From:** [SENDER_NAME]
**Received:** [TIMESTAMP]
## Conversation Context
[If context was provided, show the recent conversation messages here. If no context was provided, write "No conversation context available."]
## Proposed Reply
[YOUR DRAFTED REPLY HERE]
## Approval
- [ ] **APPROVE** - Send this reply
- [ ] **EDIT** - I'll modify the reply below
- [ ] **REJECT** - Don't send anything
### Modified Reply (if editing)
[Leave empty - user fills this if they choose EDIT]
---
**JID:** [SENDER_JID]
*Generated by Claude - Awaiting human approval*
Execution Steps
- Parse the input arguments - split on
| to extract SENDER, JID, MESSAGE_CONTENT, and optional CONTEXT
- CRITICAL: Preserve the FULL JID including the @suffix (e.g., @s.whatsapp.net, @lid, @g.us)
- The JID format is: phonenumber@suffix
- NEVER truncate or modify the JID
- If 4 fields present, the 4th is conversation context (recent messages)
- If 3 fields present, there is no context — that's fine
- Read Company_Handbook.md if available
- Review conversation context (if provided) to understand the conversation flow
- Draft a natural, helpful, context-aware reply
- Create the Plan file using Write tool
- Use the EXACT JID from the input - do not modify it
- Include conversation context in the ## Conversation Context section
- Report what you created
Output
After creating the plan, output:
REPLY DRAFTED: [filename]
TO: [sender name]
STATUS: Awaiting approval
PROPOSED REPLY:
"[your drafted reply]"
ACTION: Open Plans/[filename] in Obsidian and check APPROVE to send.