SKILL.md
Slack Automation via Rube MCP
Automate Slack workspace operations including messaging, search, channel management, and reaction workflows through Composio's Slack toolkit.
Prerequisites
- Rube MCP must be connected (RUBESEARCHTOOLS available)
- Active Slack connection via
RUBEMANAGECONNECTIONSwith toolkitslack - Always call
RUBESEARCHTOOLSfirst to get current tool schemas
Setup
Get 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.
- Verify Rube MCP is available by confirming
RUBESEARCHTOOLSresponds - Call
RUBEMANAGECONNECTIONSwith toolkitslack - If connection is not ACTIVE, follow the returned auth link to complete Slack OAuth
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. Send Messages to Channels
When to use: User wants to post a message to a Slack channel or DM
Tool sequence:
SLACKFINDCHANNELS- Resolve channel name to channel ID [Prerequisite]SLACKLISTALLCHANNELS- Fallback if FINDCHANNELS returns empty/ambiguous results [Fallback]SLACKFINDUSERS- Resolve user for DMs or @mentions [Optional]SLACKOPENDM- Open/reuse a DM channel if messaging a user directly [Optional]SLACKSENDMESSAGE- Post the message with resolved channel ID [Required]SLACKUPDATESASLACKMESSAGE- 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:
SLACKFINDCHANNELSrequiresqueryparam; missing it errors with "Invalid request data provided"SLACKSENDMESSAGErequires valid channel plus one of markdown_text/text/blocks/attachments- Invalid block payloads return error=invalid_blocks (max 50 blocks)
- Replies become top-level posts if
thread_tsis omitted - Persist
response.data.channelandresponse.data.message.tsfrom SEND_MESSAGE for edit/thread operations
2. Search Messages and Conversations
When to use: User wants to find specific messages across the workspace
Tool sequence:
SLACKFINDCHANNELS- Resolve channel for scoped search within:#channel[Optional]SLACKFINDUSERS- Resolve user for author filter withfrom:@user[Optional]SLACKSEARCHMESSAGES- Run keyword search across accessible conversations [Required]SLACKFETCHMESSAGETHREADFROMACONVERSATION- 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:
- Validation fails if
queryis missing/empty ok=truecan still mean no hits (response.data.messages.total=0)- Matches are under
response.data.messages.matches(sometimes alsoresponse.data_preview.messages.matches) match.textmay be empty/truncated; key info can appear inmatches[].attachments[]- Thread expansion via FETCHMESSAGETHREAD can truncate when
response.data.hasmore=true; paginate viaresponsemetadata.next_cursor
3. Manage Channels and Users
When to use: User wants to list channels, users, or workspace info
Tool sequence:
SLACKFETCHTEAM_INFO- Validate connectivity and get workspace identity [Required]SLACKLISTALL_CHANNELS- Enumerate public channels [Required]SLACKLISTCONVERSATIONS- Include private channels and DMs [Optional]SLACKLISTALL_USERS- List workspace members [Required]SLACKRETRIEVECONVERSATION_INFORMATION- Get detailed channel metadata [Optional]SLACKLISTUSERGROUPSFORTEAMWITH_OPTIONS- List user groups [Optional]
Key parameters:
cursor: Pagination cursor fromresponsemetadata.nextcursorlimit: Results per page (default varies; set explicitly for large workspaces)types: Channel types filter ('publicchannel', 'privatechannel', 'im', 'mpim')
Pitfalls:
- Workspace metadata is nested under
response.data.team, not top-level SLACKLISTALLCHANNELSreturns public channels only; useSLACKLIST_CONVERSATIONSfor private/IM coverageSLACKLISTALL_USERScan hit HTTP 429 rate limits; honor Retry-After header- Always paginate via
responsemetadata.nextcursoruntil empty; de-duplicate byid
4. React to and Thread Messages
When to use: User wants to add reactions or manage threaded conversations
Tool sequence:
SLACKSEARCHMESSAGESorSLACKFETCHCONVERSATION_HISTORY- Find the target message [Prerequisite]SLACKADDREACTIONTOAN_ITEM- Add an emoji reaction [Required]SLACKFETCHITEM_REACTIONS- List reactions on a message [Optional]SLACKREMOVEREACTIONFROMITEM- Remove a reaction [Optional]SLACKSENDMESSAGE- Reply in thread usingthread_ts[Optional]SLACKFETCHMESSAGETHREADFROMACONVERSATION- 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 replies
Pitfalls:
- Reactions require exact channel ID + message timestamp pair
- Emoji names use Slack's naming convention without colons
SLACKFETCHCONVERSATION_HISTORYonly returns main channel timeline, NOT threaded replies- Use
SLACKFETCHMESSAGETHREADFROMACONVERSATIONwith parent'sthread_tsto get thread replies
5. Schedule Messages
When to use: User wants to schedule a message for future delivery
Tool sequence:
SLACKFINDCHANNELS- Resolve channel ID [Prerequisite]SLACKSCHEDULEMESSAGE- Schedule the message withpost_attimestamp [Required]
Key parameters:
channel: Resolved channel IDpost_at: Unix timestamp for delivery (up to 120 days in advance)text/blocks: Message content
Pitfalls:
- Scheduling is limited to 120 days in advance
post_atmust be a Unix timestamp, not ISO 8601
Common Patterns
ID Resolution
Always resolve display names to IDs before operations:
- Channel name -> Channel ID:
SLACKFINDCHANNELSwithqueryparam - User name -> User ID:
SLACKFINDUSERSwithsearch_queryoremail - DM channel:
SLACKOPENDMwith resolved user IDs
Pagination
Most list endpoints use cursor-based pagination:
- Follow
responsemetadata.nextcursoruntil empty - Set explicit
limitvalues (e.g., 100-200) for reliable paging - De-duplicate results by
idacross pages
Message Formatting
- Prefer
markdown_textovertextorblocksfor formatted messages - Use
<@USER_ID>format to mention users (not @username) - Use
\nfor line breaks in markdown_text
Known Pitfalls
- Channel resolution:
SLACKFINDCHANNELScan return empty results if channel is private and bot hasn't been invited - Rate limits:
SLACKLISTALL_USERSand other list endpoints can hit HTTP 429; honor Retry-After header - Nested responses: Results may be nested under
response.data.results[0].response.datain wrapped executions - Thread vs channel:
SLACKFETCHCONVERSATIONHISTORYreturns main timeline only; useSLACKFETCHMESSAGETHREADFROMA_CONVERSATIONfor thread replies - Message editing: Requires both
channeland original messagets; persist these from SEND_MESSAGE response - Search delays: Recently posted messages may not appear in search results immediately
- Scope limitations: Missing OAuth scopes can cause 403 errors; check with
SLACKGETAPPPERMISSIONSCOPES
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| Find channels | SLACKFINDCHANNELS |
query |
| List all channels | SLACKLISTALL_CHANNELS |
limit, cursor, types |
| Send message | SLACKSENDMESSAGE |
channel, markdown_text |
| Edit message | SLACKUPDATESASLACKMESSAGE |
channel, ts, markdown_text |
| Search messages | SLACKSEARCHMESSAGES |
query, count, sort |
| Get thread | SLACKFETCHMESSAGETHREADFROMACONVERSATION |
channel, ts |
| Add reaction | SLACKADDREACTIONTOAN_ITEM |
channel, name, timestamp |
| Find users | SLACKFINDUSERS |
search_query or email |
| List users | SLACKLISTALL_USERS |
limit, cursor |
| Open DM | SLACKOPENDM |
user IDs |
| Schedule message | SLACKSCHEDULEMESSAGE |
channel, post_at, text |
| Get channel info | SLACKRETRIEVECONVERSATION_INFORMATION |
channel ID |
| Channel history | SLACKFETCHCONVERSATION_HISTORY |
channel, oldest, latest |
| Workspace info | SLACKFETCHTEAM_INFO |
(none) |
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Example
User request:
Automate Slack workspace operations including messaging, search, channel management, and reaction workflows through Composio's Slack toolkit.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.