slack-skill
Read, search, and send Slack messages. Use when the user asks to check Slack, send messages, read channels, find conversations, or look up users. Supports multiple workspaces.
When & Why to Use This Skill
This Claude skill provides a robust integration with Slack, allowing users to read, search, and send messages across multiple workspaces directly through the AI interface. It streamlines team collaboration by enabling AI-driven message management, thread tracking, and real-time automated responses, significantly reducing context-switching and improving communication efficiency.
Use Cases
- Efficient Channel Monitoring: Quickly summarize recent discussions or check for specific updates in channels like #engineering or #general without leaving your workflow.
- Cross-Workspace Search: Search for historical data, decisions, or shared files across multiple Slack organizations simultaneously using natural language queries.
- Automated Response Bridge: Deploy a real-time bridge that uses Claude to acknowledge messages, answer common questions, or track thread progress automatically.
- Streamlined Messaging: Send direct messages or post updates to specific channels with built-in safety confirmations to ensure professional and accurate communication.
- Thread Management: Retrieve and reply to specific message threads to maintain context in complex team discussions.
| name | slack-skill |
|---|---|
| description | Read, search, and send Slack messages. Use when the user asks to check Slack, send messages, read channels, find conversations, or look up users. Supports multiple workspaces. |
| allowed-tools | Bash, Read |
Slack Skill - Messaging & Channels
Read, search, and send Slack messages. Access channels and DMs.
CRITICAL: Message Sending Confirmation Required
Before sending ANY message, you MUST get explicit user confirmation.
When the user asks to send a Slack message:
- First, show them the complete message details:
- Workspace (if multiple)
- Channel/User
- Message text (or thread context if replying)
- Ask: "Do you want me to send this message?"
- ONLY run the send command AFTER the user explicitly confirms
- NEVER send a message without this confirmation
First-Time Setup (~3 minutes)
1. Create a Slack App
- Go to Slack API Apps
- Click Create New App → From scratch
- Name it (e.g., "Claude Assistant") and select your workspace
- Click Create App
2. Add Bot Scopes
- In the sidebar, click OAuth & Permissions
- Scroll to Scopes → Bot Token Scopes
- Add these scopes:
channels:history- Read public channel messageschannels:read- List public channelschat:write- Send messagesgroups:history- Read private channel messagesgroups:read- List private channelsim:history- Read DM messagesim:read- List DMsim:write- Send DMsmpim:history- Read group DM messagesmpim:read- List group DMsusers:read- List usersreactions:write- Add/remove emoji reactionssearch:read- Search messages (optional)
3. Install to Workspace
- Scroll up to OAuth Tokens for Your Workspace
- Click Install to Workspace
- Review permissions and click Allow
- Copy the Bot User OAuth Token (starts with
xoxb-)
4. Save Token
Create the config file:
echo '{"default": {"token": "xoxb-YOUR-TOKEN-HERE", "workspace": "your-workspace"}}' > ~/.claude/skills/slack-skill/config.json
5. Add Bot to Channels
The bot must be invited to channels to read/send messages:
- In Slack, go to the channel
- Type
/invite @YourBotName
Commands
List Channels
python3 ~/.claude/skills/slack-skill/slack_skill.py channels [--workspace NAME]
List Users
python3 ~/.claude/skills/slack-skill/slack_skill.py users [--workspace NAME]
Read Channel Messages
python3 ~/.claude/skills/slack-skill/slack_skill.py read CHANNEL [--limit N] [--workspace NAME]
CHANNEL can be:
- Channel name:
#general - Channel ID:
C0XXXXXX - User for DM:
@username
Send Message (Requires Confirmation)
python3 ~/.claude/skills/slack-skill/slack_skill.py send CHANNEL --message "Your message" [--thread-ts TIMESTAMP] [--workspace NAME]
Arguments:
CHANNEL- Channel name (#general), ID, or user (@username)--message/-m- Message text (required)--thread-ts/-t- Reply in thread (optional)--workspace/-w- Use specific workspace
Search Messages
python3 ~/.claude/skills/slack-skill/slack_skill.py search "query" [--limit N] [--workspace NAME]
Get Thread
python3 ~/.claude/skills/slack-skill/slack_skill.py thread CHANNEL THREAD_TS [--workspace NAME]
User Info
python3 ~/.claude/skills/slack-skill/slack_skill.py user USERNAME_OR_ID [--workspace NAME]
Add/Remove Emoji Reaction
python3 ~/.claude/skills/slack-skill/slack_skill.py react CHANNEL TS EMOJI [--remove] [--workspace NAME]
Arguments:
CHANNEL- Channel name or IDTS- Message timestampEMOJI- Emoji name (e.g.,eyes,white_check_mark, or:thumbsup:)--remove/-r- Remove reaction instead of add
Multi-Workspace Support
Add workspaces to ~/.claude/skills/slack-skill/config.json:
{
"default": {
"token": "xoxb-default-token",
"workspace": "main-workspace"
},
"work": {
"token": "xoxb-work-token",
"workspace": "company-workspace"
}
}
Use --workspace work to specify which workspace.
Examples
Check recent messages in #general
python3 ~/.claude/skills/slack-skill/slack_skill.py read "#general" --limit 10
Send a message to a channel
python3 ~/.claude/skills/slack-skill/slack_skill.py send "#engineering" -m "Build completed successfully!"
Reply in a thread
python3 ~/.claude/skills/slack-skill/slack_skill.py send "#general" -m "Thanks!" -t "1234567890.123456"
DM someone
python3 ~/.claude/skills/slack-skill/slack_skill.py send "@john" -m "Hey, quick question..."
Search for messages
python3 ~/.claude/skills/slack-skill/slack_skill.py search "deployment issue" --limit 20
Output
All commands output JSON for easy parsing.
Requirements
pip install slack_sdk
Bridge Mode (Real-time Auto-Respond)
The bridge listens for incoming messages and auto-responds using Claude Code:
python3 ~/.claude/skills/slack-skill/slack_bridge.py --auto
Emoji Status Feedback
When processing messages, the bridge shows status via emoji reactions:
- ⏳
hourglass_flowing_sand- Working on response - ✅
white_check_mark- Response sent - 👀
eyes- Acknowledged (read but not responding) - 🚫
no_entry- User not in whitelist
Thread Reply Handling
The bridge tracks threads it has posted to. When someone replies to a tracked thread:
- Evaluates if a response is needed (questions, confirmations, substantial messages)
- If responding: shows working → responds in thread → shows done
- If not responding: adds 👀 to acknowledge the message was seen
Bridge Setup
Requires Socket Mode. In your Slack app settings:
- Enable Socket Mode under Settings
- Create an App-Level Token with
connections:writescope - Add the token to config as
app_token:
{
"default": {
"token": "xoxb-bot-token",
"app_token": "xapp-app-level-token",
"workspace": "your-workspace"
}
}
Security Notes
- Bot tokens don't expire but can be revoked from Slack app settings
- Token stored locally in
~/.claude/skills/slack-skill/config.json - Revoke access: Your Apps → Select app → Revoke All Tokens