Shared resource library for Slack integration skills. DO NOT load directly - provides common references (setup, API docs, error handling, authentication) and scripts used by slack-connect and individual Slack skills.
Slack Master
This is NOT a user-facing skill. It's a shared resource library referenced by Slack integration skills.
Purpose
Provides shared resources to eliminate duplication across:
slack-connect- Meta-skill for Slack workspace operationsslack-send-message- Send messages to channels/DMsslack-list-channels- List available channelsslack-search-messages- Search message history- And 29 other operation skills...
Instead of loading this skill, users directly invoke the specific skill they need above.
Architecture: DRY Principle
Problem solved: Slack skills would have duplicated content (setup instructions, API docs, auth flow, error handling).
Solution: Extract shared content into slack-master/references/ and slack-master/scripts/, then reference from each skill.
Result: Single source of truth, reduced context per skill.
Authentication Model: User OAuth
This integration uses User OAuth (not Bot OAuth) for team-wide deployment:
┌─────────────────────────────────────────────────────────────┐
│ USER OAUTH (Per-User Authentication) │
├─────────────────────────────────────────────────────────────┤
│ • Each team member authenticates with their own account │
│ • Messages sent appear as the user (not a bot) │
│ • Users only see channels/DMs they have access to │
│ • No cross-user data exposure possible │
│ • Token type: xoxp- (user tokens) │
└─────────────────────────────────────────────────────────────┘
Why User OAuth?
- Messages appear from the actual user, not a bot
- Respects existing channel permissions
- No need for bot installation in every channel
- Each user controls their own access
Shared Resources
All Slack skills reference these resources (progressive disclosure).
references/
setup-guide.md - Complete setup wizard
- Creating a Slack App with User OAuth
- Configuring OAuth scopes
- Getting client ID and secret
- Running the OAuth flow
api-reference.md - Slack API patterns
- Base URL and authentication
- All 32 API endpoints documented
- Request/response examples
- Rate limiting info
error-handling.md - Troubleshooting
- Common errors and solutions
- HTTP error codes
- Token expiration handling
- Scope issues
authentication.md - User OAuth flow
- OAuth 2.0 authorization flow
- Token exchange process
- Token refresh (Slack tokens don't expire normally)
- Per-user token storage
scripts/
Authentication & Configuration
check_slack_config.py - Pre-flight validation
python check_slack_config.py [--json]
| Argument | Required | Default | Description |
|---|---|---|---|
--json |
No | False | Output structured JSON for AI consumption |
Exit codes: 0=configured, 1=partial, 2=not configured
When to Use: Run this FIRST before any Slack operation. Use to validate user token is configured, diagnose authentication issues, or check if OAuth setup is needed.
setup_slack.py - Interactive OAuth wizard
python setup_slack.py
No arguments - runs interactively. Guides through OAuth authorization, gets user token, saves to .env.
When to Use: Use when Slack integration needs initial setup, when check_slack_config.py returns exit code 2, or when user needs to re-authenticate.
slack_client.py - Shared API client
from slack_client import get_client
client = get_client()
result = client.post('chat.postMessage', {'channel': 'C123', 'text': 'Hello'})
Provides:
- Automatic token loading from .env
- Request formatting for Slack API
- Error handling and response parsing
- Rate limit awareness
When to Use: Import this in all Slack operation scripts for consistent API access.
Message Operations
send_message.py - Send message (chat.postMessage)
python send_message.py --channel CHANNEL --text "Message" [--thread-ts TS] [--json]
update_message.py - Update message (chat.update)
python update_message.py --channel CHANNEL --ts TIMESTAMP --text "New text" [--json]
delete_message.py - Delete message (chat.delete)
python delete_message.py --channel CHANNEL --ts TIMESTAMP [--json]
schedule_message.py - Schedule message (chat.scheduleMessage)
python schedule_message.py --channel CHANNEL --text "Message" --post-at UNIX_TS [--json]
Channel Operations
list_channels.py - List channels (conversations.list)
python list_channels.py [--types public,private] [--limit N] [--json]
channel_info.py - Get channel info (conversations.info)
python channel_info.py --channel CHANNEL [--json]
channel_history.py - Get messages (conversations.history)
python channel_history.py --channel CHANNEL [--limit N] [--oldest TS] [--latest TS] [--json]
create_channel.py - Create channel (conversations.create)
python create_channel.py --name NAME [--is-private] [--json]
User Operations
list_users.py - List workspace users (users.list)
python list_users.py [--limit N] [--json]
user_info.py - Get user info (users.info)
python user_info.py --user USER_ID [--json]
File Operations
upload_file.py - Upload file (files.upload)
python upload_file.py --file PATH --channels C1,C2 [--title TITLE] [--json]
list_files.py - List files (files.list)
python list_files.py [--channel CHANNEL] [--user USER] [--limit N] [--json]
Search Operations
search_messages.py - Search messages (search.messages)
python search_messages.py --query "search terms" [--count N] [--json]
search_files.py - Search files (search.files)
python search_files.py --query "search terms" [--count N] [--json]
Intelligent Error Detection Flow
When a Slack skill fails due to missing configuration, the AI should:
Step 1: Run Config Check with JSON Output
python 00-system/skills/slack/slack-master/scripts/check_slack_config.py --json
Step 2: Parse the ai_action Field
The JSON output includes an ai_action field that tells the AI what to do:
| ai_action | What to Do |
|---|---|
proceed_with_operation |
Config OK, continue with the original operation |
run_oauth_setup |
Run: python setup_slack.py to authorize |
check_scopes |
Token exists but missing required scopes |
token_revoked |
User revoked access, need to re-authorize |
Step 3: Help User Fix Issues
If ai_action is run_oauth_setup:
- Tell user: "Slack integration needs setup. Let's authorize your account."
- Run:
python 00-system/skills/slack/slack-master/scripts/setup_slack.py - User will be guided through OAuth flow
- Token saved to
.env - Re-run config check to verify
JSON Output Structure
{
"status": "not_configured",
"exit_code": 2,
"ai_action": "run_oauth_setup",
"missing": [
{"item": "SLACK_USER_TOKEN", "required": true, "location": ".env"}
],
"fix_instructions": [...],
"setup_wizard": "python 00-system/skills/slack/slack-master/scripts/setup_slack.py"
}
How Skills Reference This
Each skill loads shared resources only when needed (progressive disclosure):
slack-connect uses:
check_slack_config.py(validate before any operation)- All API scripts based on user request
- All references as needed
slack-send-message uses:
check_slack_config.py(validate before sending)send_message.py(core functionality)error-handling.md(troubleshooting)
Environment Variables
Required in .env:
# Slack User OAuth Token (starts with xoxp-)
SLACK_USER_TOKEN=xoxp-xxxxxxxxxxxxx
# Optional: For OAuth setup flow
SLACK_CLIENT_ID=your-client-id
SLACK_CLIENT_SECRET=your-client-secret
Required OAuth Scopes (User Token)
channels:read # List public channels
channels:write # Create/manage public channels
channels:history # Read public channel messages
groups:read # List private channels
groups:write # Create/manage private channels
groups:history # Read private channel messages
im:read # List DMs
im:write # Manage DMs
im:history # Read DM messages
mpim:read # List group DMs
mpim:write # Manage group DMs
mpim:history # Read group DM messages
chat:write # Send messages
users:read # List users
users:read.email # Get user emails
files:read # List/download files
files:write # Upload files
reactions:read # Get reactions
reactions:write # Add/remove reactions
pins:read # List pinned items
pins:write # Pin/unpin items
search:read # Search messages/files
reminders:read # List reminders
reminders:write # Create/delete reminders
team:read # Get team info
API Base URL
All API requests go to: https://slack.com/api/
Version: 1.0
Created: 2025-12-17
Status: Production Ready
You Might Also Like
Related Skills

gog
Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
openclaw
orpc-contract-first
Guide for implementing oRPC contract-first API patterns in Dify frontend. Triggers when creating new API contracts, adding service endpoints, integrating TanStack Query with typed contracts, or migrating legacy service calls to oRPC. Use for all API layer work in web/contract and web/service directories.
langgenius

