From work
Triage and classify emails across ALL connected email accounts using GTD principles. Classifies into actionable vs non-actionable, auto-archives noise via Gmail API. Trigger on: "process my email", "triage inbox", "check my emails", "email summary", "inbox zero", "GTD", "getting things done", "what needs my attention", "email review", or any question about classifying incoming communications.
How this skill is triggered — by the user, by Claude, or both
Slash command
/work:gtd-email-triageThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Triage unread inbox emails across **all connected accounts**. Classify using deterministic rules first, Haiku sub-agents for ambiguous emails only, then auto-archive noise via Gmail API.
Triage unread inbox emails across all connected accounts. Classify using deterministic rules first, Haiku sub-agents for ambiguous emails only, then auto-archive noise via Gmail API.
TOKEN EFFICIENCY — Tool Selection:
- Use
mcp__google-workspace__manage_email(operation: "search")as the PRIMARY fetch tool — returns clean metadata (sender, subject, date, snippet)- Use
manage_email(operation: "triage")only for quick counts — it caps at ~20 results, not suitable for full triage- Reserve
manage_email(operation: "read")for Phase 2 body reads only- Use
mcp__google-workspace__queue_operationsto batch archive operations (up to 10 per call)
Load these from plugins/work/skills/gtd-email-triage/ before processing:
sender-rules.json — deterministic sender-based classification (by exact sender, domain, or display-name substring)subject-patterns.json — regex patterns for auto-keep (invoices, confirmations) and auto-skip (spam markers, tool noise)Load rule files — read sender-rules.json and subject-patterns.json
Discover accounts — call mcp__google-workspace__manage_accounts(operation: "list") to get all connected accounts.
Fetch ALL emails per account (mandatory pagination) — for each account:
mcp__google-workspace__manage_email(operation: "search", email: "<account>", query: "in:inbox is:unread", maxResults: 50)Mar 28)query: "in:inbox is:unread before:YYYY/MM/DD" using that dateReport totals to the user. Warn if any count is suspiciously round (100, 200).
Classify each email by applying rules in this priority order:
Priority 1 — Subject KEEP patterns (from subject-patterns.json keep_patterns). These override ALL other rules. Invoices and booking confirmations are always kept regardless of sender.
Priority 2 — Subject OR Snippet SKIP patterns (from subject-patterns.json skip_patterns). Apply each regex against both the subject AND the snippet returned by the search results. Spam markers like iOJDH1 are often embedded in the body (not the subject) — a snippet match is sufficient to SKIP. Ashby job applications, Productive time reminders. If a pattern has sender_contains, both must match.
Priority 3 — Sender exact match (sender-rules.json → by_sender)
Priority 4 — Sender domain match (sender-rules.json → by_domain)
Priority 5 — Sender name contains (sender-rules.json → by_name_contains). Case-insensitive substring match on the sender display name.
Priority 6 — General heuristics (no rule matched):
sender-rules.json immediately.sender-rules.jsonPriority 7 — AMBIGUOUS — needs body read. Mark for Phase 2.
If zero ambiguous — skip Phase 2, go directly to report + Phase 3.
/tmp/claude-email-triage/ (wipe if exists)model: "haiku". Each sub-agent gets:
plugins/work/skills/gtd-email-triage/sub-agent-prompt.mdmcp__google-workspace__manage_email(operation: "read", email: "<account>", messageId: "<id>") to read each email body/tmp/claude-email-triage/batch-N.json/tmp/claude-email-triage/Skip if no emails were classified as ARCHIVE, ARCHIVE_UNSUB, or SKIP.
mcp__google-workspace__queue_operations to batch up to 10 modify operations per call:
mcp__google-workspace__queue_operations(operations: [
{ tool: "manage_email", args: { operation: "modify", email: "<account>", messageId: "<id1>", removeLabelIds: "INBOX,UNREAD" } },
{ tool: "manage_email", args: { operation: "modify", email: "<account>", messageId: "<id2>", removeLabelIds: "INBOX,UNREAD" } },
...up to 10 per call
], onError: "continue")
If more than 10 emails need archiving for an account, make multiple queue_operations calls.Report archived counts per account.
Write the triage report to 100 Periodics/Weekly/[current week folder]/[date]-email-triage.md:
## Inbox Triage — [date]
### Top Priorities (≤5)
1. [sender] — [subject] — [why urgent]
### [account] — Actionable (X)
#### Urgent
- [sender] — [subject] — [why]
#### Deferred
- [sender] — [subject] — [what needs doing]
### [account] — Relevant (X)
- [sender] — [subject]
### [account] — Discovery (X)
- [sender] — [subject] — [why interesting]
### Archived (X emails)
Auto-archived via API: [account-1] (Y), [account-2] (Z)
### Unsubscribed
- [sender] — unsubscribed and archived
### Stats
Total: N | Cached: X% | Body-read: Y | Haiku sub-agents: Z | Errors: W
For actionable emails that require follow-up, apply the GTD 2-minute rule:
For actions requiring research, document review, writing a proposal, or multi-step work, create a dedicated task in the personal Tasks database (data_source_id: 9a01d2e3-d4bc-427a-ba05-29a4c0db5032):
BacklogHigh for URGENT, Medium for DEFERREDLow / Operational for approvals/reviews; Average / Professional for decisions/analysisFor quick approvals, brief replies, minor decisions, or awareness items (e.g., "approve time entries", "submit Ashby feedback", "check hiring pipeline"), add to the existing "Daily Review — [YYYY-MM-DD]" task:
notion-update-page (update_content)Status: Backlog, Priority: Medium, Task type: Low / Operational- [Email / Source] — [one-line summary]Default to Daily Review for most email-triggered action items — standalone tasks are only for genuinely complex, multi-step work.
After creating any Notion task (standalone or Daily Review entry), always archive the source email immediately — remove INBOX,UNREAD labels via manage_email(operation: "modify").
Executive assistant. Crisp, organized, surface only what matters.
npx claudepluginhub rachnog/alex-honchar-claude-for-life --plugin workTriages Gmail inbox using GTD methodology: classifies emails, computes urgency, applies labels, drafts replies, creates newsletter digests, and suggests bulk unsubscribes.
Scans Gmail inbox for recent emails using time-based queries, classifies into three priority tiers, and drafts replies for urgent Tier 1 items.
Triages Gmail inbox by classifying emails using Eisenhower matrix for importance/urgency, determines if replies needed, and drafts responses in user's voice. Useful for inbox zero and email prioritization.