skills/integrations/slack/slack-master/SKILL.md
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.
npx skillsauth add beam-ai-team/beam-next-skills slack-masterInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This is NOT a user-facing skill. It's a shared resource library referenced by Slack integration skills.
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 historyInstead of loading this skill, users directly invoke the specific skill they need above.
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.
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?
All Slack skills reference these resources (progressive disclosure).
setup-guide.md - Complete setup wizard
api-reference.md - Slack API patterns
error-handling.md - Troubleshooting
authentication.md - User OAuth flow
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:
When to Use: Import this in all Slack operation scripts for consistent API access.
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]
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]
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]
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_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]
When a Slack skill fails due to missing configuration, the AI should:
python 00-system/skills/slack/slack-master/scripts/check_slack_config.py --json
ai_action FieldThe 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 |
If ai_action is run_oauth_setup:
python 00-system/skills/slack/slack-master/scripts/setup_slack.py.env{
"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"
}
Each skill loads shared resources only when needed (progressive disclosure):
slack-connect uses:
check_slack_config.py (validate before any operation)slack-send-message uses:
check_slack_config.py (validate before sending)send_message.py (core functionality)error-handling.md (troubleshooting)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
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
All API requests go to: https://slack.com/api/
Version: 1.0 Created: 2025-12-17 Status: Production Ready
development
--- name: taste-skill type: skill version: '1.0' author: Leonxlnx (packaged by Zhichao Li) category: general tags: - frontend - design - anti-slop - landing-page updated: '2026-06-11' visibility: public description: Anti-slop frontend skill for landing pages, portfolios, and redesigns. The agent reads the brief, infers the right design direction, and ships interfaces that do not look templated. Real design systems when applicable, audit-first on redesigns, strict pre-flight check. license: MIT.
development
Use when communicating quantitative information in any form — Slack updates, emails, reports, decks, dashboards, landing pages, product UI, public talks. Covers two integrated layers: (1) making numbers semantically meaningful (translation, anchoring, simplification, story-pairing) and (2) showing numbers cleanly (chart vs table vs prose, chart-by-message, pre-attentive emphasis, color discipline, decluttering). Distilled and integrated from *Show Me the Numbers* (Stephen Few) and *Make Numbers Count* (Chip Heath & Karla Starr). Not for raw data analysis or statistics — this is about communication of numbers, not their derivation.
development
Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and reusable design systems or tokens. Also use for bland designs that need to become bolder or more delightful, loud designs that should become quieter, live browser iteration on UI elements, or ambitious visual effects that should feel technically extraordinary. Not for backend-only or non-UI tasks.
tools
Stateful multi-session tutor adapted for Beam — teach a stakeholder to understand, trust, and operate a specific agent, or teach a Solution Engineer a client's business process for delivery. Grounds every lesson in Knowledge Hub sources (real agent graphs, real tasks, transcripts, Linear) before any web resource. Also works for any general topic. Trigger on "teach me", "beam teach", "教我", "onboard <person> on <agent>", "help <stakeholder> understand the agent", "learn this client's process".