Interact with Messages app - read conversations, send messages, and check for new messages using AppleScript and SQLite database access
This skill provides comprehensive Messages app interaction capabilities through command-line tools.
All tools are located in .claude/skills/imessage/ and use either AppleScript or direct SQLite database access to interact with the Messages app.
*-db.sh): Read messages directly from the Messages SQLite database (~/Library/Messages/chat.db). More reliable and faster, supports full message history including sent messages with proper text extraction.Recommended: Use database tools for reading (read-messages-db.sh, check-new-messages-db.sh) and AppleScript for sending (send-message.sh, send-to-chat.sh).
read-messages-db.sh) ⭐ RECOMMENDEDRead messages directly from the Messages SQLite database. This is the most reliable method for reading message history.
Usage:
# Read recent messages by phone number
.claude/skills/imessage/read-messages-db.sh "1234567890" --limit 10
# Read recent messages (all conversations)
.claude/skills/imessage/read-messages-db.sh --limit 20
Features:
check-new-messages-db.sh) ⭐ RECOMMENDEDCheck for recent incoming messages from the database. Used by the iMessage auto-reply daemon.
Usage:
# Check recent messages from specific number
.claude/skills/imessage/check-new-messages-db.sh "1234567890"
# Check all recent incoming messages
.claude/skills/imessage/check-new-messages-db.sh
Output Format:
MSG_ID: <unique_hash>
ROWID: <message_id>
DATE: <readable_timestamp>
TEXT: <message_text>
FROM: <phone_number>
CHAT: <chat_identifier>
---
send-message.sh) ⭐ RECOMMENDEDSend a message to a contact or phone number via AppleScript.
Usage:
# Send to contact name
.claude/skills/imessage/send-message.sh "John Doe" "Hey, how are you?"
# Send to phone number
.claude/skills/imessage/send-message.sh "+1234567890" "Message text here"
# Send with content from stdin
echo "Message content" | .claude/skills/imessage/send-message.sh "John Doe"
send-to-chat.sh)Send a message to a specific chat by chat identifier (useful for group chats).
Usage:
# Send to group chat
echo "Message text" | .claude/skills/imessage/send-to-chat.sh "chat123456789"
# Send directly
.claude/skills/imessage/send-to-chat.sh "chat123456789" "Message text"
send-file.sh)Send images, documents, or other files via iMessage using AppleScript.
Usage:
# Send file to phone number
.claude/skills/imessage/send-file.sh "+1234567890" "/path/to/file.jpg"
# Send file to contact name
.claude/skills/imessage/send-file.sh "John Doe" "/Users/user/Desktop/image.png"
Supported file types:
list-conversations.sh)List recent conversations with contact names and message counts.
Usage:
# List all conversations
.claude/skills/imessage/list-conversations.sh
# List first N conversations
.claude/skills/imessage/list-conversations.sh --limit 10
get-message-attachments.sh)Retrieve and process attachments from received messages.
Usage:
# Get attachments from a specific message (use ROWID from check-new-messages-db.sh)
.claude/skills/imessage/get-message-attachments.sh <message_rowid>
Output format:
IMAGE|/path/to/output.jpg|image/jpeg|original.jpg|1024x768|125K
FILE|/path/to/file.pdf|application/pdf|document.pdf||2.3M
Features:
~/tmp/Reading Messages (Database Approach - Recommended)
read-messages-db.sh with phone number to see conversation historySending Messages
send-message.sh for direct messagessend-to-chat.sh for group chatsChecking New Messages (Database Approach - Recommended)
check-new-messages-db.sh to check for recent incoming messagesFor Automated Daemons
check-new-messages-db.sh to poll for new messagesread-messages-db.sh to get conversation contextsend-message.sh or send-to-chat.sh to send replies