| name | slack-automation |
| description | Automate Slack messaging, channel management, search, reactions, and threads via Rube MCP (Composio). Send messages, search conversations, manage channels/users, and react to messages programmatica... |
| category | AI & Agents |
| source | antigravity |
| tags | ["react","markdown","api","mcp","ai","automation","workflow","rag","cro"] |
| url | https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/slack-automation |
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 (RUBE_SEARCH_TOOLS available)
- Active Slack connection via
RUBE_MANAGE_CONNECTIONS with toolkit slack
- Always call
RUBE_SEARCH_TOOLS first 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
RUBE_SEARCH_TOOLS responds
- Call
RUBE_MANAGE_CONNECTIONS with toolkit slack
- 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:
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 thread
blocks: 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/attachments
- Invalid block payloads return error=invalid_blocks (max 50 blocks)
- Replies become top-level posts if
thread_ts is omitted
- Persist
response.data.channel and response.data.message.ts from 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:
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=true
sort: 'score' (relevance) or 'timestamp' (chronological)
sort_dir: 'asc' or 'desc'
Pitfalls:
- Validation fails if
query is missing/empty
ok=true can still mean no hits (response.data.messages.total=0)
- Matches are under
response.data.messages.matches (sometimes also response.data_preview.messages.matches)
match.text may be empty/truncated; key info can appear in matches[].attachments[]
- Thread expansion via FETCH_MESSAGE_THREAD can truncate when
response.data.has_more=true; paginate via response_metadata.next_cursor
3. Manage Channels and Users
When 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_cursor
limit: Results per page (default varies; set explicitly for large workspaces)
types: Channel types filter ('public_channel', 'private_channel', 'im', 'mpim')
Pitfalls:
- Workspace metadata is nested under
response.data.team, not top-level
SLACK_LIST_ALL_CHANNELS returns public channels only; use SLACK_LIST_CONVERSATIONS for private/IM coverage
SLACK_LIST_ALL_USERS can hit HTTP 429 rate limits; honor Retry-After header
- Always paginate via
response_metadata.next_cursor until empty; de-duplicate by id
4. React to and Thread Messages
When to use: User wants to add reactions or manage threaded conversations
Tool sequence:
SLACK_SEARCH_MESSAGES or