with one click
slack-messaging
// Reads, scans, and drafts Slack messages. Use when the user asks to send, draft, check, or scan Slack, including implicit reads like "what am I working on" or "who is waiting on me".
// Reads, scans, and drafts Slack messages. Use when the user asks to send, draft, check, or scan Slack, including implicit reads like "what am I working on" or "who is waiting on me".
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | slack-messaging |
| description | Reads, scans, and drafts Slack messages. Use when the user asks to send, draft, check, or scan Slack, including implicit reads like "what am I working on" or "who is waiting on me". |
This skill covers two directions: writing to Slack, and reading from Slack.
All Slack read and write operations go through the Slack MCP server. If the MCP is not installed, returns auth or permission errors, or is temporarily unavailable, stop and prompt the user to set it up or reconnect.
For any Slack send/reply/post request, always create a draft first (using the Slack draft message tool, so the user sees the draft in their Slack app).
After drafting, share the direct Slack channel clickable link, then ask the user whether they want the AI to send it or will send it themselves.
For any "what am I working on", "who is waiting on me", "any update from X", "scan my Slack", "catch me up", or similar Slack-data question, scan each signal below in parallel as its own search query. The exact filter syntax is for the agent to construct.
Time range: infer from the query type.
Signals to scan:
@-mentions of the user.
Pings from teammates or external contacts in non-DM channels.
Critical and easy to miss:
a "DM recipient" filter does not match mentions in channels,
so a from + to scan alone leaves these invisible.
A separate query that matches mentions regardless of channel type is required.Slack search defaults to include_bots=false, but plenty of automation posts
(Google Calendar invites, GitHub Slack-app pings, Slack Reminder, etc.)
come from accounts that are not flagged as bots,
so they still surface and crowd the 20-result cap.
They are not actionable work.
If automation pings inflate a result set,
exclude the noisy account with a -from: filter (e.g. -from:<@calendar-account>)
and re-issue the query, so each 20-result batch is actual signal instead of noise.
Pagination (below) then applies to the cleaner stream as normal.
Slack search returns at most 20 results per call (a hard MCP cap).
A response of exactly 20 means the result is truncated.
Pagination is non-negotiable:
every signal that hits the cap must be either paginated to end-of-results
or narrowed (by channel, date, or -from: filter) until it returns under the cap.
Writing "I did not paginate" in the summary is not a substitute.
That shifts the cost onto the user,
who cannot tell whether the missed window contained a real ping.
The whole reason this skill exists is the failure mode
where a single @-mention sitting near the cap edge gets missed.
Treat any truncation as a real gap until proven otherwise,
even when the first batch looks comprehensive.
For deep-dive into a single thread, switch from search to the thread-read tool, which returns the full thread content with a much higher per-call limit.
After gathering all signals, present findings grouped by urgency:
Omit empty groups. Within each group, list items newest-first.