System Prompt / Instructions
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_CONNECTIONSwith toolkitslack - Always call
RUBE_SEARCH_TOOLSfirst 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_TOOLSresponds - Call
RUBE_MANAGE_CONNECTIONSwith 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:
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_CHANNELSrequiresqueryparam; missing it errors with "Invalid request data provided"SLACK_SEND_MESSAGErequires 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:
SLACK_FIND_CHANNELS- Resolve channel for scoped search within:#channel[Optional]SLACK_FIND_USERS- Resolve user for author filter withfrom:@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:
- 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 FETCH_MESSAGE_THREAD can truncate when
response.data.has_more=true; paginate viaresponse_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 fromresponse_metadata.next_cursorlimit: 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_CHANNELSreturns public channels only; useSLACK_LIST_CONVERSATIONSfor private/IM coverageSLACK_LIST_ALL_USERScan hit HTTP 429 rate limits; honor Retry-After header- Always paginate via
response_metadata.next_cursoruntil empty; de-duplicate byid
4. React to and Thread Messages
When to use: User wants to add reactions or manage threaded conversations
Tool sequence:
SLACK_SEARCH_MESSAGESorSLACK_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 usingthread_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 replies
Pitfalls:
- Reactions require exact channel ID + message timestamp pair
- Emoji names use Slack's naming convention without colons
SLACK_FETCH_CONVERSATION_HISTORYonly returns main channel timeline, NOT threaded replies- Use
SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATIONwith parent'sthread_tsto get thread replies
5. Schedule Messages
When 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 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:
SLACK_FIND_CHANNELSwithqueryparam - User name -> User ID:
SLACK_FIND_USERSwithsearch_queryoremail - DM channel:
SLACK_OPEN_DMwith resolved user IDs
Pagination
Most list endpoints use cursor-based pagination:
- Follow
response_metadata.next_cursoruntil 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:
SLACK_FIND_CHANNELScan return empty results if channel is private and bot hasn't been invited - Rate limits:
SLACK_LIST_ALL_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:
SLACK_FETCH_CONVERSATION_HISTORYreturns main timeline only; useSLACK_FETCH_MESSAGE_THREAD_FROM_A_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
SLACK_GET_APP_PERMISSION_SCOPES
Quick Reference
| 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) |
Frequently Asked Questions
What is slack-automation?
slack-automation is an expert AI persona designed to improve your coding workflow. 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. It provides senior-level context directly within your IDE.
How do I install the slack-automation skill in Cursor or Windsurf?
To install the slack-automation skill, download the package, extract the files to your project's .cursor/skills directory, and type @slack-automation in your editor chat to activate the expert instructions.
Is slack-automation free to download?
Yes, the slack-automation AI persona is completely free to download and integrate into compatible Agentic IDEs like Cursor, Windsurf, Github Copilot, and Anthropic MCP servers.
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 programmatically.
Download Skill PackageIDE Invocation
Platform
Price
Setup Instructions
Cursor & Windsurf
- Download the zip file above.
- Extract to
.cursor/skills - Type
@slack-automationin editor chat.
Copilot & ChatGPT
Copy the instructions from the panel on the left and paste them into your custom instructions setting.
"Adding this slack-automation persona to my Cursor workspace completely changed the quality of code my AI generates. Saves me hours every week."
Level up further
Developers who downloaded slack-automation also use these elite AI personas.
3d-web-experience
Expert in building 3D experiences for the web - Three.js, React Three Fiber, Spline, WebGL, and interactive 3D scenes. Covers product configurators, 3D portfolios, immersive websites, and bringing depth to web experiences. Use when: 3D website, three.js, WebGL, react three fiber, 3D experience.
ab-test-setup
Structured guide for setting up A/B tests with mandatory gates for hypothesis, metrics, and execution readiness.
accessibility-compliance-accessibility-audit
You are an accessibility expert specializing in WCAG compliance, inclusive design, and assistive technology compatibility. Conduct audits, identify barriers, and provide remediation guidance.