Zero Inbox - Triage Skill
name: zero-inbox
description: >
Triages unanswered Slack messages and unread emails. Fetches messages,
filters for what needs a response, routes to domain-specific skills,
and drafts replies. Goal: get to inbox zero efficiently.
triggers:
- zero inbox
- triage my inbox
- check my messages
- what needs my attention
MCP connectors
| Connector |
Purpose |
| Slack |
Read DMs and channel mentions, send replies |
| Gmail |
Read unread emails, draft replies |
Slack Triage Routine
Step 1: Fetch Incoming Messages
Fetch all DMs and channel mentions from the last 10 days.
- Use the Slack MCP to read channels and DMs
- Focus on messages that mention the user or are direct messages to them
- Capture: sender, channel, timestamp, message content, thread context
Step 2: Fetch Sent Messages
Fetch the user's own sent messages from the same time period.
- This is needed to identify which conversations are already handled
- Also fetch messages sent by designated proxies (e.g., co-CAO, EA) who may have replied on the user's behalf
Step 3: Filter Unanswered
Compare incoming vs sent. A message is "unanswered" if:
- It was directed at the user (DM or @mention)
- Neither the user nor a designated proxy replied in that thread
- It contains a question, request, or action item (not just a reaction or FYI)
- It is not from a bot or automated notification
Skip messages that are:
- Already answered by the user or a proxy
- Pure informational (no response needed)
- From bots or integrations (unless they require action)
- Older than 10 days (flag these separately as "stale")
Step 4: Present for Review
Present unanswered messages grouped by priority:
## Needs Response (X messages)
### High Priority
[Messages from important contacts, time-sensitive items, blockers]
### Normal Priority
[Standard questions, requests, follow-ups]
### Low Priority / FYI
[Nice-to-respond but not urgent]
### Stale (over 10 days)
[Messages that may need a "sorry for the delay" if still relevant]
For each message, show:
- Sender and channel
- Message preview (first 2 lines)
- Suggested action: reply / acknowledge / delegate / skip
Step 5: Draft Replies
For each message the user wants to respond to:
- Load the email-writer skill for tone and formatting
- Read the full thread for context
- Draft a reply that matches the sender's energy and language
- Present the draft for user review before sending
Email Triage Routine
Step 1: Fetch Unread Emails
Fetch unread emails from the inbox.
- Use the email MCP (Gmail, Outlook, etc.)
- Capture: sender, subject, date, preview, labels/folders
- Sort by date (newest first)
Step 2: Detect Domain
For each email, determine which domain it belongs to:
| Signal |
Domain |
Route To |
| From a candidate, job board, or contains resume |
HR |
hr-screening skill |
| From a prospect, contains pricing/demo request |
Sales |
head-of-sales skill |
| From an existing customer, support request |
Customer Success |
customer-success skill |
| From an investor, board member, or financial |
Finance |
investor-update skill |
| From a partner, agency, or collaboration request |
Partnerships |
manual review |
| Internal team communication |
Internal |
reply directly |
| Newsletter, marketing, automated |
Noise |
archive or skip |
| Unknown or ambiguous |
Other |
present to user for routing |
Step 3: Call Domain Skill
Route each email to the appropriate domain skill for handling:
- HR emails: load hr-screening skill for candidate evaluation
- Sales emails: load head-of-sales skill for pipeline management
- CS emails: load customer-success skill for follow-up drafting
- For all domains: the skill handles context gathering and draft creation
Step 4: Act
For each email, take the appropriate action:
| Action |
When |
| Draft reply |
The email needs a response. Draft via email-writer skill. |
| Archive |
Newsletter, notification, or FYI that needs no action. |
| Flag for user |
Requires a decision only the user can make. |
| Delegate |
Can be handled by someone else. Note who and why. |
| Snooze |
Not urgent, but needs attention later. Suggest a date. |
Step 5: Summary
Present a summary at the end:
## Inbox Triage Complete
- Emails processed: [X]
- Replies drafted: [X] (awaiting your review)
- Archived: [X]
- Flagged for you: [X]
- Delegated: [X]
- Snoozed: [X]
### Drafts Ready for Review
[List each draft with recipient and one-line summary]
### Needs Your Decision
[List items that require user input]
Domain Routing Map
| Domain |
Skill |
Trigger Signals |
| HR / Recruiting |
hr-screening |
Candidate names, job applications, interview scheduling, resume attachments |
| Sales / Pipeline |
head-of-sales |
Pricing questions, demo requests, prospect domains, CRM contacts |
| Customer Success |
customer-success |
Existing customer domains, support tickets, feature requests, renewal mentions |
| Finance / Investors |
investor-update |
Investor names, board meeting, financial reports, fundraising |
| Product / Engineering |
product-manager |
Bug reports, feature requests from internal team, GitHub notifications |
| Content / Marketing |
cmo |
Press inquiries, collaboration requests, podcast invites |
| Partnerships |
Manual review |
Agency outreach, co-marketing proposals, integration requests |
| Internal |
email-writer |
Team members, internal tools, calendar invites |
| Noise |
Auto-archive |
Newsletters, marketing blasts, automated notifications |
Guardrails
- Never send a reply without user approval. Always present drafts for review first.
- Never archive emails that might need a response. When in doubt, flag for user.
- Never share email content across domains. A customer email doesn't go to the sales skill.
- Respect language. Match the language of the incoming message in replies.
- Flag sensitive items. Legal threats, escalations, or anything unusual gets flagged immediately, not auto-drafted.
- Don't draft for strangers. If the sender is unknown and the email looks suspicious, flag it rather than drafting a reply.
- Time-sensitive items first. If something has a deadline within 24 hours, surface it at the top regardless of domain.
- Track patterns. If the same type of email keeps coming in (e.g., repeated support questions), note it in
_insights.md as a potential process improvement.
Self-improvement
After the CAO reviews an inbox triage batch:
- If the CAO overrides a classification (e.g. moves an email from "archive" to "urgent"), note the pattern in
admin/_insights.md
- If she changes a draft reply before sending, diff what was drafted vs what she sent - update the
email-writer skill if the pattern is voice-related
- If the routing table is wrong (e.g. a domain was assigned to the wrong agent), update the Domain Routing Map section
- If new email patterns emerge (e.g. a new type of inbound that needs its own category), add them to the classification guide
1---2name: zero-inbox3description: Zero Inbox - Triage Skill4---5# Zero Inbox - Triage Skill67```yaml8name: zero-inbox9description: >10 Triages unanswered Slack messages and unread emails. Fetches messages,11 filters for what needs a response, routes to domain-specific skills,12 and drafts replies. Goal: get to inbox zero efficiently.13triggers:14 - zero inbox15 - triage my inbox16 - check my messages17 - what needs my attention18```1920---2122## MCP connectors2324| Connector | Purpose |25|-----------|---------|26| Slack | Read DMs and channel mentions, send replies |27| Gmail | Read unread emails, draft replies |2829## Slack Triage Routine3031### Step 1: Fetch Incoming Messages32Fetch all DMs and channel mentions from the last 10 days.33- Use the Slack MCP to read channels and DMs34- Focus on messages that mention the user or are direct messages to them35- Capture: sender, channel, timestamp, message content, thread context3637### Step 2: Fetch Sent Messages38Fetch the user's own sent messages from the same time period.39- This is needed to identify which conversations are already handled40- Also fetch messages sent by designated proxies (e.g., co-CAO, EA) who may have replied on the user's behalf4142### Step 3: Filter Unanswered43Compare incoming vs sent. A message is "unanswered" if:44- It was directed at the user (DM or @mention)45- Neither the user nor a designated proxy replied in that thread46- It contains a question, request, or action item (not just a reaction or FYI)47- It is not from a bot or automated notification4849Skip messages that are:50- Already answered by the user or a proxy51- Pure informational (no response needed)52- From bots or integrations (unless they require action)53- Older than 10 days (flag these separately as "stale")5455### Step 4: Present for Review56Present unanswered messages grouped by priority:5758```59## Needs Response (X messages)6061### High Priority62[Messages from important contacts, time-sensitive items, blockers]6364### Normal Priority65[Standard questions, requests, follow-ups]6667### Low Priority / FYI68[Nice-to-respond but not urgent]6970### Stale (over 10 days)71[Messages that may need a "sorry for the delay" if still relevant]72```7374For each message, show:75- Sender and channel76- Message preview (first 2 lines)77- Suggested action: reply / acknowledge / delegate / skip7879### Step 5: Draft Replies80For each message the user wants to respond to:81- Load the email-writer skill for tone and formatting82- Read the full thread for context83- Draft a reply that matches the sender's energy and language84- Present the draft for user review before sending8586---8788## Email Triage Routine8990### Step 1: Fetch Unread Emails91Fetch unread emails from the inbox.92- Use the email MCP (Gmail, Outlook, etc.)93- Capture: sender, subject, date, preview, labels/folders94- Sort by date (newest first)9596### Step 2: Detect Domain97For each email, determine which domain it belongs to:9899| Signal | Domain | Route To |100|--------|--------|----------|101| From a candidate, job board, or contains resume | HR | hr-screening skill |102| From a prospect, contains pricing/demo request | Sales | head-of-sales skill |103| From an existing customer, support request | Customer Success | customer-success skill |104| From an investor, board member, or financial | Finance | investor-update skill |105| From a partner, agency, or collaboration request | Partnerships | manual review |106| Internal team communication | Internal | reply directly |107| Newsletter, marketing, automated | Noise | archive or skip |108| Unknown or ambiguous | Other | present to user for routing |109110### Step 3: Call Domain Skill111Route each email to the appropriate domain skill for handling:112- HR emails: load hr-screening skill for candidate evaluation113- Sales emails: load head-of-sales skill for pipeline management114- CS emails: load customer-success skill for follow-up drafting115- For all domains: the skill handles context gathering and draft creation116117### Step 4: Act118For each email, take the appropriate action:119120| Action | When |121|--------|------|122| **Draft reply** | The email needs a response. Draft via email-writer skill. |123| **Archive** | Newsletter, notification, or FYI that needs no action. |124| **Flag for user** | Requires a decision only the user can make. |125| **Delegate** | Can be handled by someone else. Note who and why. |126| **Snooze** | Not urgent, but needs attention later. Suggest a date. |127128### Step 5: Summary129Present a summary at the end:130131```132## Inbox Triage Complete133134- Emails processed: [X]135- Replies drafted: [X] (awaiting your review)136- Archived: [X]137- Flagged for you: [X]138- Delegated: [X]139- Snoozed: [X]140141### Drafts Ready for Review142[List each draft with recipient and one-line summary]143144### Needs Your Decision145[List items that require user input]146```147148---149150## Domain Routing Map151152| Domain | Skill | Trigger Signals |153|--------|-------|----------------|154| HR / Recruiting | `hr-screening` | Candidate names, job applications, interview scheduling, resume attachments |155| Sales / Pipeline | `head-of-sales` | Pricing questions, demo requests, prospect domains, CRM contacts |156| Customer Success | `customer-success` | Existing customer domains, support tickets, feature requests, renewal mentions |157| Finance / Investors | `investor-update` | Investor names, board meeting, financial reports, fundraising |158| Product / Engineering | `product-manager` | Bug reports, feature requests from internal team, GitHub notifications |159| Content / Marketing | `cmo` | Press inquiries, collaboration requests, podcast invites |160| Partnerships | Manual review | Agency outreach, co-marketing proposals, integration requests |161| Internal | `email-writer` | Team members, internal tools, calendar invites |162| Noise | Auto-archive | Newsletters, marketing blasts, automated notifications |163164---165166## Guardrails1671681. **Never send a reply without user approval.** Always present drafts for review first.1692. **Never archive emails that might need a response.** When in doubt, flag for user.1703. **Never share email content across domains.** A customer email doesn't go to the sales skill.1714. **Respect language.** Match the language of the incoming message in replies.1725. **Flag sensitive items.** Legal threats, escalations, or anything unusual gets flagged immediately, not auto-drafted.1736. **Don't draft for strangers.** If the sender is unknown and the email looks suspicious, flag it rather than drafting a reply.1747. **Time-sensitive items first.** If something has a deadline within 24 hours, surface it at the top regardless of domain.1758. **Track patterns.** If the same type of email keeps coming in (e.g., repeated support questions), note it in `_insights.md` as a potential process improvement.176177## Self-improvement178179After the CAO reviews an inbox triage batch:1801811. If the CAO overrides a classification (e.g. moves an email from "archive" to "urgent"), note the pattern in `admin/_insights.md`1822. If she changes a draft reply before sending, diff what was drafted vs what she sent - update the `email-writer` skill if the pattern is voice-related1833. If the routing table is wrong (e.g. a domain was assigned to the wrong agent), update the Domain Routing Map section1844. If new email patterns emerge (e.g. a new type of inbound that needs its own category), add them to the classification guide