Prismer execution contract
This is the uniquely named prismer-imessage skill, adapted from Hermes.
Use the actual tools exposed by the executing host; examples using terminal,
process, delegate_task, vision_analyze or browser_* are not tool registrations.
Missing dependencies do not hide this skill. Report command startup, version,
account/permissions and task-specific live verification separately. Use task-owned
artifact paths and existing user authorization; do not change shared accounts,
Runtime/provider configuration, global security settings or unrelated work.
See NOTICE.md and LICENSE for resource provenance. Runtime availability and
upstream-entry suppression are owned by the integration layer.
iMessage
Use imsg to read and send iMessage/SMS via macOS Messages.app.
Prerequisites
Run python3 "$SKILL_ROOT/scripts/readiness.py" imessage from this installed
skill's resolved directory. Help checks flags only; account, Full Disk Access,
Automation, SMS forwarding and delivery require separate authorized live checks.
- 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
When NOT to Use
- Telegram/Discord/Slack/WhatsApp messages → use the appropriate gateway channel
- Group chat management (adding/removing members) → not supported
- Bulk/mass messaging → always confirm with user first
Quick Reference
List Chats
bashimsg chats --limit 10 --json
View History
bash# 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
bash# 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
bashimsg watch --chat-id 1 --attachments
Watch only for the user-authorized chat and duration; terminate the process at that deadline. Do not capture a continuous stream as an incidental diagnostic.
Service Options
--service imessage— Force iMessage (requires recipient has iMessage)--service sms— Force SMS (green bubble)--service auto— Let Messages.app decide (default)
Rules
- Use an explicitly authorized exact recipient/content; clarify ambiguous identities only
- Never send to unknown numbers without explicit user approval
- Verify both file existence and authorization to send that specific content
- Don't spam — rate-limit yourself
Example Workflow
User: "Text mom that I'll be late"
bash# 1. Read candidates, then resolve the exact chat handle or phone number. imsg chats --limit 20 --json # 2. A display name is not unique. Clarify only if the authorized recipient is ambiguous. # 3. Send after confirmation imsg send --to "+1555123456" --text "I'll be late"
After an uncertain send, read back the target chat before retrying; do not create duplicate messages. A local command exit is not proof of remote delivery.


