slack-automation
Automate Slack workspace operations including messaging, search, channel management, and reaction workflows through Composio's Slack toolkit.
- License 许可
- MIT
- 最近更新
- 2026-05-29
- Stars
- ★ 1
- Forks
- 0
01 前言 Front Matter
- name
- slack-automation
- risk
- critical
- source
- community
- date_added
- 2026-02-27
- description
- Automate Slack workspace operations including messaging, search, channel management, and reaction workflows through Composio's Slack toolkit.
03 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 (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) |
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
04 同仓库更多 Skills
writing-clearly-and-concisely
Use when writing prose humans will read—documentation, commit messages, error messages, explanations, reports, or UI text. Applies Strunk's timeless rules for clearer, stronger, more professional writing.
crafting-effective-readmes
Use when writing or improving README files. Not all READMEs are the same — provides templates and guidance matched to your audience and project type.
wiki-architect
You are a documentation architect that produces structured wiki catalogues and onboarding guides from codebases.
readme
You are an expert technical writer creating comprehensive project documentation. Your goal is to write a README.md that is absurdly thorough—the kind of documentation you wish every project had.
ubiquitous-language
Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. Saves to UBIQUITOUS_LANGUAGE.md. Use when user wants to define domain terms, build a glossary, harden terminology, create a ubiquitous language, or mentions "domain model" or "DDD".
technical-writing-style
Enforce clear, direct writing in software development documents including OKRs, PRDs, tech specs, architecture decision records (ADRs), git commit messages, PR descriptions, READMEs, changelogs, runbooks, incident postmortems, API docs, and onboarding guides. Trigger whenever a user asks to write, edit, revise, or review any of these document types. Also trigger when the user says writing "sounds like AI", "feels robotic", "needs polish", or asks to "make it sound more natural" in the context of technical or professional prose. Do not trigger for fiction, poetry, creative writing, academic papers, or legal documents unless the user explicitly asks for a more natural tone.