gmail-triage
Skill37 starsChanged 4 months agoMITView on GitHub
Triage your Gmail inbox using the Google Workspace CLI (gws). Use this skill whenever the user asks to: check email, triage inbox, scan for important messages, summarize newsletters, do a morning email check, or anything involving reading and categorizing unread emails. Also trigger when the user says things like "what's in my inbox", "any important emails", "check my email", "email briefing", "newsletter recap", or "mark emails as read". This skill is READ-ONLY — it never sends, replies to, or forwards emails.
- Installs packages
5 other projects use a version of this.
Adopted by
Most recently taken up by
- RachaelQuisel/skillsforyoutheir own version, first seen Sep 23, 2026
- metraton/gaiatheir own version, first seen Jul 2, 2026
- adsmaniotto/personal-claude-skillstheir own version, first seen May 7, 2026
- muhammadwaheedairi/Personal-AI-Employeetheir own version, first seen Mar 6, 2026
- klemensms/claude-skillstheir own version, first seen Dec 22, 2025
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- metraton/gaia★ 4same name
- adsmaniotto/personal-claude-skills★ 3same name
- muhammadwaheedairi/Personal-AI-Employee★ 1same name
- RachaelQuisel/skillsforyou★ 1same name
- klemensms/claude-skills★ 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 repository5 other files it gives its agents.
- infographic-generatorSkill
- linkedin-asset-analyzerSkill
- twitter-readerSkill
- video-performance-analyzerSkill
- x-scannerSkill
The file
We split this skill into the rules it gives an agent
11 rules. 0 are common, 8 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 5 edited versions we read keep these.
8
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 38
Verify it works: gws gmail +triage should return unread inbox data.
- Very specific: line 44
Primary inbox only: Only triage emails in category:primary.
- Distinctive: line 72
Start with the triage helper:
- Distinctive: line 125
When in doubt, err on the side of flagging as important — better to surface something irrelevant than miss something that mattered.
- Distinctive: line 139
Call out anything that's a potential content idea or business opportunity
- Distinctive: line 145
After delivering the briefing, mark every email as read — including Action Required ones.
- Very specific: line 156
Important: Run mark-as-read sequentially, not backgrounded with &.
- Distinctive: line 171
Keep it tight. The whole briefing should be scannable in under 60 seconds.
- Distinctive: line 177
If an email is from any of these, it's Action Required regardless of content:
- Distinctive: line 193
Write anything to Notion or other systems
- Distinctive: line 196
If asked to reply or send, remind the user this skill is read-only and suggest they handle it directly.
“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Gmail Triage Skill
You help the user stay on top of their inbox without getting sucked into it. Your job is to surface what matters, summarize what's informational, and clean up the noise — all without ever sending a single email.
Philosophy
Email is a todo list other people write for you. The goal is to protect attention:
- Flag what's important — anything requiring a decision, response, or action
- Summarize what's informational — newsletters grouped by topic so you get the value without the time sink
- Clean up the rest — mark low-priority emails as read so they stop cluttering the unread count
This skill is strictly read-only. Never send, reply, forward, or draft emails. If something needs a response, surface it — don't do it.
Prerequisites
The Google Workspace CLI must be installed and authenticated:
npm install -g @googleworkspace/cli
gws auth setupVerify it works: gws gmail +triage should return unread inbox data.
Scope
Primary inbox only. Only triage emails in category:primary. Ignore promotions, social,
updates, and forums unless explicitly asked to check those.
Helper Scripts
Reusable scripts live in <skill-directory>/scripts/:
extract_newsletter.py— Extracts readable text from rawgwsmessage JSON (base64-decoded). Pipe from gws or stdin:gws gmail users messages get --params '{"userId":"me","id":"MSG_ID","format":"full"}' \ | python <skill-directory>/scripts/extract_newsletter.pymark_read.sh— Marks one or more messages as read. Run sequentially (not backgrounded) to avoid race conditions:bash <skill-directory>/scripts/mark_read.sh MSG_ID1 MSG_ID2 MSG_ID3
Triage Workflow
Step 1: Pull the primary inbox
Start with the triage helper:
gws gmail +triageThis returns sender, subject, and date for unread messages. Filter to primary only — skip anything in promotions, social, updates, or forums categories (check labelIds).
For more detail on specific messages (e.g., to read a newsletter body), fetch individually:
gws gmail users messages get --params '{"userId":"me","id":"<message_id>","format":"full"}'Then pipe through the extract script to get readable text:
gws gmail users messages get --params '{"userId":"me","id":"<message_id>","format":"full"}' \
| python <skill-directory>/scripts/extract_newsletter.pyOther useful queries:
gws gmail users messages list --params '{"userId":"me","maxResults":20,"q":"is:unread category:primary"}'Step 2: Categorize every email
Go through each unread message and assign it to one of three buckets:
Action Required — Flag these and keep unread. Characteristics:
- From a real person the user knows or works with (clients, collaborators, friends, family)
- Mentions money, deals, contracts, deadlines, or meetings
- Asks a direct question or requests a decision
- Time-sensitive (event RSVPs, expiring offers relevant to business)
- From platforms where the user has active business
- From any sender the user has told you to always flag
Newsletter / Informational — Summarize these, then mark as read. Characteristics:
- AI/tech newsletters (TLDR, Ben's Bites, The Neuron, Import AI, Superhuman, etc.)
- Industry updates, product launches, funding news
- Business/creator economy newsletters
- Fitness, health, mindset, or personal development content
- Marketing or growth content
Low Priority — Mark as read silently. Characteristics:
- Automated notifications (GitHub, Notion, app alerts)
- Marketing/promotional emails from brands
- Social media notifications (LinkedIn, X, Instagram)
- Receipts and order confirmations (unless very recent / relevant)
- Spam or irrelevant outreach
When in doubt, err on the side of flagging as important — better to surface something irrelevant than miss something that mattered.
Step 3: Summarize newsletters by topic
For Newsletter emails, always fetch the full body before summarizing — never summarize from subject line alone. Pipe through the extract script to get readable text, then group summaries by broad topic:
- AI / Tech — lead with this group, give it the most depth. Focus on what's relevant: AI agents, developer tools, new models, content creation tech, solo founder tools
- Business / Creator Economy — growth strategies, monetization, newsletter tactics, sponsorship trends
- Fitness / Health — training science, nutrition, recovery
- Mindset / Personal Development — productivity, mental models, habits
- Other — anything that doesn't fit the above
For each newsletter:
- 3-5 bullet points — focus on what's actionable or relevant, not just what it covered
- Call out anything that's a potential content idea or business opportunity
- Include any specific numbers, studies, or tools mentioned — concrete details beat vague summaries
- Skip the fluff entirely
Step 4: Mark all emails as read
After delivering the briefing, mark every email as read — including Action Required ones. The briefing itself is the user's signal to handle what matters; the inbox should be clean afterward.
bash <skill-directory>/scripts/mark_read.sh MSG_ID1 MSG_ID2 MSG_ID3 ...Or individually:
gws gmail users messages modify --params '{"userId":"me","id":"<message_id>"}' --json '{"removeLabelIds":["UNREAD"]}'Important: Run mark-as-read sequentially, not backgrounded with &. Backgrounding causes race conditions with the gws keyring.
Step 5: Deliver the briefing
Present results in this order:
1. Action Required (if any) For each: who it's from, what they need, and a suggested next step.
2. Newsletter Highlights (if any) Grouped by topic (AI/Tech first, then others). Each newsletter gets a name + 2-4 bullets.
3. Cleanup Summary One line: "Marked X emails as read" with a few examples of what was cleared.
Keep it tight. The whole briefing should be scannable in under 60 seconds.
Important Senders (always flag)
If an email is from any of these, it's Action Required regardless of content:
- Any email from a real person (not a no-reply address) that appears to be a direct message
- Sponsors, brand partners, or anyone discussing business deals
- Any client or prospect
<!-- Add your important senders here — e.g., co-founders, key collaborators, specific platforms -->This list evolves — if the user says to always flag someone, add them here.
What This Skill Does NOT Do
- Send, reply to, forward, or draft emails
- Delete emails
- Move emails between folders/labels (except marking as read)
- Write anything to Notion or other systems
- Access accounts other than the authenticated Gmail
If asked to reply or send, remind the user this skill is read-only and suggest they handle it directly.
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.

