name: slack-triage description: > This skill should be used when the user asks to "check Slack", "triage my Slack", "check my messages", "Slack summary", "what did I miss on Slack", or invokes /slack or /messages. Scans Eric's Slack workspace for recent messages, DMs, threads, and mentions — classifies by priority tier, and offers reply drafting. References porres-family-assistant for contacts context.
Slack Triage Skill
Overview
Scan Eric's Slack workspace for recent messages, classify them into three priority tiers, and offer to draft replies for urgent items. This skill mirrors the email-triage pattern but adapted for Slack's channel-based, threaded communication model.
This skill does NOT maintain its own contact data — it reads from the porres-family-assistant skill as the canonical source for people context.
Available Slack MCP Tools
The Slack connector (https://mcp.slack.com/mcp) provides these tools:
| Tool | Purpose |
|---|---|
slack_read_channel |
Read recent messages from a specific channel |
slack_search_public_and_private |
Search across all accessible channels |
slack_search_users |
Find users by name or email |
slack_search_channels |
Find channels by name or topic |
Step 0 — Load Context (runtime references)
Before scanning, read these files from the family assistant to establish priority context:
| File | What it provides |
|---|---|
shared/skills/porres-family-assistant/references/family-members.md |
Family names — helps identify personal messages from family members |
shared/skills/porres-family-assistant/references/email-aliases.md |
Alias routing — email/Slack identity overlap |
Load only these two. Don't load insurance, medical, or finance unless a specific message requires that context.
Also load references/workspace-config.md from this skill for channel priority mappings (once Eric configures it).
Step 1 — Scan Workspace
Use the Slack MCP tools to gather recent activity. Run these searches in parallel:
1a. Direct Messages
Search for recent DMs sent to Eric:
slack_search_public_and_private: "to:me" (filtered to DMs)
1b. Mentions
Search for @mentions of Eric across channels:
slack_search_public_and_private: "@eric" or Eric's Slack user mention
1c. Threads Eric is in
Search for replies in threads Eric has participated in:
slack_search_public_and_private: threads where Eric has replied
1d. Priority Channels
Read latest messages from channels marked as priority in references/workspace-config.md.
Time window options:
- Default: last 24 hours (good for daily morning triage)
- If Eric says "just now" or "last hour": last 2 hours
- If Eric says "catch me up" or "this week": last 3 days
Snippet-first approach: Classify from search result snippets first. Only read full channel history or thread for:
- All Tier 1 messages (need full context for reply drafting)
- Ambiguous Tier 2 messages where the snippet isn't enough to classify
This avoids token blowout on busy days.
Step 2 — Classify into Tiers
Tier 1 — Reply Needed
Messages with a direct question, request, or action aimed at Eric. Each gets:
- One-line summary of what the sender needs
- Channel/DM context
- Suggested action: Reply / React / Schedule / Forward to [person]
Urgency signals (auto-promote to Tier 1):
- Direct messages from anyone (DMs inherently signal intent)
- @mentions of Eric by name
- Messages from Eric's manager or direct reports
- Time-sensitive language: "by EOD", "deadline", "urgent", "asap", "blocker", "blocked on you", "need your input"
- Threads Eric started that have unresolved questions
- Messages in channels tagged as "priority" in workspace config
- Requests with deadlines or action items assigned to Eric
- Escalations or incidents (keywords: "P0", "P1", "incident", "outage", "down", "broken", "escalating")
Tier 2 — Review / Decide
Needs Eric's eyes but not necessarily a reply:
- FYI mentions ("cc @eric", "looping in @eric")
- Shared links, documents, or announcements in priority channels
- Meeting notes or decision summaries
- Channel activity in watched channels (not priority, but relevant)
- Bot notifications (deploy alerts, CI/CD results, PR reviews)
- Reactions/threads on Eric's own messages (social signals)
Tier 3 — Noise
General channel chatter, automated bot spam, social messages, memes, off-topic threads. Summarize as counts by channel.
Channel Priority Mapping
Use references/workspace-config.md for Eric's channel configuration. Until configured, use these defaults:
Default priority channels (Tier 1 if action-oriented):
- Any channel with "ai", "logitech", or Eric's team name in the name
- #general (company-wide announcements only — filter noise)
Default review channels (Tier 2):
- Project-specific channels Eric is a member of
- #announcements or #all-hands type channels
Default noise (Tier 3):
- #random, #social, #watercooler, #pets, etc.
- Channels Eric hasn't posted in for 30+ days
Step 3 — Present Results
Format output as:
# Slack Triage — [Today's Date]
[X messages scanned from last 24h across Y channels]
## Reply Needed (X)
1. **[Sender Name]** in #[channel] (or DM)
[One-line summary of what they need]
→ Suggested: [Reply / React / Schedule / Forward to X]
2. ...
## Review (X)
- **[Sender]** in #[channel] — [One-line summary]
- ...
## Noise (X)
[X] #random, [X] #social, [X] bot notifications, [X] other
Numbering matters. Tier 1 items are numbered so Eric can say "draft a reply to #3."
Step 4 — Reply Drafting (conversational)
When Eric asks to draft a reply (e.g., "draft a reply to #3"):
- Read the full thread for context using
slack_read_channelor search tools - Identify who else is in the thread (for tone calibration)
- Draft a reply matching Eric's Slack voice
- Present the draft for Eric's review
- Never auto-send. Always require explicit "send it" or "yes, post" confirmation.
Eric's Slack voice guidelines
- More casual than email — shorter sentences, fewer formalities
- Direct and to the point
- Uses emoji reactions where appropriate (suggest these too)
- First names always
- Doesn't over-explain
- Thread replies preferred over channel-level responses for ongoing discussions
Step 5 — Catch-Up Summary (optional)
If Eric asks for a summary rather than full triage:
# Slack Catch-Up — [Date Range]
**Hot topics:** [2-3 sentence summary of the most important threads]
**Action items for you:**
1. [Action] — from [Person] in #[channel]
2. ...
**Decisions made without you:**
- [Decision] in #[channel] — [who decided, when]
**Nothing urgent:** [Channels with no activity or only noise]
Edge Cases
- Slack connector not connected: Tell Eric the Slack connector isn't available yet and remind him to connect it in Cowork settings. Offer to check email instead.
- Empty results: "Nothing new on Slack in the last 24 hours — all quiet."
- Very high volume (100+ messages): Warn Eric, offer to filter by DMs-only, mentions-only, or specific channels.
- Cross-platform threads: If a Slack message references an email or vice versa, note the cross-reference.
- Out of office: If Eric mentions he's been away, auto-extend the time window to cover the absence.
What This Skill Does NOT Do
- Does not maintain its own contact list (uses family-assistant)
- Does not save output to files (ephemeral conversation view)
- Does not send messages without explicit confirmation
- Does not modify channel settings, pins, or bookmarks
- Does not join or leave channels
- Does not handle Slack Connect (external org) channels differently (yet)