name: slack-notification-triage description: Triage recent Slack activity into a priority queue or task list for the user.
Slack Notification Triage
Use this skill to produce a priority queue or task list for the user from recent Slack messages. It is for surfacing what the user likely needs to read, reply to, or do next.
Start Here
- If the user provided a time window, use it. For requests like "today" or "this morning," resolve the user's timezone with
slack_read_user_profile. - Treat this as best-effort triage over recent Slack activity, not an exact unread or notification-state view.
Workflow
- Treat this as personal triage for the user. Focus on messages directed at the user, messages likely needing a reply, and messages that create a concrete follow-up or task for the user.
- Resolve the current user with
slack_read_user_profileso you have the user's Slack ID for mention-based searches. - If the user provided channel names, DMs, people, or topic keywords, use that scope.
- Named channels: Resolve IDs through
slack_search_channels, then callslack_read_channelwithlimitat100per channel. - Named people or DMs: Resolve people through
slack_search_users, then useslack_search_public_and_privatewith several small searches using filtersfrom:<@USER_ID>,to:<@USER_ID>, orin:<@USER_ID>to surface relevant DM or person-specific activity. - Named topics: Use
slack_search_public_and_private, and if channels were also provided, keep the search inside those channels. - No explicit scope: Search in this order:
- unanswered direct conversations: run
slack_search_public_and_privateoverchannel_types="im", paging until you have a reasonable set of unique conversations, then dedupe and expand promising DMs withslack_read_channel - unanswered group DMs: repeat over
channel_types="mpim", again preferring unique conversations over repeated hits from one chat - direct mentions:
slack_search_public_and_privatewithqueryset to<@USER_ID> - threads with prior user participation:
slack_search_public_and_privatewithqueryset tofrom:<@USER_ID> is:thread, thenslack_read_thread - threads with prior user mention:
slack_search_public_and_privatewithqueryset to<@USER_ID> is:thread, thenslack_read_thread
- unanswered direct conversations: run
- Use
slack_read_threadwhen the thread could hold more necessary context. - Prioritize messages that likely need a reply or could create a concrete follow-up or task for the user. Explicit asks, review or approval requests, blockers, and bumps should rank above casual questions, FYIs, or repeated snippets from the same conversation.
- Read the full
## Formatting Rulessection below. - Before sending the final answer, map the findings into the exact structure in Formatting Rules. Do not invent alternate section names or top-level layouts.
- If the user also asked to draft or send follow-ups from the triage results, use
../slack-outgoing-message/SKILL.mdand align with the explicit intent:
- explicit send/post/reply: write directly
- explicit draft/review-first: draft
- otherwise keep this skill analysis-only
Formatting Rules
- For a concise Slack or chat summary, you MUST use exactly this structure unless the user explicitly requests a different format.
- If you use
../slack-outgoing-message/SKILL.mdto draft or send the final message, this output contract remains binding. The downstream skill does not relax or rename these sections.
**Slack Notification Triage - YYYY-MM-DD**
**Overview**
<1-2 sentence summary of what the user most likely needs to read, reply to, or do next>
**Tasks for you**
- ...
**Worth skimming**
- ...
**Can ignore for now**
- ...
**Notes**
- <gaps, caveats, or partial coverage>
- Keep the triage compact; aim for 3–15 bullets total across all sections.
- Treat Tasks for you as the primary section whenever the triage is meant to produce a personal todo list.
- Include Can ignore for now only when the user explicitly asked to filter tasks.
- Start each bullet with the key update, then add the action the user may need to take.
- Preserve exact channel names and mention DMs explicitly.
- Use Notes for coverage limits or sparse results.