[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openclaw-openclaw-skills-imsg":3},{"error":4,"detail":5,"metadata":23,"markdownContent":25,"rawMarkdown":20},false,{"repo_full_name":6,"owner":7,"repo_name":7,"repo_forks":8,"skill_path":9,"repo_stars":10,"name":11,"category_id":12,"description":13,"file_tree":14,"skill_md_content":20,"skill_id":21,"skill_key":22},"openclaw/openclaw","openclaw",62380,"skills/imsg",323646,"imsg",1,"iMessage/SMS CLI for listing chats, history, and sending messages via Messages.app.",[15],{"name":16,"path":17,"size":18,"type":19},"SKILL.md","skills/imsg/SKILL.md",2976,"file","---\nname: imsg\ndescription: iMessage/SMS CLI for listing chats, history, and sending messages via Messages.app.\nhomepage: https://imsg.to\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"📨\",\n        \"os\": [\"darwin\"],\n        \"requires\": { \"bins\": [\"imsg\"] },\n        \"install\":\n          [\n            {\n              \"id\": \"brew\",\n              \"kind\": \"brew\",\n              \"formula\": \"steipete/tap/imsg\",\n              \"bins\": [\"imsg\"],\n              \"label\": \"Install imsg (brew)\",\n            },\n          ],\n      },\n  }\n---\n\n# imsg\n\nUse `imsg` to read and send iMessage/SMS via macOS Messages.app.\n\n## When to Use\n\n✅ **USE this skill when:**\n\n- User explicitly asks to send iMessage or SMS\n- Reading iMessage conversation history\n- Checking recent Messages.app chats\n- Sending to phone numbers or Apple IDs\n\n## When NOT to Use\n\n❌ **DON'T use this skill when:**\n\n- Telegram messages → use `message` tool with `channel:telegram`\n- Signal messages → use Signal channel if configured\n- WhatsApp messages → use WhatsApp channel if configured\n- Discord messages → use `message` tool with `channel:discord`\n- Slack messages → use `slack` skill\n- Group chat management (adding/removing members) → not supported\n- Bulk/mass messaging → always confirm with user first\n- Replying in current conversation → just reply normally (OpenClaw routes automatically)\n\n## Requirements\n\n- macOS with Messages.app signed in\n- Full Disk Access for terminal\n- Automation permission for Messages.app (for sending)\n\n## Common Commands\n\n### List Chats\n\n```bash\nimsg chats --limit 10 --json\n```\n\n### View History\n\n```bash\n# By chat ID\nimsg history --chat-id 1 --limit 20 --json\n\n# With attachments info\nimsg history --chat-id 1 --limit 20 --attachments --json\n```\n\n### Watch for New Messages\n\n```bash\nimsg watch --chat-id 1 --attachments\n```\n\n### Send Messages\n\n```bash\n# Text only\nimsg send --to \"+14155551212\" --text \"Hello!\"\n\n# With attachment\nimsg send --to \"+14155551212\" --text \"Check this out\" --file /path/to/image.jpg\n\n# Specify service\nimsg send --to \"+14155551212\" --text \"Hi\" --service imessage\nimsg send --to \"+14155551212\" --text \"Hi\" --service sms\n```\n\n## Service Options\n\n- `--service imessage` — Force iMessage (requires recipient has iMessage)\n- `--service sms` — Force SMS (green bubble)\n- `--service auto` — Let Messages.app decide (default)\n\n## Safety Rules\n\n1. **Always confirm recipient and message content** before sending\n2. **Never send to unknown numbers** without explicit user approval\n3. **Be careful with attachments** — confirm file path exists\n4. **Rate limit yourself** — don't spam\n\n## Example Workflow\n\nUser: \"Text mom that I'll be late\"\n\n```bash\n# 1. Find mom's chat\nimsg chats --limit 20 --json | jq '.[] | select(.displayName | contains(\"Mom\"))'\n\n# 2. Confirm with user\n# \"Found Mom at +1555123456. Send 'I'll be late' via iMessage?\"\n\n# 3. Send after confirmation\nimsg send --to \"+1555123456\" --text \"I'll be late\"\n```\n","dd0370d5-7e3b-501f-a55b-d65ac0fb0973","openclaw-openclaw-skills-imsg",{"name":11,"description":13,"homepage":24},"https://imsg.to","\u003Ch1>imsg\u003C/h1>\n\u003Cp>Use \u003Ccode>imsg\u003C/code> to read and send iMessage/SMS via macOS Messages.app.\u003C/p>\n\u003Ch2>When to Use\u003C/h2>\n\u003Cp>✅ \u003Cstrong>USE this skill when:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>User explicitly asks to send iMessage or SMS\u003C/li>\n\u003Cli>Reading iMessage conversation history\u003C/li>\n\u003Cli>Checking recent Messages.app chats\u003C/li>\n\u003Cli>Sending to phone numbers or Apple IDs\u003C/li>\n\u003C/ul>\n\u003Ch2>When NOT to Use\u003C/h2>\n\u003Cp>❌ \u003Cstrong>DON&#39;T use this skill when:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>Telegram messages → use \u003Ccode>message\u003C/code> tool with \u003Ccode>channel:telegram\u003C/code>\u003C/li>\n\u003Cli>Signal messages → use Signal channel if configured\u003C/li>\n\u003Cli>WhatsApp messages → use WhatsApp channel if configured\u003C/li>\n\u003Cli>Discord messages → use \u003Ccode>message\u003C/code> tool with \u003Ccode>channel:discord\u003C/code>\u003C/li>\n\u003Cli>Slack messages → use \u003Ccode>slack\u003C/code> skill\u003C/li>\n\u003Cli>Group chat management (adding/removing members) → not supported\u003C/li>\n\u003Cli>Bulk/mass messaging → always confirm with user first\u003C/li>\n\u003Cli>Replying in current conversation → just reply normally (OpenClaw routes automatically)\u003C/li>\n\u003C/ul>\n\u003Ch2>Requirements\u003C/h2>\n\u003Cul>\n\u003Cli>macOS with Messages.app signed in\u003C/li>\n\u003Cli>Full Disk Access for terminal\u003C/li>\n\u003Cli>Automation permission for Messages.app (for sending)\u003C/li>\n\u003C/ul>\n\u003Ch2>Common Commands\u003C/h2>\n\u003Ch3>List Chats\u003C/h3>\n\u003Cdiv class=\"md-code-block\">\u003Cdiv class=\"md-code-lang\">bash\u003C/div>\u003Cpre>\u003Ccode class=\"hljs language-bash\">imsg chats --\u003Cspan class=\"hljs-built_in\">limit\u003C/span> 10 --json\u003C/code>\u003C/pre>\u003C/div>\u003Ch3>View History\u003C/h3>\n\u003Cdiv class=\"md-code-block\">\u003Cdiv class=\"md-code-lang\">bash\u003C/div>\u003Cpre>\u003Ccode class=\"hljs language-bash\">\u003Cspan class=\"hljs-comment\"># By chat ID\u003C/span>\nimsg \u003Cspan class=\"hljs-built_in\">history\u003C/span> --chat-id 1 --\u003Cspan class=\"hljs-built_in\">limit\u003C/span> 20 --json\n\n\u003Cspan class=\"hljs-comment\"># With attachments info\u003C/span>\nimsg \u003Cspan class=\"hljs-built_in\">history\u003C/span> --chat-id 1 --\u003Cspan class=\"hljs-built_in\">limit\u003C/span> 20 --attachments --json\u003C/code>\u003C/pre>\u003C/div>\u003Ch3>Watch for New Messages\u003C/h3>\n\u003Cdiv class=\"md-code-block\">\u003Cdiv class=\"md-code-lang\">bash\u003C/div>\u003Cpre>\u003Ccode class=\"hljs language-bash\">imsg watch --chat-id 1 --attachments\u003C/code>\u003C/pre>\u003C/div>\u003Ch3>Send Messages\u003C/h3>\n\u003Cdiv class=\"md-code-block\">\u003Cdiv class=\"md-code-lang\">bash\u003C/div>\u003Cpre>\u003Ccode class=\"hljs language-bash\">\u003Cspan class=\"hljs-comment\"># Text only\u003C/span>\nimsg send --to \u003Cspan class=\"hljs-string\">&quot;+14155551212&quot;\u003C/span> --text \u003Cspan class=\"hljs-string\">&quot;Hello!&quot;\u003C/span>\n\n\u003Cspan class=\"hljs-comment\"># With attachment\u003C/span>\nimsg send --to \u003Cspan class=\"hljs-string\">&quot;+14155551212&quot;\u003C/span> --text \u003Cspan class=\"hljs-string\">&quot;Check this out&quot;\u003C/span> --file /path/to/image.jpg\n\n\u003Cspan class=\"hljs-comment\"># Specify service\u003C/span>\nimsg send --to \u003Cspan class=\"hljs-string\">&quot;+14155551212&quot;\u003C/span> --text \u003Cspan class=\"hljs-string\">&quot;Hi&quot;\u003C/span> --service imessage\nimsg send --to \u003Cspan class=\"hljs-string\">&quot;+14155551212&quot;\u003C/span> --text \u003Cspan class=\"hljs-string\">&quot;Hi&quot;\u003C/span> --service sms\u003C/code>\u003C/pre>\u003C/div>\u003Ch2>Service Options\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Ccode>--service imessage\u003C/code> — Force iMessage (requires recipient has iMessage)\u003C/li>\n\u003Cli>\u003Ccode>--service sms\u003C/code> — Force SMS (green bubble)\u003C/li>\n\u003Cli>\u003Ccode>--service auto\u003C/code> — Let Messages.app decide (default)\u003C/li>\n\u003C/ul>\n\u003Ch2>Safety Rules\u003C/h2>\n\u003Col>\n\u003Cli>\u003Cstrong>Always confirm recipient and message content\u003C/strong> before sending\u003C/li>\n\u003Cli>\u003Cstrong>Never send to unknown numbers\u003C/strong> without explicit user approval\u003C/li>\n\u003Cli>\u003Cstrong>Be careful with attachments\u003C/strong> — confirm file path exists\u003C/li>\n\u003Cli>\u003Cstrong>Rate limit yourself\u003C/strong> — don&#39;t spam\u003C/li>\n\u003C/ol>\n\u003Ch2>Example Workflow\u003C/h2>\n\u003Cp>User: &quot;Text mom that I&#39;ll be late&quot;\u003C/p>\n\u003Cdiv class=\"md-code-block\">\u003Cdiv class=\"md-code-lang\">bash\u003C/div>\u003Cpre>\u003Ccode class=\"hljs language-bash\">\u003Cspan class=\"hljs-comment\"># 1. Find mom&#x27;s chat\u003C/span>\nimsg chats --\u003Cspan class=\"hljs-built_in\">limit\u003C/span> 20 --json | jq \u003Cspan class=\"hljs-string\">&#x27;.[] | select(.displayName | contains(&quot;Mom&quot;))&#x27;\u003C/span>\n\n\u003Cspan class=\"hljs-comment\"># 2. Confirm with user\u003C/span>\n\u003Cspan class=\"hljs-comment\"># &quot;Found Mom at +1555123456. Send &#x27;I&#x27;ll be late&#x27; via iMessage?&quot;\u003C/span>\n\n\u003Cspan class=\"hljs-comment\"># 3. Send after confirmation\u003C/span>\nimsg send --to \u003Cspan class=\"hljs-string\">&quot;+1555123456&quot;\u003C/span> --text \u003Cspan class=\"hljs-string\">&quot;I&#x27;ll be late&quot;\u003C/span>\u003C/code>\u003C/pre>\u003C/div>"]