iMessage/SMS CLI for listing chats, fetching history, watching conversations, and sending messages on macOS via the Messages app. Use when the user wants to send a text message, read iMessages, check recent texts, reply to a conversation, send an SMS, or interact with the Messages app from the terminal. Supports texting contacts by phone number or email, attaching files, and streaming incoming messages in real time.
Install with the open skills CLI (global, non-interactive — available in every Claude Code session):
npx skills add elizaOS/eliza --skill "imsg" -g -a claude-code -yOr manually — copy the SKILL.md below into:
~/.claude/skills/imsg-elizaos/SKILL.md---
name: imsg
description: iMessage/SMS CLI for listing chats, fetching history, watching conversations, and sending messages on macOS via the Messages app. Use when the user wants to send a text message, read iMessages, check recent texts, reply to a conversation, send an SMS, or interact with the Messages app from the terminal. Supports texting contacts by phone number or email, attaching files, and streaming incoming messages in real time.
homepage: https://imsg.to
metadata:
{
"otto":
{
"emoji": "📨",
"os": ["darwin"],
"requires": { "bins": ["imsg"] },
"install":
[
{
"id": "brew",
"kind": "brew",
"formula": "steipete/tap/imsg",
"bins": ["imsg"],
"label": "Install imsg (brew)",
},
],
},
}
---
# imsg Actions
## Overview
Use `imsg` to read and send Messages.app iMessage/SMS on macOS.
Requirements: Messages.app signed in, Full Disk Access for your terminal, and Automation permission to control Messages.app for sending.
## Inputs to collect
- Recipient handle (phone/email) for `send`
- `chatId` for history/watch (from `imsg chats --limit 10 --json`)
- `text` and optional `file` path for sends
## Actions
### List chats
```bash
imsg chats --limit 10 --json
```
### Fetch chat history
```bash
imsg history --chat-id 1 --limit 20 --attachments --json
```
### Watch a chat
```bash
imsg watch --chat-id 1 --attachments
```
### Send a message
```bash
imsg send --to "+14155551212" --text "hi" --file /path/pic.jpg
```
## Notes
- `--service imessage|sms|auto` controls delivery.
- Confirm recipient + message before sending.
## Ideas to try
- Use `imsg chats --limit 10 --json` to discover chat ids.
- Watch a high-signal chat to stream incoming messages.
Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Use when executing implementation plans with independent tasks in the current session