name: inbox-summary description: Smart email triage from Gmail and iCloud. Highlights what needs attention based on priority senders and mission context. Trigger phrases include "email" or "mail" - use when "check my email", "triage my email", "what emails need attention", "email summary", "mail inbox". allowed-tools: Bash, Read, Write, Edit
Inbox Triage
What This Does
Fetches the last 24 hours of email from Gmail and iCloud, then intelligently triages into:
- Needs Attention - Priority senders, mission-relevant, questions needing replies
- Worth Knowing - Receipts, notifications, first-time senders (flagged as unusual)
- Filtered - Newsletters, promos, automated (count only)
The skill learns your priority senders over time as you mark them.
Instructions
Step 1: Fetch and Triage Emails
Run the triage script:
python3 skills/inbox-summary/scripts/fetch_inbox_summary.py
Filter by sender domain:
python3 skills/inbox-summary/scripts/fetch_inbox_summary.py --sender blackbelt.com
The --sender flag filters results to only show emails from that domain (e.g., --sender stripe.com for payment notifications). Still applies the 24-hour window.
This returns JSON with:
-
triage.attention- Emails needing attention with reasons -
triage.knowing- Worth knowing, grouped -
triage.filtered- Noise (stats only) -
priority_domains- Currently marked priority senders
Step 2: Present the Triage Summary
Format the output like this:
## Inbox Triage (Last 24 Hours)
**Gmail:** [X] emails | **iCloud:** [Y] emails
### Needs Attention
- **[sender]** - [subject]
[reason: Priority sender / Mission-context: BlackBelt / Looks like it needs a reply]
- **[sender]** - [subject]
[reason]
### Worth Knowing
- **[domain]** ([count]) - [brief description: Receipts / Calendar updates]
- **[sender]** - [subject]
*Unusual: First time seeing this sender*
### Filtered ([count] emails)
- Newsletters: [X]
- Promotions: [Y]
- Automated: [Z]
---
*[X] priority senders configured. Say "mark [domain] as priority" to add more.*
Step 3: Handle Priority Domain Requests
When the user says "mark [domain] as priority":
- Read the config file:
cat skills/inbox-summary/config/priority-domains.json
-
Add the domain to the
domainsarray andaddedobject with today's date -
Write back using Edit tool
-
Confirm: "Added [domain] to priority senders. Future emails will appear in Needs Attention."
Step 4: Offer Next Steps
After presenting the summary:
"Want to mark any senders as priority? Or dive into a specific email?"
Classification Logic
| Signal | Classification |
|---|---|
| Domain in priority-domains.json | Needs Attention |
| Mentions BlackBelt, AI Powerhouse, Little Blue Report | Needs Attention + mission flag |
| Subject has ?, "can you", "please review", "urgent" | Needs Attention |
| First-time sender | Worth Knowing + unusual flag |
| Receipt, calendar, shipping | Worth Knowing (grouped) |
| Newsletter, promo, marketing patterns | Filtered |
Mission Context Keywords
The skill watches for these (from Ed's mission-context):
- BlackBelt, Taki Moore
- AI Amplified, AI Powerhouse, Coaching Powerhouse
- Little Blue Report, Substack
- 30 Day Challenge
When detected, emails are flagged with the matching context.
Guidelines
- Read-only - Never send, delete, or modify emails
- Privacy first - Show subjects and snippets, not full content
- Learn over time - Priority domains persist between sessions
- Flag the unusual - First-time senders get highlighted
- Summarize noise - Don't list every newsletter, just count them
Error Handling
If the script fails:
- Check credential issues (token expired, wrong password)
- For Gmail OAuth: Browser will open to re-authenticate
- For iCloud: Verify ICLOUD_APP_PASSWORD is set in environment
File Locations
| File | Purpose |
|---|---|
scripts/fetch_inbox_summary.py |
Main fetch + triage script |
scripts/classify_emails.py |
Classification logic |
config/priority-domains.json |
Learned priority senders |
tests/test_classification.py |
Automated tests |
Examples
User: "check my email"
Response:
## Inbox Triage (Last 24 Hours)
**Gmail:** 18 emails | **iCloud:** 4 emails
### Needs Attention
- **taki@blackbelt.com** - Quick question about the workshop
Mission-context: BlackBelt
- **prospect@business.com** - Can you send me the pricing?
Looks like it needs a reply
### Worth Knowing
- **stripe.com** (3) - Payment receipts
- **google.com** (2) - Calendar notifications
- **unknown@newstartup.io** - Partnership inquiry
*Unusual: First time seeing this sender*
### Filtered (13 emails)
- Newsletters: 8
- Promotions: 3
- Automated: 2
---
*2 priority senders configured. Say "mark [domain] as priority" to add more.*
User: "mark newstartup.io as priority"
Response:
Added newstartup.io to priority senders. Future emails from this domain will appear in Needs Attention.
Current priority senders: blackbelt.com, newstartup.io
User: "show me emails from blackbelt.com"
Response:
## Emails from blackbelt.com (Last 24 Hours)
**Gmail:** 3 emails | **iCloud:** 0 emails
### All Emails
- **taki@blackbelt.com** - Quick question about the workshop
Mission-context: BlackBelt
- **support@blackbelt.com** - Your invoice for January
- **team@blackbelt.com** - Weekly team update
chat Comments (0)
Sign in to join the discussion and leave a comment.
Skill Details
Related Skills
Build your own?
Join 12,000+ developers contributing to the Claude ecosystem.
No comments yet. Be the first to share your thoughts!