---
name: slack-notification-triage
description: "Triage what needs the user's attention in Slack — unread mentions, DMs, and active threads they're in — ranked by urgency with a suggested action each. Use for 'what needs my attention on Slack', 'triage my Slack', or 'what should I respond to'."
emoji: "🚨"
---

# Slack notification triage

Turn the noise into a ranked, actionable list. Read-only unless the user asks you
to act; never fabricate a message or an ask.

## Steps

1. **Resolve the user** (whose token/identity is active) so "mentions of me" and
   "from me" are correct.
2. **Gather candidates** (search/read buckets; back off on 429):
   - Direct mentions of the user.
   - DMs and group DMs with unread/newer messages.
   - Threads the user participated in that have newer replies.
     Honor a timeframe if given; otherwise recent + unresolved.
3. **Filter** to items where the latest **unresolved** message is from someone
   else (drop threads where the user already had the last word, and FYIs that need
   no action).
4. **Rank**: time-sensitive asks / blockers / direct questions > mentions in
   active threads > FYIs worth a glance.
5. For each, infer a **suggested action**: reply / react-ack / delegate / ignore.
   Capture real commitments with `todo_add` (`source: "slack"`, `sourceRef` = `ts`).

## Output format

- **Slack triage — <n> items need you**
- One line per item: **[priority]** `#channel` or `DM` — who + the ask (≤1 line) —
  _suggested action_ — where (ts/thread).
- Keep it skimmable; group by priority if long.

## Handoff

If the user says "draft replies to these" → **slack-reply-drafting**. "Reply to
#N" / "send X" → **slack-outgoing-message**. Otherwise stay read-only.
