inbox-commander
Skill17 starsChanged 9 months agoMITView on GitHub
Email triage and organization system for Gmail. Use when user asks to "triage my inbox", "check my email", "process emails", "what needs my attention", "inbox zero", or any request to organize, classify, or act on emails. Provides GTD-style processing with autonomous actions for clear-cut items and surfaced decisions for ambiguous ones. Creates newsletter digests, drafts replies, and suggests bulk unsubscribes.
2 other projects use a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- GarphenGate/moltline-osstheir own version, first seen Sep 19, 2026
- dazuck/claude-code-skillsedited, first seen Jan 23, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 1
- dazuck/claude-code-skills★ 130% same
Wrote their own version · 1
- GarphenGate/moltline-oss★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository20 other files it gives its agents.
- adversarial-verifierSkill
- candidate-screeningSkill
- coachSkill
- contract-reviewSkill
- create-briefingSkill
- credits-inventorySkill
- handoffSkill
- hiring-helperSkill
- interviewSkill
- investor-auditsSkill
- monthly-financialsSkill
- personalize-skillsSkill
- prompt-improverSkill
- ralph-loop-creatorSkill
- reality-checkSkill
- sensitive-content-scannerSkill
- show-and-tellSkill
- skill-customizerSkill
- technical-orientationSkill
- writeupSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
35 rules. About 0 are common, 33 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈33
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 17
If available and authenticated, use gscli for READ operations:
- Distinctive: line 26
Fallback: If gscli unavailable, use Gmail MCP for everything.
- Distinctive: line 32
Read + unarchived = user saw it but didn't act (still needs triage)
- Distinctive: line 74
Don't re-classify unless label seems wrong
- Distinctive: line 79
After 3+ similar classifications → suggest Gmail filter
- Very specific: line 83
Create labels if missing. Use Gmail MCP get_or_create_label.
- Distinctive: line 118
Follow-up on something already escalated
- Distinctive: line 128
No deadline, low stakes
- Distinctive: line 147
Escalate to Tier 3: if contains: "failed", "error", "action required", "urgent", "security alert"
- Distinctive: line 174
Keep it scannable. Group by computed urgency:
- Distinctive: line 215
When user requests snooze:
- Distinctive: line 217
Remove from inbox (archive)
- Distinctive: line 221
If today >= snooze date → remove snooze label, move back to inbox
- Distinctive: line 226
When user approves a draft:
- Distinctive: line 227
Create Gmail draft via MCP (appears in Gmail Drafts folder)
- Distinctive: line 241
When an email is detected as an invoice or bill that requires manual payment action.
- Distinctive: line 270
✅ LOOKS VALID: - All conditions met:
- Distinctive: line 274
No red flags present
- Distinctive: line 293
💳 STANDARD (Brex): - Default for most vendors:
- Distinctive: line 295
If valid → forward to bills@brex.com
- Distinctive: line 300
If valid → present "Pay via crypto wallet" (NOT forwarded to Brex)
- Distinctive: line 347
When user approves a valid invoice for standard payment:
- Distinctive: line 360
Never auto-forward: - Always require explicit approval per invoice.
- Distinctive: line 364
When user approves a crypto invoice:
- Very specific: line 369
After confirmation, apply label: Bills/Paid
- Distinctive: line 376
Use history to establish "normal" patterns per vendor
- Distinctive: line 421
When user overrides AI classification:
- Distinctive: line 424
If pattern becomes clear, suggest filter
- Distinctive: line 444
If email references a doc, check if it exists in Drive
- Distinctive: line 446
All optional. Graceful fail.
- Distinctive: line 450
NEVER auto-send emails. Always save as draft.
- Distinctive: line 454
Ask before any destructive action (delete, unsubscribe)
- Distinctive: line 455
When in doubt, surface it (Tier 3) rather than auto-process
- Distinctive: line 459
NEVER auto-forward invoices to bills@brex.com - always require explicit approval
- Distinctive: line 460
NEVER auto-pay crypto invoices - always surface for manual payment
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Inbox Commander
Email triage using GTD: Do it now, Decide, Defer, or Dump.
Tool Selection
Check for gscli first (faster, includes calendar/drive context):
which gscli && gscli auth statusIf available and authenticated, use gscli for READ operations:
gscli gmail list- List messagesgscli gmail read <id>- Read messagegscli calendar list- Get upcoming meetingsgscli drive search- Find related docs
Use Gmail MCP for WRITE operations (gscli is read-only):
- Archive, label, snooze, create drafts, create filters
Fallback: If gscli unavailable, use Gmail MCP for everything.
Triage Scope
Process ALL unarchived mail (Inbox), regardless of read state:
- Unread + unarchived = definitely needs attention
- Read + unarchived = user saw it but didn't act (still needs triage)
- Archived = processed/done → ignore
- Snoozed (label:
snooze/YYYY-MM-DD) → ignore until date passes
Execution Flow
1. Check tool availability (gscli vs MCP-only)
2. Load references:
- learned-rules.md (corrections take precedence)
- known-senders-private.md (if exists) or known-senders.md
3. Check snoozed items → unsnooze if date passed
4. Fetch emails (Inbox, regardless of read state)
5. Fetch context: calendar, Linear (graceful fail)
6. For each email:
a. Already labeled by Gmail filter? → Validate, compute urgency
b. Unlabeled? → Classify, apply label, track pattern
c. Invoice/Bill detected? → Validate, flag validity, surface for approval
7. Execute Tier 1 actions (no approval needed)
8. Aggregate Tier 2 → create newsletter digest
9. Process invoices → validate, present for approval, forward if approved
10. Present triage summary grouped by computed urgency
11. Await decisions → execute → log corrections
12. Suggest new Gmail filters if patterns emergedLabel System
Philosophy
Labels = stable categorization (stored on email) Urgency = dynamic computation (calculated fresh each run)
Urgency changes constantly (Monday's "this week" becomes Friday's "today"). Don't label urgency — compute it based on context.
Hybrid Approach
Gmail filters handle deterministic patterns instantly at delivery. AI handles unlabeled items and suggests new filters when patterns emerge.
If email is already labeled (by Gmail filter):
- Validate the label is correct
- Focus on computing urgency and action state
- Don't re-classify unless label seems wrong
If email is unlabeled:
- Classify and apply appropriate label
- Track the pattern (sender, subject)
- After 3+ similar classifications → suggest Gmail filter
Label Structure
Create labels if missing. Use Gmail MCP get_or_create_label.
Content Bundles (for Simplify Gmail visual grouping):
Newsletters- digested content, auto-archive afterReceipts- payment confirmations, auto-archiveBills- invoices awaiting payment (never auto-archive)Bills/Queued- invoices forwarded to Brex for paymentBills/Crypto-Pending- crypto invoices awaiting manual paymentBills/Paid- paid invoices (audit trail)Notifications- tool notifications, auto-archive (unless error)Transactional- shipping, confirmations
Entity Types (for rules + search):
Team- internal team domainsInvestors- known investor contactsLegal- law firms, legal mattersVendors- payroll, finance, contractors
Action State (workflow tracking):
ic/needs-response- user owes a replyic/waiting-on- ball in their courtic/scheduled- has follow-up dateic/processed- audit trail (apply before archiving)
Snooze (time-based deferral):
snooze/YYYY-MM-DD- hide until this date
Urgency Tiers (Computed, Not Labeled)
Compute urgency fresh each run based on context:
🔴 TODAY - Surface immediately
- Explicit deadline today or overdue
- Error/failure notifications
- Sender you're meeting today (check calendar)
- Follow-up on something already escalated
- Team + needs-response older than 24h
🟡 THIS WEEK - Surface prominently
- Deadline this week
- Investors + needs-response
- Legal + needs-response
- Important sender waiting 2+ days
🟢 SOMETIME - Surface in list
- No deadline, low stakes
- Vendors with non-urgent questions
- Requests that can wait
⚪ FYI - Mention briefly or skip
- Informational only, no action needed
- Already handled, just confirming
Classification Tiers
Tier 1: Auto-Action (No Approval)
| Pattern | Action |
| Payment confirmations | Label: Receipts → Archive |
| Calendar responses (Accepted/Declined/Tentative) | Archive |
| Tool notifications | Label: Notifications → Archive |
| Misrouted (wrong recipient, user not CC'd) | Archive + note |
Escalate to Tier 3 if contains: "failed", "error", "action required", "urgent", "security alert"
Tier 2: Newsletter Digest
Match: *@substack.com, *@tldrnewsletter.com, *@beehiiv.com, known senders (see references/known-senders.md)
Action: Label: Newsletters → Summarize → Archive originals
Output: Create digest with top stories, key insights. Digest is the deliverable; originals archived for reference.
Tier 3: Surface for Decision
- Team emails (unless purely informational)
- Starred messages (user's hot list — never auto-modify)
- Investors, Legal, important Vendors
- Anything with
ic/needs-responselabel - Anything ambiguous
Tier 4: Elimination Candidates
- Cold outreach (first contact + sales language patterns)
- Marketing drip campaigns from tools not in use
- Mailing lists with zero engagement
- Batch for bulk unsubscribe offer
Output Format
Keep it scannable. Group by computed urgency:
🔴 TODAY (2)
├── **Alex** [Team] - Q1 budget review needs sign-off by EOD
│ Labels: Team, ic/needs-response
│ Context: You're meeting them at 2pm
│ → [Draft response] [Snooze 2h] [Mark waiting-on]
│
└── **Justworks** [Vendors] - Payroll processing failed
Labels: Vendors, ic/needs-response
Context: Payroll due today, $102K
→ [Draft response] [Call 888-534-1711]
🟡 THIS WEEK (3)
├── **Cooley** [Legal] - Stock option docs for review
│ Labels: Legal, ic/needs-response
│ → [Draft response] [Snooze to Monday]
...
🟢 SOMETIME (5)
├── **Random Vendor** - Quarterly review request
│ → [Draft polite decline] [Snooze 2 weeks]
...
✅ AUTO-PROCESSED
- Archived: 3 calendar responses, 2 receipts, 4 notifications
- Labels applied: 2 new Team, 1 new Vendors
📰 NEWSLETTER DIGEST
- 6 newsletters summarized → [View digest]
- Archived originals
🗑️ ELIMINATION CANDIDATES (4)
- sales@random-saas.com (3 emails, cold outreach)
- marketing@tool-you-dont-use.com (5 emails, drip)
→ [Unsubscribe all] [Select individually] [Skip]Snooze Handling
When user requests snooze:
- Apply label:
snooze/YYYY-MM-DD - Remove from inbox (archive)
- Apply
ic/scheduledlabel
On future triage runs, check snoozed items:
- If today >= snooze date → remove snooze label, move back to inbox
- Otherwise → ignore
Draft Creation
When user approves a draft:
- Create Gmail draft via MCP (appears in Gmail Drafts folder)
- Show draft content in response
- Provide: [Send now] [Edit first] [Discard]
Never send without explicit "send" or "yes send it" confirmation.
Invoice/Bill Processing
Handoff first. If a dedicated bill-pay skill/flow is available in this environment (e.g. an org's
/bill-pay), do NOT process bills inline — detect the bill, label itBills, and defer to that skill. It owns vendor registry, payment-rail classification, fraud validation, and reconciliation against spend history. The flow below is the standalone fallback for environments without one.
When an email is detected as an invoice or bill that requires manual payment action.
Scope: Manual-Pay Invoices Only
SKIP this flow for auto-pay items:
- Vendors on auto-pay/autopay (check
known-senders.mdforautopay: true) - Subscriptions with card on file (AWS, GCP, SaaS tools)
- Recurring charges that auto-debit
- Payment confirmations (these are Receipts, not Bills)
PROCESS through this flow:
- Invoices requiring manual approval/payment
- New vendors not yet on auto-pay
- One-time or irregular invoices
- Invoices where payment method needs selection
Detection
Trigger invoice flow when email contains:
- Subject: "invoice", "bill", "payment due", "amount due", "statement"
- From: invoices@, billing@, ar@*, or known billing platforms (QuickBooks, FreshBooks, Bill.com, Xero)
- Body: Invoice numbers, amounts due, due dates, payment terms
AND sender is NOT marked as autopay: true in known-senders.md.
Validation
For each invoice, assess validity:
✅ LOOKS VALID - All conditions met:
- Sender domain matches known vendor in
known-senders.md - Amount consistent with prior invoices (±10%)
- Invoice format matches vendor's history
- No red flags present
🚩 SUSPICIOUS - One or more concerns:
- First invoice from this sender
- Amount differs significantly from history
- Bank details changed without prior notice
- Pressure tactics or unusual urgency
- Domain similar but not exact match (typosquatting)
⛔ LIKELY FRAUD - Reject signals present:
- Unexpected wire transfer demands from known ACH vendor
- Personal payment accounts (Venmo, personal PayPal) for business invoice
- "Bank details changed" claims without context
- Typosquatted domain pretending to be known vendor
Payment Method Detection
Invoices may require different payment methods. Validation applies to ALL payment types.
💳 STANDARD (Brex) - Default for most vendors:
- ACH, wire, check, card payment
- If valid → forward to bills@brex.com
🪙 CRYPTO/USDC - Separate payment flow:
- Invoice explicitly requests USDC, USDT, ETH, or other crypto
- Vendor is known crypto-native service (check known-senders.md for
payment: crypto) - If valid → present "Pay via crypto wallet" (NOT forwarded to Brex)
- Still validate for fraud - crypto invoices can be fraudulent too
⚠️ Note: Crypto payment request from a vendor that normally takes USD is a RED FLAG. Crypto request from a known crypto-native vendor is expected.
Output Format
💰 INVOICES REQUIRING APPROVAL (2)
📄 AWS - $2,847.23 [AUTO-PAY - No action needed]
Just FYI: Card on file will be charged
→ [Note only]
📄 Legal Firm LLP - $12,500.00 💳
Invoice #: INV-2025-0042
Due: Jan 25, 2025
Validation: ✅ LOOKS VALID
Confidence: HIGH
Reason: Known vendor, consistent with retainer amount
Payment: ACH/Wire
Prior invoices: 6 (avg: $12,500/mo)
→ [Approve & forward to Brex] [Review first] [Reject]
📄 Web3 Infra Co - $5,000.00 🪙
Invoice #: 2025-01-001
Due: Jan 20, 2025
Validation: ✅ LOOKS VALID
Confidence: HIGH
Reason: Known crypto-native vendor, USDC payment expected
Payment: USDC (expected for this vendor)
Prior invoices: 3 (avg: $5,000/mo)
→ [Pay via USDC] [Review first] [Reject]
📄 Acme Consulting - $15,000.00 🚩
Invoice #: 2025-001
Due: Jan 20, 2025
Validation: 🚩 SUSPICIOUS
Confidence: LOW
Reason: First invoice from this sender, no prior relationship found
Payment: Wire requested
Prior invoices: 0
→ [Review carefully] [Request verification] [Reject]Brex Forwarding (Standard Payment)
When user approves a valid invoice for standard payment:
- Confirm approval explicitly: "Forward Legal Firm invoice ($12,500) to bills@brex.com for payment?"
- On confirmation, forward the original email to
bills@brex.com - Apply label:
Bills/Queued - Log action: "Forwarded to Brex: [vendor] $[amount] Invoice #[number]"
Forward email format:
To: bills@brex.com
Subject: Fwd: [Original subject]
Body: [Original email content]Never auto-forward - Always require explicit approval per invoice.
Crypto Payment Handling
When user approves a crypto invoice:
- Confirm: "Pay Web3 Infra Co $5,000 via USDC?"
- Present wallet/payment details from invoice
- Apply label:
Bills/Crypto-Pending - User executes payment manually
- After confirmation, apply label:
Bills/Paid
Invoice History Tracking
Track invoice history for validation:
- Store in
references/invoice-history.md(create if missing) - Log: date, vendor, amount, invoice number, validation result, payment method
- Use history to establish "normal" patterns per vendor
Bulk Unsubscribe
For Tier 4 items:
- Extract unsubscribe links (List-Unsubscribe header or body link)
- Present as batch: "Found 5 unsubscribe links. Execute all?"
- On approval, open each link or send unsubscribe request
- Log results
Rule Suggestions (AI Training the System)
Track patterns in unlabeled emails that AI classifies. When a pattern emerges, suggest Gmail filter creation.
Suggest new Gmail filter when:
- Same sender domain classified 3+ times with same label
- Same subject pattern classified 3+ times
- New vendor/service appears repeatedly
Output format for suggestions:
📋 SUGGESTED GMAIL FILTERS
Based on patterns I've seen:
1. from:*@cooley.com → Legal
(classified 5 emails this way, 100% match)
→ [Create filter] [Ignore] [Add to known senders]
2. from:*@srsacquiom.com → Vendors
(classified 3 emails, shareholder notices)
→ [Create filter] [Ignore]
3. subject:"Your order" from:*@amazon.com → Receipts
(classified 8 emails)
→ [Create filter] [Ignore]Suggest unsubscribe/block rules when:
- Sender classified as Tier 4 (cold outreach) 2+ times
- Newsletter with 0 opens for 30+ days
- Marketing drip from tool not in use
Learning from Corrections
When user overrides AI classification:
- Log the correction to
references/learned-rules.md - Apply learned rules before default classification on future runs
- If pattern becomes clear, suggest filter
Example correction log:
You archived "SRS Acquiom" despite HIGH urgency classification.
→ Noted: Shareholder notices from SRS Acquiom = FYI only
→ Suggest filter: from:*@srsacquiom.com subject:shareholder → auto-archive?Context Integrations
Calendar (gscli or MCP)
- Flag emails from people you're meeting today/tomorrow
- Detect deadline language ("by Friday", "EOD")
Linear (MCP)
- Link emails mentioning project names
- Note if sender is assigned to active project
Drive (gscli)
- If email references a doc, check if it exists in Drive
All optional. Graceful fail. Note status at end: "Calendar: connected | Linear: unavailable"
Rules
- NEVER auto-send emails. Always save as draft.
- For drafts, show content and offer: [Send] [Edit] [Discard]
- Apply
ic/processedlabel before archiving (audit trail) - Log all actions for review
- Ask before any destructive action (delete, unsubscribe)
- When in doubt, surface it (Tier 3) rather than auto-process
Invoice-Specific Rules
- NEVER auto-forward invoices to bills@brex.com - always require explicit approval
- NEVER auto-pay crypto invoices - always surface for manual payment
- Flag ALL invoices with validity assessment (valid/suspicious/fraud)
- Crypto invoices get same fraud validation as standard invoices
- Skip invoice flow for vendors marked
autopay: truein known-senders - Log all invoice actions to
references/invoice-history.md
References
references/classification-rules.md- Detailed patterns for each tierreferences/known-senders.md- VIPs, team, newsletter sources (template)references/known-senders-private.md- Personal overrides (if exists, takes precedence)references/learned-rules.md- Corrections from past runs (auto-generated)references/invoice-history.md- Invoice history for validation (auto-generated)
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

