Rei-skills slack-automation
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...
git clone https://github.com/rootcastleco/rei-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/rootcastleco/rei-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/slack-automation" ~/.claude/skills/rootcastleco-rei-skills-slack-automation && rm -rf "$T"
skills/slack-automation/SKILL.md⚠️ AUTHORIZED USE ONLY — This skill is intended for authorized security professionals only. Use only against systems you own or have explicit written permission to test. Unauthorized use may violate applicable laws.
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
with toolkitRUBE_MANAGE_CONNECTIONSslack - Always call
first to get current tool schemasRUBE_SEARCH_TOOLS
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
respondsRUBE_SEARCH_TOOLS - Call
with toolkitRUBE_MANAGE_CONNECTIONSslack - 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:
- Resolve channel name to channel ID [Prerequisite]SLACK_FIND_CHANNELS
- Fallback if FIND_CHANNELS returns empty/ambiguous results [Fallback]SLACK_LIST_ALL_CHANNELS
- Resolve user for DMs or @mentions [Optional]SLACK_FIND_USERS
- Open/reuse a DM channel if messaging a user directly [Optional]SLACK_OPEN_DM
- Post the message with resolved channel ID [Required]SLACK_SEND_MESSAGE
- Edit the posted message if corrections needed [Optional]SLACK_UPDATES_A_SLACK_MESSAGE
Key parameters:
: Channel ID or name (without '#' prefix)channel
: Preferred field for formatted messages (supports headers, bold, italic, code blocks)markdown_text
: Raw text fallback (deprecated in favor of markdown_text)text
: Timestamp of parent message to reply in a threadthread_ts
: Block Kit layout blocks (deprecated, use markdown_text)blocks
Pitfalls:
requiresSLACK_FIND_CHANNELS
param; missing it errors with "Invalid request data provided"query
requires valid channel plus one of markdown_text/text/blocks/attachmentsSLACK_SEND_MESSAGE- Invalid block payloads return error=invalid_blocks (max 50 blocks)
- Replies become top-level posts if
is omittedthread_ts - Persist
andresponse.data.channel
from SEND_MESSAGE for edit/thread operationsresponse.data.message.ts
2. Search Messages and Conversations
When to use: User wants to find specific messages across the workspace
Tool sequence:
- Resolve channel for scoped search withSLACK_FIND_CHANNELS
[Optional]in:#channel
- Resolve user for author filter withSLACK_FIND_USERS
[Optional]from:@user
- Run keyword search across accessible conversations [Required]SLACK_SEARCH_MESSAGES
- Expand threads for relevant hits [Required]SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION
Key parameters:
: Search string supporting modifiers (query
,in:#channel
,from:@user
,before:YYYY-MM-DD
,after:YYYY-MM-DD
,has:link
)has:file
: Results per page (max 100), or total with auto_paginate=truecount
: 'score' (relevance) or 'timestamp' (chronological)sort
: 'asc' or 'desc'sort_dir
Pitfalls:
- Validation fails if
is missing/emptyquery
can still mean no hits (ok=true
)response.data.messages.total=0- Matches are under
(sometimes alsoresponse.data.messages.matches
)response.data_preview.messages.matches
may be empty/truncated; key info can appear inmatch.textmatches[].attachments[]- Thread expansion via FETCH_MESSAGE_THREAD can truncate when
; paginate viaresponse.data.has_more=trueresponse_metadata.next_cursor
3. Manage Channels and Users
When to use: User wants to list channels, users, or workspace info
Tool sequence:
- Validate connectivity and get workspace identity [Required]SLACK_FETCH_TEAM_INFO
- Enumerate public channels [Required]SLACK_LIST_ALL_CHANNELS
- Include private channels and DMs [Optional]SLACK_LIST_CONVERSATIONS
- List workspace members [Required]SLACK_LIST_ALL_USERS
- Get detailed channel metadata [Optional]SLACK_RETRIEVE_CONVERSATION_INFORMATION
- List user groups [Optional]SLACK_LIST_USER_GROUPS_FOR_TEAM_WITH_OPTIONS
Key parameters:
: Pagination cursor fromcursorresponse_metadata.next_cursor
: Results per page (default varies; set explicitly for large workspaces)limit
: Channel types filter ('public_channel', 'private_channel', 'im', 'mpim')types
Pitfalls:
- Workspace metadata is nested under
, not top-levelresponse.data.team
returns public channels only; useSLACK_LIST_ALL_CHANNELS
for private/IM coverageSLACK_LIST_CONVERSATIONS
can hit HTTP 429 rate limits; honor Retry-After headerSLACK_LIST_ALL_USERS- Always paginate via
until empty; de-duplicate byresponse_metadata.next_cursorid
4. React to and Thread Messages
When to use: User wants to add reactions or manage threaded conversations
Tool sequence:
orSLACK_SEARCH_MESSAGES
- Find the target message [Prerequisite]SLACK_FETCH_CONVERSATION_HISTORY
- Add an emoji reaction [Required]SLACK_ADD_REACTION_TO_AN_ITEM
- List reactions on a message [Optional]SLACK_FETCH_ITEM_REACTIONS
- Remove a reaction [Optional]SLACK_REMOVE_REACTION_FROM_ITEM
- Reply in thread usingSLACK_SEND_MESSAGE
[Optional]thread_ts
- Read full thread [Optional]SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION
Key parameters:
: Channel ID where the message liveschannel
/timestamp
: Message timestamp (unique identifier like '1234567890.123456')ts
: Emoji name without colons (e.g., 'thumbsup', 'wave::skin-tone-3')name
: Parent message timestamp for threaded repliesthread_ts
Pitfalls:
- Reactions require exact channel ID + message timestamp pair
- Emoji names use Slack's naming convention without colons
only returns main channel timeline, NOT threaded repliesSLACK_FETCH_CONVERSATION_HISTORY- Use
with parent'sSLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION
to get thread repliesthread_ts
5. Schedule Messages
When to use: User wants to schedule a message for future delivery
Tool sequence:
- Resolve channel ID [Prerequisite]SLACK_FIND_CHANNELS
- Schedule the message withSLACK_SCHEDULE_MESSAGE
timestamp [Required]post_at
Key parameters:
: Resolved channel IDchannel
: Unix timestamp for delivery (up to 120 days in advance)post_at
/text
: Message contentblocks
Pitfalls:
- Scheduling is limited to 120 days in advance
must be a Unix timestamp, not ISO 8601post_at
Common Patterns
ID Resolution
Always resolve display names to IDs before operations:
- Channel name -> Channel ID:
withSLACK_FIND_CHANNELS
paramquery - User name -> User ID:
withSLACK_FIND_USERS
orsearch_queryemail - DM channel:
with resolved user IDsSLACK_OPEN_DM
Pagination
Most list endpoints use cursor-based pagination:
- Follow
until emptyresponse_metadata.next_cursor - Set explicit
values (e.g., 100-200) for reliable paginglimit - De-duplicate results by
across pagesid
Message Formatting
- Prefer
overmarkdown_text
ortext
for formatted messagesblocks - Use
format to mention users (not @username)<@USER_ID> - Use
for line breaks in markdown_text\n
Known Pitfalls
- Channel resolution:
can return empty results if channel is private and bot hasn't been invitedSLACK_FIND_CHANNELS - Rate limits:
and other list endpoints can hit HTTP 429; honor Retry-After headerSLACK_LIST_ALL_USERS - Nested responses: Results may be nested under
in wrapped executionsresponse.data.results[0].response.data - Thread vs channel:
returns main timeline only; useSLACK_FETCH_CONVERSATION_HISTORY
for thread repliesSLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION - Message editing: Requires both
and original messagechannel
; persist these from SEND_MESSAGE responsets - Search delays: Recently posted messages may not appear in search results immediately
- Scope limitations: Missing OAuth scopes can cause 403 errors; check with
SLACK_GET_APP_PERMISSION_SCOPES
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| Find channels | | |
| List all channels | | , , |
| Send message | | , |
| Edit message | | , , |
| Search messages | | , , |
| Get thread | | , |
| Add reaction | | , , |
| Find users | | or |
| List users | | , |
| Open DM | | user IDs |
| Schedule message | | , , |
| Get channel info | | channel ID |
| Channel history | | , , |
| Workspace info | | (none) |
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
🏰 Rei Skills — Curated by Rootcastle Engineering & Innovation | Batuhan Ayrıbaş
Engineering Beyond Boundaries | admin@rootcastle.com