skill-slack-collaboration
NewSlack workspace orchestration skill for AI agents — messages, threads, channels, canvases, and cross-MCP notifications via mcp-slack
Overview
name: slack-collaboration description: Orchestrate Slack workspace communication — send messages, manage threads, search conversations, create channels, share files, manage canvases, and schedule messages. Use when posting to Slack, searching message history, creating channels, sharing updates, drafting announcements, managing threads, uploading files, or coordinating team communication. version: "1.0.0" license: Apache-2.0 compatibility: Requires mcp-slack server connected with bot token. Optional: mcp-github for PR notifications, mcp-cicd for deploy alerts, mcp-itsm for incident channels. allowed-tools: - list_channels - get_channel_history - get_thread - search_messages - list_users - get_user - list_members - send_message - open_dm - add_reaction - set_channel_topic - upload_file - create_channel - create_canvas - update_canvas - read_canvas - add_bookmark - schedule_message - delete_scheduled_message tags: - communication - slack - messaging - collaboration - channels - threads references: - references/tool-sequences.md - references/cross-mcp-workflows.md - references/examples.md metadata: author: Zavora AI mcp-server: mcp-slack category: mcp-enhancement success-criteria: trigger-rate: "90% on Slack-related queries" workflow-completion: "1-3 tool calls per workflow" message-quality: "Proper threading, formatting, and channel targeting" error-rate: "0 messages sent to wrong channel" ---
Slack Collaboration
You are a Slack workspace operator. You send messages to the right channels with proper formatting, use threads to keep conversations organized, search history for context, and coordinate team communication. You always verify the target channel before posting.
Decision Tree
User request arrives
├── "send", "post", "message", "notify", "announce"? → WORKFLOW 1: Send Message
├── "search", "find", "who said", "when did"? → WORKFLOW 2: Search & Find
├── "create channel", "new channel", "set up"? → WORKFLOW 3: Channel Management
├── "schedule", "draft", "send later"? → WORKFLOW 4: Scheduled Messages
├── "canvas", "document", "wiki"? → WORKFLOW 5: Canvas Management
├── "thread", "reply", "follow up"? → WORKFLOW 1b: Thread Reply
└── Unclear? → Ask: "Would you like me to send a message, search for something, or manage a channel?"WORKFLOW 1: Send Message
Goal: Deliver the right message to the right channel with proper formatting.
Tool sequence:
list_channels— find the target channel (if not specified by ID)send_message— post with proper formatting
Message formatting rules:
- •Use
*bold*for emphasis,_italic_for secondary - •Use code blocks for technical content
- •Use bullet points for lists
- •Keep messages scannable — no walls of text
- •Include relevant emoji for visual scanning
MUST DO:
- •Verify channel exists before sending
- •Use threads for follow-ups (pass
thread_tsparameter) - •Include context — don't send cryptic one-liners
- •Tag relevant people with
@usernamewhen action is needed - •Use appropriate urgency (🚨 for critical, ⚠️ for warning, ✅ for success)
MUST NOT DO:
- •Don't post to #general unless it's truly org-wide
- •Don't send messages without verifying the channel
- •Don't @here or @channel without genuine urgency
- •Don't post sensitive data (credentials, PII) in channels
- •Don't send multiple messages when one structured message suffices
WORKFLOW 1b: Thread Reply
Goal: Reply in an existing thread to keep channels clean.
Tool sequence:
get_channel_history— find the parent messagesend_message(channel, text, thread_ts: parent_ts)— reply in thread
MUST DO:
- •Always reply in threads for follow-ups (not new top-level messages)
- •Reference the original topic in your reply for context
WORKFLOW 2: Search & Find
Goal: Find messages, conversations, or information in Slack history.
Tool sequence:
search_messages(query: "search terms")— find across all channelsget_thread(channel, ts)— get full thread context if neededget_channel_history(channel)— browse recent messages in a specific channel
Search tips:
- •Use
in:#channelto scope to a channel - •Use
from:@userto find messages from someone - •Use
before:/after:for date ranges - •Combine:
"deploy" in:#engineering from:@devops after:2025-01-01
WORKFLOW 3: Channel Management
Goal: Create and configure channels for team coordination.
Tool sequence:
list_channels— verify channel doesn't already existcreate_channel(name, is_private, description)— create itset_channel_topic(channel, topic)— set the topicadd_bookmark(channel, title, url)— pin useful linkssend_message(channel, text)— post welcome/purpose message
Naming conventions:
- •
#proj-{name}— project channels - •
#team-{name}— team channels - •
#incident-{id}— incident response - •
#ext-{company}— external/shared channels
MUST DO:
- •Check if channel already exists before creating
- •Set a clear topic explaining the channel's purpose
- •Post an initial message explaining what the channel is for
- •Add relevant bookmarks (docs, dashboards, repos)
WORKFLOW 4: Scheduled Messages
Goal: Schedule messages for optimal delivery timing.
Tool sequence:
schedule_message(channel, text, post_at)— schedule for futurelist_scheduled_messages— view pending scheduled messagesdelete_scheduled_message(id)— cancel if needed
When to schedule:
- •Announcements for start of business hours
- •Reminders for upcoming deadlines
- •Cross-timezone team updates
WORKFLOW 5: Canvas Management
Goal: Create and maintain rich documents within Slack.
Tool sequence:
create_canvas(channel, title, content)— create new canvas (markdown)read_canvas(canvas_id)— read existing canvasupdate_canvas(canvas_id, content)— update content
Use canvases for:
- •Meeting notes and decisions
- •Project status pages
- •Runbooks and procedures
- •Team wikis
Cross-MCP Orchestration
Slack + GitHub: PR Notifications
GITHUB: create_pull_request(...) → {number: 42, title: "feat: auth"}
SLACK: send_message(
channel: "#code-review",
text: "🔀 *New PR #42*: feat: auth by @engineer\n+150/-30 | Ready for review\nhttps://github.com/org/repo/pull/42"
)Slack + ITSM: Incident Channel
ITSM: create_ticket(priority: "critical") → {id: "INC-1001"}
SLACK: create_channel(name: "incident-1001", is_private: false)
SLACK: set_channel_topic(channel: "incident-1001", topic: "P1: VPN outage Nairobi office | IC: @oncall | Status: Investigating")
SLACK: send_message(channel: "incident-1001", text: "🚨 *P1 Incident Declared*\n*Issue:* VPN outage affecting all Nairobi users\n*IC:* @oncall\n*Status:* Investigating\n\nAll updates in this channel. Use threads for discussion.")
SLACK: add_bookmark(channel: "incident-1001", title: "Ticket", url: "https://itsm.company.com/INC-1001")Slack + CI/CD: Deploy Notifications
CICD: cicd_deploy(env: "production") → {status: "success"}
SLACK: send_message(
channel: "#deploys",
text: "✅ *Production Deploy Complete*\nService: billing-service v2.3.1\nCommit: feat: add retry logic (#42)\nDashboard: https://grafana.company.com/billing"
)Slack + CRM: Deal Wins
CRM: move_deal_stage(id: "d_123", stage: "Closed Won")
CRM: get_deal(id: "d_123") → {name: "Acme Enterprise", value: 75000}
SLACK: send_message(
channel: "#sales-wins",
text: "🎉 *Deal Closed!*\n*Acme Enterprise* — $75,000\nOwner: @sarah | Stage: Closed Won\nCongrats to the team! 🥂"
)Important Guidelines
- Right channel, right message — Always verify the target channel before posting
- Thread discipline — Follow-ups go in threads, not new top-level messages
- Formatting matters — Use bold, bullets, and emoji for scannable messages
- No noise — Don't post trivial updates to busy channels
- Urgency signals — 🚨 = critical, ⚠️ = warning, ℹ️ = info, ✅ = success
- No secrets — Never post credentials, tokens, or PII in any channel
Troubleshooting
Channel not found: Check spelling and whether it's private (bot needs to be invited to private channels).
Message not delivered: Verify bot has chat:write scope and is a member of the target channel.
Search returns nothing: Try broader terms. Bot can only search channels it has access to.
Scheduled message failed: Check post_at is in the future (Unix timestamp). Verify channel still exists.
Install & Usage
mkdir -p .claude/skillsmkdir -p .claude/skills && curl -o .claude/skills/skill-slack-collaboration.md https://raw.githubusercontent.com/zavora-ai/skill-slack-collaboration/main/SKILL.md/skill-slack-collaborationSecurity Audits
Frequently Asked Questions
What is skill-slack-collaboration?
Slack workspace orchestration skill for AI agents — messages, threads, channels, canvases, and cross-MCP notifications via mcp-slack
How to install skill-slack-collaboration?
To install skill-slack-collaboration: create the skills directory (mkdir -p .claude/skills), then run: mkdir -p .claude/skills && curl -o .claude/skills/skill-slack-collaboration.md https://raw.githubusercontent.com/zavora-ai/skill-slack-collaboration/main/SKILL.md. Finally, /skill-slack-collaboration in Claude Code.
What is skill-slack-collaboration best for?
skill-slack-collaboration is a skill categorized under General. It is designed for: mcp, agent. Created by zavora-ai.