agentleFS
AtlasOmniaAtlasOmnia/hermes-custom-pack/skills/imessage/SKILL.md

imessage

Skill75 starsChanged 4 months agoMITView on GitHub

imessage — Send and receive iMessages/SMS via the imsg CLI on macOS.

  • Installs packages

We split this skill into the rules it gives an agent

3 rules. 1 is common, 0 are distinctive, and 2 are very specific to this project.

  • 1

    Common

    Most of the 24 edited versions we read keep these.

  • 0

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use imsg to read and send iMessage/SMS via macOS Messages.app.

    line 23
  2. Very specific:

    Prefer local Mac-backed Messages.app/imsg workflows for maximum privacy: content stays on the Mac and uses the user's own Messages account.

    line 50
  3. Common:

    Always confirm recipient and message content: before sending

    line 100

“Common” is measured: kept by at least 6 in 10 of the 24 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

iMessage

Use imsg to read and send iMessage/SMS via macOS Messages.app.

Prerequisites

  • macOS with Messages.app signed in
  • Install: brew install steipete/tap/imsg
  • Grant Full Disk Access for terminal (System Settings → Privacy → Full Disk Access)
  • Grant Automation permission for Messages.app when prompted

When to Use

  • User asks to send an iMessage or text message
  • Reading iMessage conversation history
  • Checking recent Messages.app chats
  • Sending to phone numbers or Apple IDs
  • Evaluating iMessage bridge/privacy options for Hermes; see before recommending Photon/Spectrum Cloud

When NOT to Use

  • Telegram/Discord/Slack/WhatsApp messages → use the appropriate gateway channel
  • Hermes iMessage gateway integration (live bidirectional channel) → that's the BlueBubbles platform adapter in the Hermes gateway. The imsg CLI here is for one-off scripting, not persistent gateway connections.
  • Group chat management (adding/removing members) → not supported
  • Bulk/mass messaging → always confirm with user first
  • Sensitive/private conversations over third-party iMessage cloud bridges unless retention, logging, employee-access, attachment-cache, and training-use guarantees are verified first

Privacy Notes

  • Prefer local Mac-backed Messages.app/imsg workflows for maximum privacy: content stays on the Mac and uses the user's own Messages account.
  • Photon/Spectrum iMessage Cloud is a portability bridge, not an end-to-end-private-from-Photon path. Treat it as a trusted third-party message processor unless Photon provides zero-retention/self-hosted guarantees.
  • For platform privacy details and due-diligence questions,

Quick Reference

List Chats

imsg chats --limit 10 --json

View History

# By chat ID
imsg history --chat-id 1 --limit 20 --json

# With attachments info
imsg history --chat-id 1 --limit 20 --attachments --json

Send Messages

# Text only
imsg send --to "+14155551212" --text "Hello!"

# With attachment
imsg send --to "+14155551212" --text "Check this out" --file /path/to/image.jpg

# Force iMessage or SMS
imsg send --to "+14155551212" --text "Hi" --service imessage
imsg send --to "+14155551212" --text "Hi" --service sms

Watch for New Messages

imsg watch --chat-id 1 --attachments

Service Options

  • --service imessage — Force iMessage (requires recipient has iMessage)
  • --service sms — Force SMS (green bubble)
  • --service auto — Let Messages.app decide (default)

Rules

  1. Always confirm recipient and message content before sending
  2. Never send to unknown numbers without explicit user approval
  3. Verify file paths exist before attaching
  4. Don't spam — rate-limit yourself

Example Workflow

User: "Text mom that I'll be late"

# 1. Find mom's chat
imsg chats --limit 20 --json | jq '.[] | select(.displayName | contains("Mom"))'

# 2. Confirm with user: "Found Mom at +1555123456. Send 'I'll be late' via iMessage?"

# 3. Send after confirmation
imsg send --to "+1555123456" --text "I'll be late"

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.