| name | slack-connect |
| description | Connect to Slack workspace for messaging and channel management. Load when user mentions 'slack', 'connect slack', 'slack message', 'slack channel', 'send to slack', or any Slack operations. Meta-skill that validates config, discovers workspace, and routes to appropriate operations. |
Slack Connect
Entry point for all Slack operations. Validates configuration, discovers workspace, and routes requests to appropriate skills.
Trigger Phrases
Load this skill when user says:
- "slack" / "connect slack" / "slack connect"
- "send slack message" / "message [channel]"
- "list slack channels" / "slack channels"
- "search slack" / "find in slack"
- "slack users" / "who's on slack"
- Any reference to Slack operations
Quick Reference
First-time setup:
python 00-system/skills/slack/slack-master/scripts/setup_slack.py
Check configuration:
python 00-system/skills/slack/slack-master/scripts/check_slack_config.py --json
Workflow
Step 1: Validate Configuration
Always run first:
python 00-system/skills/slack/slack-master/scripts/check_slack_config.py --json
If ai_action is proceed_with_operation:
- Continue to Step 2
If ai_action is run_oauth_setup:
- Tell user: "Slack needs to be set up. Let me guide you through authorization."
- Run:
python 00-system/skills/slack/slack-master/scripts/setup_slack.py - After setup, re-check config
If ai_action is create_slack_app:
- Guide user through creating a Slack App
- Load:
slack-master/references/setup-guide.md - After app created, run setup wizard
Step 2: Identify User Intent
Parse what the user wants to do:
| User Says | Route To |
|---|---|
| "send message to #general" | Messaging → send_message.py |
| "list channels" | Channels → list_channels.py |
| "get messages from #dev" | Channels → channel_history.py |
| "search for 'project update'" | Search → search_messages.py |
| "list users" | Users → list_users.py |
| "upload file" | Files → upload_file.py |
| "add reaction" | Reactions → (see Phase 7) |
| "pin message" | Pins → (see Phase 9) |
| "set reminder" | Reminders → (see Phase 10) |
Step 3: Execute Operation
Use the appropriate script from slack-master/scripts/:
Messaging Operations
Send message:
python 00-system/skills/slack/slack-master/scripts/send_message.py \
--channel "C1234567890" \
--text "Hello from Nexus!" \
--json
Update message:
python 00-system/skills/slack/slack-master/scripts/update_message.py \
--channel "C1234567890" \
--ts "1234567890.123456" \
--text "Updated message" \
--json
Delete message:
python 00-system/skills/slack/slack-master/scripts/delete_message.py \
--channel "C1234567890" \
--ts "1234567890.123456" \
--json
Channel Operations
List channels:
python 00-system/skills/slack/slack-master/scripts/list_channels.py \
--types "public_channel,private_channel" \
--limit 50 \
--json
Get channel info:
python 00-system/skills/slack/slack-master/scripts/channel_info.py \
--channel "C1234567890" \
--json
Get channel history:
python 00-system/skills/slack/slack-master/scripts/channel_history.py \
--channel "C1234567890" \
--limit 20 \
--json
User Operations
List users:
python 00-system/skills/slack/slack-master/scripts/list_users.py \
--limit 100 \
--json
Get user info:
python 00-system/skills/slack/slack-master/scripts/user_info.py \
--user "U1234567890" \
--json
Search Operations
Search messages:
python 00-system/skills/slack/slack-master/scripts/search_messages.py \
--query "project update" \
--count 20 \
--json
Search files:
python 00-system/skills/slack/slack-master/scripts/search_files.py \
--query "report.pdf" \
--count 10 \
--json
File Operations
Upload file:
python 00-system/skills/slack/slack-master/scripts/upload_file.py \
--file "/path/to/file.pdf" \
--channels "C1234567890" \
--title "My Report" \
--json
List files:
python 00-system/skills/slack/slack-master/scripts/list_files.py \
--channel "C1234567890" \
--limit 20 \
--json
Step 4: Handle Results
Success:
- Display relevant information to user
- Format output nicely (channel names, usernames, etc.)
Error:
- Load
slack-master/references/error-handling.mdif needed - Common errors:
channel_not_found→ Help user find correct channelmissing_scope→ Need to add scope and re-authorizerate_limited→ Wait and retry
Operation Scripts Reference
All scripts are in 00-system/skills/slack/slack-master/scripts/:
Messaging
| Script | API Method | Description |
|---|---|---|
| send_message.py | chat.postMessage | Send a message |
| update_message.py | chat.update | Edit a message |
| delete_message.py | chat.delete | Delete a message |
| schedule_message.py | chat.scheduleMessage | Schedule a message |
Conversations
| Script | API Method | Description |
|---|---|---|
| list_channels.py | conversations.list | List channels |
| channel_info.py | conversations.info | Get channel details |
| channel_history.py | conversations.history | Get messages |
| create_channel.py | conversations.create | Create channel |
Users
| Script | API Method | Description |
|---|---|---|
| list_users.py | users.list | List workspace users |
| user_info.py | users.info | Get user details |
Files
| Script | API Method | Description |
|---|---|---|
| upload_file.py | files.upload | Upload a file |
| list_files.py | files.list | List files |
Search
| Script | API Method | Description |
|---|---|---|
| search_messages.py | search.messages | Search messages |
| search_files.py | search.files | Search files |
Channel Resolution
When user references a channel by name (e.g., "#general"):
First, list channels to find the ID:
python list_channels.py --jsonFind matching channel in response
Use the channel ID (e.g., "C1234567890") for operations
Common Pattern:
# User says: "send message to #general"
# 1. List channels to find ID
# 2. Use ID in send_message.py --channel C123...
User Resolution
When user references someone by name (e.g., "@john"):
List users to find the ID:
python list_users.py --jsonFind matching user in response
Use the user ID (e.g., "U1234567890") for operations
Example Interactions
Send a Message
User: "Send 'Hello team!' to #general"
AI Actions:
- Check config:
check_slack_config.py --json - List channels:
list_channels.py --json - Find #general ID → C1234567890
- Send message:
send_message.py --channel C1234567890 --text "Hello team!" --json - Confirm to user: "Message sent to #general"
Search Slack
User: "Search slack for 'quarterly report'"
AI Actions:
- Check config
- Search:
search_messages.py --query "quarterly report" --json - Display results with channel names and snippets
List My Channels
User: "What slack channels am I in?"
AI Actions:
- Check config
- List:
list_channels.py --types "public_channel,private_channel" --json - Display channel names and member counts
Error Handling
Configuration Errors
| Error | Action |
|---|---|
| No token | Run setup_slack.py |
| Invalid token | Re-authenticate |
| Token revoked | Re-authenticate |
Operation Errors
| Error | Action |
|---|---|
| channel_not_found | List channels, help user find correct one |
| missing_scope | Add scope to app, re-authorize |
| rate_limited | Wait retry_after seconds, then retry |
| not_in_channel | Join channel first |
For detailed error handling:
Load: slack-master/references/error-handling.md
Related Resources
- Setup:
slack-master/references/setup-guide.md - API Reference:
slack-master/references/api-reference.md - Authentication:
slack-master/references/authentication.md - Errors:
slack-master/references/error-handling.md
Version: 1.0 Created: 2025-12-17 Status: Production Ready