vault/Operations/Claude/skills/operations/email/SKILL.md
Interactive inbox triage and email management - get to inbox zero efficiently
npx skillsauth add eddowding/cortex emailInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Interactive email triage, drafting, and inbox management using Gmail MCP.
Get {USER_NAME} to inbox zero efficiently: categorize, batch-process, draft replies, create tasks, and clean up newsletters. Preserve relationships and surface what matters.
Ask the user which mode (or infer from arguments):
| Mode | Trigger | Scope |
|------|---------|-------|
| A) Quick Scan (default) | /email | Last 24h inbox only |
| B) Full Triage | /email full | Entire inbox |
| C) Category Focus | /email respond | One category (RESPOND, TASK, etc.) |
| D) Search & Process | /email search <query> | Matching emails |
| E) Newsletter Cleanup | /email newsletters | Bulk newsletter management |
Read: Cockpit/Chief-of-Staff.md → active ventures, priorities, VIP contacts
Read: Cockpit/memory/topics/Contacts.md → relationship context for drafting
Read: Cockpit/memory/topics/Email-Patterns.md → learned sender mappings
Use Gmail MCP for all reads:
gmail__search_emails → scan inbox based on mode
gmail__list_emails → get inbox listing
For Quick Scan: query: "is:inbox newer_than:1d"
For Full Triage: query: "is:inbox"
For Category Focus: filter by learned mappings
For Search: use query from arguments
Show user a concise breakdown:
INBOX: 47 emails
RESPOND (12) - Direct questions/requests needing reply
WAITING (3) - Sent by user, no reply yet (last 7 days)
TASK (8) - Action items, no reply needed
FYI (9) - Informational, archive after scan
NEWSLETTER (15) - Marketing, digests, subscriptions
VIP flagged: 4 (marked with *)
Start with RESPOND? [Y/n]
Process in priority order: RESPOND > WAITING > TASK > FYI > NEWSLETTER
Present 5-10 emails at a time per category.
Before presenting RESPOND emails: Read each email via gmail__read_email to generate a proper summary. Don't just show the snippet - user needs enough context to decide without opening each one.
For each RESPOND email show:
[1] * Sarah Chen <[email protected]> ← * = VIP
"Q1 deliverables timeline"
ASKS: Whether Sprint 1 can start 3 Feb, wants confirmation on scope
CONTEXT: Follow-up from Dec meeting, 3rd email in thread
NEEDS: Decision on timeline + confirmation reply
[D]raft [T]ask [F]YI [W]aiting [S]pam [K]ip
Summary fields:
For non-RESPOND categories (FYI, NEWSLETTER, TASK), a one-line summary is enough - don't waste time reading every newsletter body.
VIP rules:
Based on user's choice:
| Action | What Happens |
|--------|-------------|
| [D]raft | Read full thread via gmail__read_email, draft reply, present for approval |
| [T]ask | Create TickTick task tagged #email with email context |
| [F]YI | Archive (remove INBOX label via gmail__modify_email) |
| [W]aiting | Note in WAITING tracker, suggest follow-up date |
| [S]pam | Report spam + archive |
| [K]ip | Skip, leave in inbox |
After processing new emails, scan for stalled threads:
gmail__search_emails → query: "from:me newer_than:7d"
Cross-reference with inbox replies. Present stalled threads:
WAITING (no reply in 7+ days):
[1] To: James Wright
Subject: Invoice follow-up
Sent: 3 Feb → 5 days ago
Suggest: Gentle nudge?
[D]raft follow-up [W]ait longer [C]lose
When drafting a reply:
gmail__read_email (get thread context)Contacts.md for relationship notes on this personTO: [email protected]
SUBJECT: Re: Q1 deliverables timeline
---
Hi Sarah,
Great to hear from you - hope the new year's treating you well.
[draft body...]
Speak soon,
{USER_NAME}
---
[S]end [E]dit [G]mail draft [C]ancel
On approval:
gmail__send_email (with threadId + inReplyTo for threading)gmail__draft_email (saves to Gmail drafts)Present grouped by sender:
NEWSLETTER CLEANUP:
[1] Substack Digest (47 emails)
[D]elete all + unsubscribe [K]eep [F]ilter (auto-archive future)
[2] TechCrunch Daily (23 emails)
[D]elete all + unsubscribe [K]eep [F]ilter (auto-archive future)
On Delete + Unsubscribe:
gmail__batch_delete_emails with message IDsOn Filter:
gmail__create_filter with sender criteria → skip inbox, apply labelFor TASK category emails, create TickTick tasks:
ticktick__ticktick_create_task:
title: "[Email] {action from email}"
content: "From: {sender}\nSubject: {subject}\nAction: {extracted action}"
dueDate: {suggested based on urgency}
priority: {0-5 based on VIP/urgency}
Tag with #email so it's traceable.
After processing:
SESSION COMPLETE
Processed: 47 emails
Replied: 5 (3 sent, 2 saved as drafts)
Archived: 18
Tasks created: 4
Newsletters cleaned: 32 emails deleted, 3 filters created
Skipped: 8
Remaining in inbox: 8
Suggestions:
- Create filter for [sender] (5+ archived emails)
- Follow up with [person] by [date]
- [person] hasn't replied in 10 days - consider nudge
Inbox count: 47 → 8
After each session, update:
Cockpit/memory/topics/Email-Patterns.md
→ New sender-to-category mappings user confirmed
→ Senders user always archives (future auto-categorize)
→ Senders user always responds to (VIP candidates)
Cockpit/memory/topics/Contacts.md
→ New contacts encountered
→ Updated last-interaction dates
→ Relationship notes from email context
| Tool | Use For |
|------|---------|
| gmail__search_emails | Inbox scan, query-based search |
| gmail__list_emails | Date-filtered listing |
| gmail__read_email | Full email + thread for drafting; also get RFC 2822 Message-ID header before replying |
| gmail__send_email | Send approved replies |
| gmail__draft_email | Save draft to Gmail |
| gmail__modify_email | Archive, label, mark read |
| gmail__batch_modify_emails | Bulk archive/label |
| gmail__batch_delete_emails | Newsletter cleanup |
| gmail__create_filter | Auto-archive rules |
| gmail__get_or_create_label | Ensure labels exist |
send_email: to must be an array ["[email protected]"], not a stringmodify_email: uses messageId (not id) as parameter namesend_email threading: use gmail__read_email first to get RFC 2822 Message-ID for inReplyTo| Tool | Use For |
|------|---------|
| ticktick__ticktick_create_task | Action-item emails → tasks |
tools
Dispatch to the right problem-solving technique based on how you're stuck.
testing
Interactive brainstorming and advisory mode that helps think through questions, critique approaches, propose alternatives, and reach optimal decisions.
tools
Find one insight that eliminates multiple components - 'if this is true, we don't need X, Y, or Z'
testing
Test at extremes (1000x bigger/smaller) to expose fundamental truths hidden at normal scales.