From imessage
Sends iMessages for real-time user input and status notifications during Claude Code sessions. Use ask_user to wait for responses on decisions or clarifications; notify_user for non-blocking updates.
How this skill is triggered — by the user, by Claude, or both
Slash command
/imessage:imessageThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Send and receive iMessages via Claude Code. Get real-time input from the user via their phone, similar to how call-me enables voice conversations.
Send and receive iMessages via Claude Code. Get real-time input from the user via their phone, similar to how call-me enables voice conversations.
Use ask_user when:
Use notify_user when:
Do NOT use for:
ask_userSend an iMessage and wait for the user to respond. This is the main tool - similar to initiate_call in call-me.
Parameters:
message (string, required): What to ask the user. Be conversational.timeout_seconds (number, optional): How long to wait (default: 300 = 5 minutes)Behavior:
check_messagesExample:
ask_user({ message: "Finished the auth module. Should I work on API endpoints or tests next?" })
→ User responds via phone: "API endpoints"
→ Returns: "User responded: API endpoints"
→ Claude continues working on API endpoints
notify_userSend an iMessage without waiting for a response. Fire-and-forget.
Parameters:
message (string, required): Message to sendExample:
notify_user({ message: "Starting the database migration. This will take about 10 minutes." })
→ Returns immediately: "Notification sent"
→ Claude continues working
check_messagesCheck for pending iMessages. Use this to pick up responses that arrived after a timeout.
send_messageSend a message to a specific number. Lower-level than notify_user.
get_conversationGet conversation history with a contact for context.
mark_readMark a message as processed without responding.
list_contactsList all contacts who have messaged.
clear_historyClear conversation history with a contact.
Simple question and continue:
Claude: [finishes auth module]
Claude: ask_user("Hey! Finished the auth module. API endpoints or tests next?")
→ sends iMessage, waits...
User: [responds on phone] "API endpoints please"
Claude: → receives response
Claude: [continues with API endpoints]
Status update (no response needed):
Claude: notify_user("Starting the build process. Will let you know when done.")
Claude: [runs build]
Claude: ask_user("Build complete! 0 errors. Ready to deploy to staging?")
User: "Yes, deploy it"
Claude: [deploys to staging]
Multi-turn conversation:
Claude: ask_user("I found 3 approaches for the caching layer. Want me to explain them?")
User: "Yes please"
Claude: ask_user("Option 1: Redis - fast, needs server. Option 2: In-memory - simple, no persistence. Option 3: SQLite - persistent, slower. Which sounds best?")
User: "Redis"
Claude: [implements Redis caching]
notify_user for updates - Don't block when you don't need inputask_user blocks up to 5 minutes waiting for responsenpx claudepluginhub njerschow/textme --plugin imessageBridges inbound iMessages to a Claude Code session via the njerschow/textme daemon. Lets whitelisted phone numbers send texts, voice notes, and images to drive Claude remotely.
Guides setting up external messaging channels (WhatsApp, Telegram, Discord, iMessage) for Claude Code agents via plugins. Useful for enabling communication outside the CLI.
Sends and receives iMessages via Linq API with replies, reactions, effects, attachments, threading, edits, and rich links. Useful for handling user requests to text, send messages, or check iMessages.