tools/imessage/SKILL.md
Send and read iMessages/SMS from macOS. Use for texting contacts, scheduling services, or automating message-based workflows. Triggers on queries about texting, messaging, SMS, iMessage, or contacting someone via text.
npx skillsauth add letta-ai/skills imessageInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Send and read iMessages/SMS using the imsg CLI tool on macOS.
Clone and build the tool:
git clone https://github.com/letta-ai/imsg.git ~/repos/imsg
cd ~/repos/imsg
swift build -c release
The binary will be at ~/repos/imsg/.build/release/imsg (or use the pre-built binary if available at ~/repos/imsg/bin/imsg).
Required macOS permissions (System Settings → Privacy & Security):
| Permission | Location | Required For | |------------|----------|--------------| | Full Disk Access | Privacy & Security → Full Disk Access | Reading message history | | Automation | Privacy & Security → Automation | Sending messages via Messages.app |
To send SMS (green bubbles) to non-iMessage users:
imsg chats --limit 10
imsg chats --limit 10 --json
Output format: [chat_id] (identifier) last=timestamp
# View last 20 messages in a chat
imsg history --chat-id <id> --limit 20
# With attachments metadata
imsg history --chat-id <id> --limit 20 --attachments
# Filter by date
imsg history --chat-id <id> --start 2026-01-01T00:00:00Z --json
# Send to phone number
imsg send --to "+15555555555" --text "Hello!"
# Send with attachment
imsg send --to "+15555555555" --text "Here's the file" --file /path/to/file.jpg
# Force iMessage or SMS
imsg send --to "+15555555555" --text "Hi" --service imessage
imsg send --to "+15555555555" --text "Hi" --service sms
# Send to existing chat by ID
imsg send --chat-id 86 --text "Hello!"
imsg watch --chat-id <id> --debounce 250ms
+1XXXXXXXXXX for US numbers--service sms when recipient doesn't have iMessageimsg send --to "+14155551234" --text "Hi! Do you have availability this Saturday for a cleaning?"
imsg send --to "+14155551234" --text "Just wanted to follow up on my earlier message. Let me know when you have a chance!"
imsg send --to "+14155551234" --text "Confirming our appointment for Saturday at 10am. See you then!"
| Issue | Solution | |-------|----------| | "not authorized" error | Grant Automation permission to terminal | | Can't read messages | Grant Full Disk Access to terminal | | SMS not sending | Enable Text Message Forwarding on iPhone | | Message stuck sending | Check Messages.app is signed in and working |
~/repos/imsg/bin/imsg (adjust path as needed)testing
Navigates archived ChatGPT or Claude-style conversation exports and a MemFS reference archive on demand. Use when recalling what a past assistant knew, searching old conversations, rendering specific chats, seeding reference memory from export sidecars, or mining historical context without doing a full import.
testing
Migrates deprecated Letta Filesystem folders/files to MemFS using markdown document corpora, chunking, local lexical search, and QMD semantic search via the memfs-search skill. Use when replacing folders.files.upload, working with PDFs or document QA, or emulating open_file, grep_file, and search_file behavior.
data-ai
Configures Letta agent compaction settings and custom summarization prompts. Use when a user asks to change an agent's compaction prompt, improve summaries after context eviction, tune sliding-window or all-message compaction, or design companion/coding-agent continuity summaries.
development
Semantic search over agent memory files. Use when you need to find conceptually related memory blocks, discover forgotten reference files, check what you already know before creating new memory, or search beyond exact keyword matching. Currently supports QMD (local, no API keys).