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 dkyazzentwatwa/textme --plugin imessage2plugins reuse this skill
First indexed Jul 7, 2026
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.
Bridges inbound iMessages to a Claude Code session via a local daemon, enabling remote control from whitelisted phone numbers with voice notes, images, and code execution.
Allows Claude to call the user for real-time voice conversations to get input, report progress, or discuss next steps.