Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add YunjueTech/Yunjue-Agent --skill apple-mailgit clone --depth 1 https://github.com/YunjueTech/Yunjue-AgentWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/yunjuetech/yunjue-agent/apple-mail)<a href="https://agentmods.dev/skills/yunjuetech/yunjue-agent/apple-mail"><img src="https://agentmods.dev/badge/skills/yunjuetech/yunjue-agent/apple-mail/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/yunjuetech/yunjue-agent/apple-mail"><img src="https://agentmods.dev/badge/skills/yunjuetech/yunjue-agent/apple-mail.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00033 | $0.01452 |
| Opus 5 | $0.00016 | $0.00726 |
| Sonnet 5 | $0.00007 | $0.00290 |
| Haiku 4.5 | $0.00003 | $0.00145 |
Grade A, and why
apple-mail scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 165 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Apple Mail
Interact with Mail.app via AppleScript and SQLite.
Commands
| Command | Usage |
|---|---|
| Refresh | mail-refresh [account] [wait_seconds] |
| List recent | mail-list [mailbox] [account] [limit] |
| Search | mail-search "query" [mailbox] [limit] |
| Fast search | mail-fast-search "query" [limit] |
| Read email | mail-read <message-id> [message-id...] |
| Delete | mail-delete <message-id> [message-id...] |
| Mark read | mail-mark-read <message-id> [message-id...] |
| Mark unread | mail-mark-unread <message-id> [message-id...] |
| Send | mail-send "[email protected]" "Subject" "Body" [from-account] [attachment] ¹ |
| Reply | mail-reply <message-id> "body" [reply-all] |
| List accounts | mail-accounts |
| List mailboxes | mail-mailboxes [account] |
Refreshing Mail
Force Mail.app to check for new messages:
mail-refresh # All accounts, wait up to 10s
mail-refresh Google # Specific account only
mail-refresh "" 5 # All accounts, max 5 seconds
mail-refresh Google 0 # Google account, no wait
Smart sync detection:
- Script monitors database message count
- Returns early when sync completes (no changes for 2s)
- Reports new message count:
Sync complete in 2s (+3 messages)
Notes:
- Mail.app must be running (script will error if not)
mail-listdoes NOT auto-refresh — callmail-refreshfirst if you need fresh data
Output Format
List/search returns: ID | ReadStatus | Date | Sender | Subject
●= unread, blank = read
Gmail Mailboxes
⚠️ Gmail special folders need [Gmail]/ prefix:
| Shows as | Use |
|---|---|
Spam |
[Gmail]/Spam |
Sent Mail |
[Gmail]/Sent Mail |
All Mail |
[Gmail]/All Mail |
Trash |
[Gmail]/Trash |
Custom labels work without prefix.
Fast Search (SQLite)
✨ Now safe even if Mail.app is running — copies database to temp file first.
mail-fast-search "query" [limit] # ~50ms vs minutes
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 165 lines · 33 tokens per session scan A 5e3be8c7b5a4
apple-mail is a skill published in the GitHub repository YunjueTech/Yunjue-Agent (533 stars, last pushed 6mo ago), licensed Apache-2.0. It adds 33 tokens to every session and 1,452 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
channel_message
Use this skill to proactively send a one-way message to a user/session/channel, usually only when the user explicitly asks to send to a channel/session or when proactive notification is needed. First query sessions with qwenpaw chats list, then push with qwenpaw channels send.
tmux
Remote-control tmux sessions for interactive CLIs by sending keystrokes, capturing pane output, and managing terminal multiplexer windows. Enables parallel coding-agent orchestration, background process management, and REPL interaction via sockets. Use when the agent needs to launch, monitor, or coordinate…
things-mac
Manage Things 3 via the things CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database). Use when a user asks Otto to add a task to Things, list inbox/today/upcoming, search tasks, or inspect projects/areas/tags.
obsidian
Work with Obsidian vaults (plain Markdown notes) and automate via obsidian-cli. Use when the user asks about notes, vault management, PKM, knowledge base organization, wikilinks, or personal knowledge management in Obsidian.
computer-use
Read and drive native desktop applications through the accessibility layer — list on-screen apps, snapshot one window as a numbered element tree, then click / type / set a value / scroll / drag / run a named action, by element index or by screen coordinates. Use for work in a desktop app rather than a web page. Full…
meetings
Context for working with the Meetings app's data — where a meeting's notes, diagram, transcript-derived tasks, and calendar cache live, what the lifecycle states mean, and how the app's agents are driven. Load when the user asks about a meeting's notes or action items, or when writing/reading files under the meetings…