From apple-mail
Interact with Apple Mail on macOS. Use for reading, sending, searching, and managing emails.
How this skill is triggered — by the user, by Claude, or both
Slash command
/apple-mail:apple-mailThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill provides commands to interact with Apple Mail on macOS via AppleScript.
reference/applescript-patterns.mdscripts/archive-email.shscripts/create-draft.shscripts/create-reply-draft.shscripts/delete-email.shscripts/get-email-by-id.shscripts/get-emails.shscripts/get-unread-count.shscripts/list-accounts.shscripts/list-mailboxes.shscripts/mark-read.shscripts/mark-unread.shscripts/search-emails.shscripts/send-draft.shscripts/send-email.shThis skill provides commands to interact with Apple Mail on macOS via AppleScript.
All scripts are in the ../../scripts/ directory (relative to this file). Execute them via bash from the plugin root.
| Script | Purpose | Arguments |
|---|---|---|
list-accounts.sh | List all email accounts | none |
list-mailboxes.sh | List mailboxes/folders | [account] (optional) |
get-unread-count.sh | Get unread email count | [account] [mailbox] (optional) |
| Script | Purpose | Arguments |
|---|---|---|
get-emails.sh | Get recent emails | [account] [mailbox] [limit] [include_content] [unread_only] |
get-email-by-id.sh | Get specific email by ID | <id> [account] [mailbox] [include_content] |
search-emails.sh | Search emails | <query> [account] [mailbox] [limit] |
| Script | Purpose | Arguments |
|---|---|---|
send-email.sh | Send an email | <to> <subject> <body> [cc] [bcc] [from] |
create-draft.sh | Create a draft email | <subject> <body> [to] [cc] [bcc] [from] |
create-reply-draft.sh | Create reply to email | <message_id> <body> [reply_all] [account] [mailbox] |
send-draft.sh | Send front-most draft | none |
| Script | Purpose | Arguments |
|---|---|---|
archive-email.sh | Archive an email | <message_id> [account] [mailbox] [archive_mailbox] |
delete-email.sh | Delete an email | <message_id> [account] [mailbox] |
mark-read.sh | Mark email as read | <message_id> [account] [mailbox] |
mark-unread.sh | Mark email as unread | <message_id> [account] [mailbox] |
Scripts use delimiters for structured output:
<<>> separates fields within a record||| separates multiple recordsERROR: prefix indicates an error messageid<<>>subject<<>>sender<<>>to<<>>cc<<>>bcc<<>>dateSent<<>>isRead<<>>content|||
./scripts/list-accounts.sh
./scripts/get-emails.sh "" "INBOX" 10 false false
./scripts/get-emails.sh "" "INBOX" 10 true true
./scripts/get-email-by-id.sh 12345 "iCloud" "INBOX" true
./scripts/search-emails.sh "meeting notes" "" "" 20
./scripts/send-email.sh "[email protected]" "Subject" "Body text"
./scripts/send-email.sh "[email protected]" "Subject" "Body" "[email protected]" "[email protected]"
./scripts/create-draft.sh "Draft Subject" "Draft body" "[email protected]"
./scripts/create-reply-draft.sh 12345 "Thanks for your message!" false "iCloud" "INBOX"
./scripts/send-draft.sh
./scripts/archive-email.sh 12345 "iCloud" "INBOX"
./scripts/mark-read.sh 12345 "iCloud" "INBOX"
./scripts/mark-unread.sh 12345 "iCloud" "INBOX"
When receiving email records, parse them like this:
||| to get individual records<<>> to get fieldsExample parsing in bash:
IFS='|||' read -ra emails <<< "$output"
for email in "${emails[@]}"; do
IFS='<<>>' read -ra fields <<< "$email"
id="${fields[0]}"
subject="${fields[1]}"
sender="${fields[2]}"
# ... etc
done
For advanced AppleScript patterns and customization, see ./reference/applescript-patterns.md.
npx claudepluginhub rbouschery/marketplace --plugin apple-mailManages Apple Mail on macOS: read, search, send, reply, forward, flag, delete, and organize emails via natural language.
Automates Apple Mail via JXA with AppleScript dictionary discovery. Use when asked to "automate email", "send mail via script", "JXA Mail automation", or "filter email messages". Covers accounts, mailboxes, batch message filtering, composition, attachments, and UI fallback.