Save email drafts as deterministic plain-text files, validate them, and open Apple Mail compose windows one at a time for manual review and sending on macOS. Use when the task is drafting outreach emails, follow-ups, or batch queues without ever auto-sending.
Use this skill to keep email work reproducible and safe. Draft emails into .mail.txt files first, then open them in Apple Mail one at a time so the user can review and send each message manually.
.mail.txt file per message in a draft directory.scripts/validate_email_draft.py.scripts/open_mail_drafts.py with a file path or draft directory. This opens a small queue window that controls Apple Mail drafts while the user sends messages manually.Default to a draft directory named email-drafts/ under the current workspace unless the user specifies another location.
Use sortable ASCII filenames:
YYYY-MM-DD-recipient-slug-topic.mail.txt
Examples:
2026-04-02-carolina-tropini-customer-interview.mail.txt
2026-04-02-megan-levings-follow-up.mail.txt
Create one file per recipient unless the user explicitly wants a shared multi-recipient email.
Use the exact file structure documented in format.md. Keep the header block compact and place the body after the --- separator.
Validate every draft file before opening Mail. If you copied the bundled script into the task workspace or you are running from the skill directory, use:
python3 scripts/validate_email_draft.py path/to/draft.mail.txt
If validation fails, fix the file rather than guessing during send.
Open drafts only after validation. By default, the sender opens a small queue window with:
Open current in Mail for exactly one draft at a timeMark done and open next after the user has reviewed or sent the current messageSkip currentFinish and write READMEpython3 scripts/open_mail_drafts.py path/to/draft.mail.txt
python3 scripts/open_mail_drafts.py path/to/email-drafts
Behavior:
To, Cc, Bcc, Subject, and bodyREADME.sent-emails.md beside the draft files by defaultDo not auto-send. The user sends each message manually in Mail. The README log records what was opened, skipped, or marked done; it cannot prove that a user clicked Send inside Mail.
The first GUI choice is Python tkinter. If unavailable, the script falls back to macOS AppleScript dialogs so it still works without extra Python GUI dependencies. For terminal-only operation, pass --terminal. Opening Mail requires GUI access.
The draft format is intentionally strict so it is easy to parse and review.
To, SubjectCc, Bcc, Attachments--- on its own line to start the bodyRead format.md when writing or fixing draft files.