Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Automate Slack messaging, channel management, search, reactions, and threads via Rube MCP (Composio). Send messages, search conversations, manage channels/users, and react to messages programmatically.
.claude/skills/davepoon-slack-automation/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 116% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 355% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 125% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 376% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 158% | 0% |
Automate Slack workspace operations including messaging, search, channel management, and reaction workflows through Composio's Slack toolkit.
Toolkit docs: composio.dev/toolkits/slack
RUBE_MANAGE_CONNECTIONS with toolkit slackRUBE_SEARCH_TOOLS first to get current tool schemasGet Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
RUBE_SEARCH_TOOLS respondsRUBE_MANAGE_CONNECTIONS with toolkit slackWhen to use: User wants to post a message to a Slack channel or DM
Tool sequence:
SLACK_FIND_CHANNELS - Resolve channel name to channel ID Prerequisite]SLACK_LIST_ALL_CHANNELS - Fallback if FIND_CHANNELS returns empty/ambiguous results Fallback]SLACK_FIND_USERS - Resolve user for DMs or @mentions Optional]SLACK_OPEN_DM - Open/reuse a DM channel if messaging a user directly Optional]SLACK_SEND_MESSAGE - Post the message with resolved channel ID Required]SLACK_UPDATES_A_SLACK_MESSAGE - Edit the posted message if corrections needed Optional]Key parameters:
channel: Channel ID or name (without '#' prefix)markdown_text: Preferred field for formatted messages (supports headers, bold, italic, code blocks)text: Raw text fallback (deprecated in favor of markdown_text)thread_ts: Timestamp of parent message to reply in a threadblocks: Block Kit layout blocks (deprecated, use markdown_text)Pitfalls:
SLACK_FIND_CHANNELS requires query param; missing it errors with "Invalid request data provided"SLACK_SEND_MESSAGE requires valid channel plus one of markdown_text/text/blocks/attachmentsthread_ts is omittedresponse.data.channel and response.data.message.ts from SEND_MESSAGE for edit/thread operationsWhen to use: User wants to find specific messages across the workspace
Tool sequence:
SLACK_FIND_CHANNELS - Resolve channel for scoped search with in:#channel Optional]SLACK_FIND_USERS - Resolve user for author filter with from:@user Optional]SLACK_SEARCH_MESSAGES - Run keyword search across accessible conversations Required]SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION - Expand threads for relevant hits Required]Key parameters:
query: Search string supporting modifiers (in:#channel, from:@user, before:YYYY-MM-DD, after:YYYY-MM-DD, has:link, has:file)count: Results per page (max 100), or total with auto_paginate=truesort: 'score' (relevance) or 'timestamp' (chronological)sort_dir: 'asc' or 'desc'Pitfalls:
query is missing/emptyok=true can still mean no hits (response.data.messages.total=0)response.data.messages.matches (sometimes also response.data_preview.messages.matches)match.text may be empty/truncated; key info can appear in matches[].attachments[]response.data.has_more=true; paginate via response_metadata.next_cursorWhen to use: User wants to list channels, users, or workspace info
Tool sequence:
SLACK_FETCH_TEAM_INFO - Validate connectivity and get workspace identity Required]SLACK_LIST_ALL_CHANNELS - Enumerate public channels Required]SLACK_LIST_CONVERSATIONS - Include private channels and DMs Optional]SLACK_LIST_ALL_USERS - List workspace members Required]SLACK_RETRIEVE_CONVERSATION_INFORMATION - Get detailed channel metadata Optional]SLACK_LIST_USER_GROUPS_FOR_TEAM_WITH_OPTIONS - List user groups Optional]Key parameters:
cursor: Pagination cursor from response_metadata.next_cursorlimit: Results per page (default varies; set explicitly for large workspaces)types: Channel types filter ('public_channel', 'private_channel', 'im', 'mpim')Pitfalls:
response.data.team, not top-levelSLACK_LIST_ALL_CHANNELS returns public channels only; use SLACK_LIST_CONVERSATIONS for private/IM coverageSLACK_LIST_ALL_USERS can hit HTTP 429 rate limits; honor Retry-After headerresponse_metadata.next_cursor until empty; de-duplicate by idWhen to use: User wants to add reactions or manage threaded conversations
Tool sequence:
SLACK_SEARCH_MESSAGES or SLACK_FETCH_CONVERSATION_HISTORY - Find the target message Prerequisite]SLACK_ADD_REACTION_TO_AN_ITEM - Add an emoji reaction Required]SLACK_FETCH_ITEM_REACTIONS - List reactions on a message Optional]SLACK_REMOVE_REACTION_FROM_ITEM - Remove a reaction Optional]SLACK_SEND_MESSAGE - Reply in thread using thread_ts Optional]SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION - Read full thread Optional]Key parameters:
channel: Channel ID where the message livestimestamp / ts: Message timestamp (unique identifier like '1234567890.123456')name: Emoji name without colons (e.g., 'thumbsup', 'wave::skin-tone-3')thread_ts: Parent message timestamp for threaded repliesPitfalls:
SLACK_FETCH_CONVERSATION_HISTORY only returns main channel timeline, NOT threaded repliesSLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION with parent's thread_ts to get thread repliesWhen to use: User wants to schedule a message for future delivery
Tool sequence:
SLACK_FIND_CHANNELS - Resolve channel ID Prerequisite]SLACK_SCHEDULE_MESSAGE - Schedule the message with post_at timestamp Required]Key parameters:
channel: Resolved channel IDpost_at: Unix timestamp for delivery (up to 120 days in advance)text / blocks: Message contentPitfalls:
post_at must be a Unix timestamp, not ISO 8601Always resolve display names to IDs before operations:
SLACK_FIND_CHANNELS with query paramSLACK_FIND_USERS with search_query or emailSLACK_OPEN_DM with resolved user IDsMost list endpoints use cursor-based pagination:
response_metadata.next_cursor until emptylimit values (e.g., 100-200) for reliable pagingid across pagesmarkdown_text over text or blocks for formatted messages<@USER_ID> format to mention users (not @username)\n for line breaks in markdown_textSLACK_FIND_CHANNELS can return empty results if channel is private and bot hasn't been invitedSLACK_LIST_ALL_USERS and other list endpoints can hit HTTP 429; honor Retry-After headerresponse.data.results[0].response.data in wrapped executionsSLACK_FETCH_CONVERSATION_HISTORY returns main timeline only; use SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION for thread replieschannel and original message ts; persist these from SEND_MESSAGE responseSLACK_GET_APP_PERMISSION_SCOPES| Task | Tool Slug | Key Params | |------|-----------|------------| | Find channels | SLACK_FIND_CHANNELS | query | | List all channels | SLACK_LIST_ALL_CHANNELS | limit, cursor, types | | Send message | SLACK_SEND_MESSAGE | channel, markdown_text | | Edit message | SLACK_UPDATES_A_SLACK_MESSAGE | channel, ts, markdown_text | | Search messages | SLACK_SEARCH_MESSAGES | query, count, sort | | Get thread | SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION | channel, ts | | Add reaction | SLACK_ADD_REACTION_TO_AN_ITEM | channel, name, timestamp | | Find users | SLACK_FIND_USERS | search_query or email | | List users | SLACK_LIST_ALL_USERS | limit, cursor | | Open DM | SLACK_OPEN_DM | user IDs | | Schedule message | SLACK_SCHEDULE_MESSAGE | channel, post_at, text | | Get channel info | SLACK_RETRIEVE_CONVERSATION_INFORMATION | channel ID | | Channel history | SLACK_FETCH_CONVERSATION_HISTORY | channel, oldest, latest | | Workspace info | SLACK_FETCH_TEAM_INFO | (none) |
Powered by Composio
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | pass→pass | 8,924 | 8,387 | -6% | 1 | 1 | 0% | 1,644 | 4,062 | +147% | 0 | 0 | — |
case-10 | pass→pass | 3,655 | 2,531 | -31% | 1 | 1 | 0% | 697 | 3,022 | +334% | 0 | 0 | — |
case-01 | fail→fail | 11,619 | 3,991 | -66% | 1 | 1 | 0% | 932 | 2,891 | +210% | 0 | 0 | — |
case-02 | fail→fail | 6,208 | 3,728 | -40% | 1 | 1 | 0% | 442 | 3,219 | +628% | 0 | 0 | — |
case-03 | pass→fail | 17,762 | 7,205 | -59% | 1 | 1 | 0% | 2,830 | 3,148 | +11% | 0 | 0 | — |
case-04 | pass→pass | 5,002 | 8,664 | +73% | 1 | 1 | 0% | 1,018 | 4,500 | +342% | 0 | 0 | — |
case-06 | pass→pass | 8,922 | 8,280 | -7% | 1 | 1 | 0% | 1,711 | 4,535 | +165% | 0 | 0 | — |
case-07 | fail→fail | 8,915 | 4,117 | -54% | 1 | 1 | 0% | 1,031 | 3,180 | +208% | 0 | 0 | — |
case-08 | fail→pass | 8,440 | 4,602 | -45% | 1 | 1 | 0% | 1,555 | 3,352 | +116% | 0 | 0 | — |
case-09 | pass→pass | 2,464 | 2,454 | -0% | 1 | 1 | 0% | 419 | 3,064 | +631% | 0 | 0 | — |
case-11 | pass→pass | 5,286 | 2,759 | -48% | 1 | 1 | 0% | 1,044 | 3,145 | +201% | 0 | 0 | — |
case-12 | pass→pass | 2,504 | 3,071 | +23% | 1 | 1 | 0% | 411 | 3,129 | +661% | 0 | 0 | — |
case-13 | fail→pass | 3,429 | 2,935 | -14% | 1 | 1 | 0% | 708 | 3,223 | +355% | 0 | 0 | — |
case-14 | pass→pass | 4,603 | 2,840 | -38% | 1 | 1 | 0% | 774 | 3,222 | +316% | 0 | 0 | — |
case-15 | fail→pass | 12,144 | 2,072 | -83% | 1 | 1 | 0% | 1,366 | 3,072 | +125% | 0 | 0 | — |
case-16 | pass→pass | 11,145 | 4,251 | -62% | 1 | 1 | 0% | 2,212 | 3,483 | +57% | 0 | 0 | — |
case-17 | pass→pass | 2,951 | 1,718 | -42% | 1 | 1 | 0% | 521 | 2,949 | +466% | 0 | 0 | — |
case-18 | fail→pass | 3,644 | 3,178 | -13% | 1 | 1 | 0% | 691 | 3,288 | +376% | 0 | 0 | — |
case-19 | pass→pass | 5,139 | 1,458 | -72% | 1 | 1 | 0% | 806 | 2,912 | +261% | 0 | 0 | — |
case-20 | fail→pass | 6,737 | 1,908 | -72% | 1 | 1 | 0% | 1,159 | 2,993 | +158% | 0 | 0 | — |
case-21 | pass→pass | 2,522 | 2,102 | -17% | 1 | 1 | 0% | 421 | 2,944 | +599% | 0 | 0 | — |
case-22 | fail→pass | 2,600 | 3,186 | +23% | 1 | 1 | 0% | 413 | 3,173 | +668% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +23 percentage points is the difference between those two pass rates over the 20 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.