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.
npx claudepluginhub njerschow/textme --plugin imessageThis skill uses the workspace's default tool permissions.
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.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Builds scalable data pipelines, modern data warehouses, and real-time streaming architectures using Spark, dbt, Airflow, Kafka, and cloud platforms like Snowflake, BigQuery.
Builds production Apache Airflow DAGs with best practices for operators, sensors, testing, and deployment. For data pipelines, workflow orchestration, and batch job scheduling.
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 response