Reading and managing Apple Mail via JXA. Use when working with email, archiving messages, or processing the inbox.
$ npx -y skills add bendrucker/claude --skill mail --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/mail
Context preview
The summary Claude sees to decide when to auto-load this skill.
Reading and managing Apple Mail via JXA. Use when working with email, archiving messages, or processing the inbox.
SKILL.md
mail.SKILL.mdname: mail description: Reading and managing Apple Mail via JXA. Use when working with email, archiving messages, or processing the inbox.
Apple Mail automation via JXA (`osascript -l JavaScript`).
Archiving
Mail.app `delete()` moves messages to Trash, not Archive. There is no `archiveMailbox` property — find the archive mailbox by name per account.
See [archiving.md](archiving.md) for account detection, mailbox lookup, and batch archive patterns.
Reading
var app = Application("Mail");
var inbox = app.inbox();
var messages = inbox.messages();Key properties: `subject()`, `sender()`, `dateReceived()`, `content()`, `mailbox().account()`.
Notes
- JXA arrays from Mail may lack `.map()/.filter()` — use `Array.from()` or for-loops
- `.whose()` selectors fail on child mailbox arrays — use for-loops
- Launch Mail first if not running: `open -g -a "Mail"`
My personal plugin marketplace for Claude Code, Anthropic's AI coding assistant.
Repo: bendrucker/claude
Other skills on bendrucker-claude.
- /agent-ideas
Harvest agent-tooling ideas from prominent developers.
Open skill - /cleye
Type-safe CLI argument parsing with cleye, the standard parser for this repo's Bun scripts. Use when writing or editing any script that takes arguments (flags, positional parameters, subcommands, --help) instead of reading existing scripts for the pattern.
Open skill - /coverage
Measure Bun test coverage and close gaps on a specific file. Use when adding or editing tests, when asked about coverage, or when the PostToolUse coverage hook reports uncovered lines.
Open skill - /activity
Report real device usage from ActivityWatch. Covers per-app time, window titles, and active vs idle spans. Use when asked "what apps did I use", "how long was I in X", "what did I work on today", "how much was I active vs idle", or to mine usage patterns for automation.
Open skill - /history
Report shell history from atuin's local capture. Covers what commands ran, when, where, and how they exited. Use when asked "what commands did I run", "what was I working on in the terminal", "have I ever run X", "how do I usually invoke X", or about recent shell activity,
Open skill - /bun
Bun runtime patterns. Use when running bun commands, working with package.json/bun.lock, writing TypeScript scripts under Bun, or developing Claude Code plugins.
Open skill

