git:20260224.3f94246 to git:20260911.22df896

4 added, 0 removed. Audit A to A.

---
name: inbox-catchup
description: >-
Scans all connected communication channels — Gmail, Slack, Calendar, and any
available integrations — then produces a prioritized catchup briefing.
Helps triage messages and draft replies. Use when starting the day, returning
from a break, or needing to quickly catch up on communications.
+ metadata:
+ side_effects: true
+ trigger: "Starting the day, returning from a break, or catching up on communications."
+ tags: "communication, email, productivity, triage"
---
# Inbox Catchup
Scan connected communication sources, build a prioritized briefing, and help triage and respond.
## Configuration
Edit these defaults before uploading, or override at runtime when prompted.
```
sources: all # "all" or comma-separated: gmail, calendar, slack
time_window: 4h # How far back to scan: 1h, 4h, today, yesterday
priority_contacts: [] # Names/emails that always surface first
reply_tone: professional # professional, casual, brief
auto_draft: true # Offer to draft replies for items that need response
```
## Process
### 1. Detect Available Sources
Check what communication integrations and tools are accessible in this session:
- **Google Workspace** — Gmail (unread/recent emails), Google Calendar (upcoming events)
- **MCP servers** — Check for any connected messaging tools (Slack, Teams, Discord, etc.)
- **Other integrations** — Any other data sources available
Report what was found:
```
Connected sources:
✅ Gmail — via Google Workspace
✅ Google Calendar — via Google Workspace
✅ Slack — via MCP server
❌ Messages — not connected
```
If no communication sources are detected, explain what integrations are needed and how to connect them (Settings > Connected apps for Google Workspace, or configure MCP servers in Desktop settings). Then stop.
### 2. Ask Preferences (First Use Each Conversation)
If this is the first time running in this conversation, ask:
> **Quick setup for this catchup:**
> 1. Which sources to scan? (default: all connected)
> 2. Time window? (default: last 4 hours)
> 3. Any priority contacts to surface first?
Accept brief answers. If the user says "just go" or similar, use the defaults from the Configuration section above.
### 3. Scan All Sources
For each connected source, gather recent items within the time window:
**Gmail:**
- Unread emails in inbox
- Emails where the user is in To: (not just CC:)
- Threads with recent replies
**Google Calendar:**
- Events in the next 4 hours
- Events that started in the last hour (may have missed)
- Events with attachments or agenda docs
**Slack (if connected via MCP):**
- Unread DMs
- Mentions in channels
- Threads the user is part of with new replies
**Other MCP sources:**
- Follow the same pattern: unread, mentions, direct messages
### 4. Build the Briefing
Organize everything into three priority tiers:
**🔴 Needs Reply** — Messages directly to the user that appear to expect a response. Sort by sender importance (priority contacts first), then recency.
For each item show:
```
[Source] From: sender — subject/preview
Received: time ago
Context: 1-line summary of what they're asking/saying
```
**🟡 FYI — Worth Reading** — Informational messages, CC'd threads, channel activity. No response expected but may be relevant.
For each item show:
```
[Source] subject/channel — 1-line summary
Why it matters: brief reason this was flagged
```
**🟢 Upcoming** — Calendar events in the next few hours.
For each item show:
```
[Calendar] event title — time
With: attendees
Prep: any linked docs or agenda items
```
### 5. Present the Briefing
Show a clean summary:
```
📬 Inbox Catchup — [date/time]
Scanned: Gmail, Calendar, Slack (last 4 hours)
🔴 Needs Reply (3)
1. [Gmail] Sarah — "Quick question about the API migration"
30 min ago — Asking which endpoint to use for the new auth flow
2. [Slack DM] Alex — "Can you review my PR?"
1h ago — Wants review on #342 before EOD
3. [Gmail] Jordan — "Meeting reschedule"
2h ago — Proposing Thursday instead of Wednesday
🟡 FYI (5)
• [Slack #engineering] Deploy discussion — team debating rollback strategy
• [Gmail] Newsletter from TechCrunch — AI funding roundup
• ... (3 more)
🟢 Upcoming (2)
• 10:30 AM — Sprint planning (with: team)
• 1:00 PM — 1:1 with manager (agenda doc linked)
```
Then ask:
> Want me to help draft replies? I'll take them one at a time, starting with the most urgent.
### 6. Interactive Triage
For each "Needs Reply" item (in priority order):
1. Show the full message content
2. Draft a reply matching the configured tone
3. Present the draft and ask:
- **Send as-is** — send the reply
- **Edit** — let the user modify, then confirm
- **Skip** — move to the next item
- **Stop** — end triage, show remaining items
**Never send a reply without explicit user confirmation.** Always show the draft first.
### 7. Wrap Up
After triage (or if the user chose not to reply):
```
✅ Catchup complete
Replied: 2 messages
Skipped: 1 message
Still pending: 0
Next event: Sprint planning in 45 min
```
## Guidelines
- **Detect, don't assume** — only use sources that are actually connected. Never fabricate messages or pretend a source is available when it isn't.
- **Confirm before sending** — every reply must be shown to the user and explicitly approved before sending. No auto-send, ever.
- **Respect priority contacts** — if configured, always surface messages from these people first regardless of recency.
- **Be concise in summaries** — the briefing should be scannable in under 30 seconds. Save detail for when the user drills into a specific item.
- **Graceful degradation** — if a source fails or returns no results, note it and continue with the others. Don't block the entire catchup because one source is down.
- **Privacy-aware** — don't summarize or quote message content beyond what's needed for triage. The user may be on a shared screen.