Skip to content
All Skills

Slack Triage

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.

Personal Productivity|v1|Updated 7/14/2026|GitHub source
MCP get_skill({ skillId: "slack-triage-ae1d11d1" })

Use this skill with your agent

Create a free account and connect via MCP

Get Started Free
# 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:

```markdown
# 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"):

1. Read the full thread for context using `slack_read_channel` or search tools
2. Identify who else is in the thread (for tone calibration)
3. Draft a reply matching Eric's Slack voice
4. Present the draft for Eric's review
5. **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:

```markdown
# 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)
#slack#message-triage#channel-routing#note#takingfilesystem-accessslack-mcp-server