From superpowers-lab
Send, read Slack messages, list channels, and test integrations using slackcli CLI tool via Bash commands.
npx claudepluginhub obra/superpowers-marketplace --plugin superpowers-labThis skill is limited to using the following tools:
Send and read Slack messages from the command line using `slackcli` (shaharia-lab/slackcli).
Interact with Slack workspaces via CLI using bot tokens: send messages, list/read channels, manage reactions, and handle multi-bot auth. For CI/CD and server-side bots.
Explores and searches Slack messages, channels, and threads via Node.js CLI commands. Use to search conversations, read channel history, get thread replies, or list channels.
Read, send, search, and manage Slack messages via slk CLI. Handles channels, threads, unreads, drafts, activity, stars, and pins. Activates on Slack check, send, search, unread requests.
Share bugs, ideas, or general feedback.
Send and read Slack messages from the command line using slackcli (shaharia-lab/slackcli).
Download the binary:
curl -sL -o /usr/local/bin/slackcli \
"https://github.com/shaharia-lab/slackcli/releases/download/v0.1.1/slackcli-linux"
chmod +x /usr/local/bin/slackcli
macOS (Intel): replace slackcli-linux with slackcli-macos
macOS (Apple Silicon): replace with slackcli-macos-arm64
slackcli uses browser session tokens (xoxc + xoxd) - no Slack app creation required.
./scripts/extract-tokens <workspace-url>
This walks the user through extracting tokens from browser DevTools.
slackcli auth login-browser \
--xoxd="xoxd-..." \
--xoxc="xoxc-..." \
--workspace-url=https://your-workspace.slack.com
slackcli auth list
Use slackcli conversations list to discover channels and their IDs:
# List all channels
slackcli conversations list
# Filter output
slackcli conversations list | grep -i "channel-name"
# Send to a channel (use channel ID from conversations list)
slackcli messages send --recipient-id=C0XXXXXXXX --message="Hello from CLI"
# Send to a DM (use user's DM channel ID)
slackcli messages send --recipient-id=D0XXXXXXXX --message="Hey"
# Reply in a thread
slackcli messages send --recipient-id=C0XXXXXXXX --message="Thread reply" --thread-ts=1769756026.624319
The --recipient-id is always a channel ID (C...) or DM channel ID (D...).
# Read last N messages from a channel
slackcli conversations read C0XXXXXXXX --limit=10
# Read as JSON (for parsing)
slackcli conversations read C0XXXXXXXX --limit=10 --json
# Read a thread
slackcli conversations read C0XXXXXXXX --thread-ts=1769756026.624319
slackcli conversations list
Returns all public channels, private channels, and DMs with their IDs.
To verify a bot or integration posted a message correctly:
# Read the channel, check for the expected message
slackcli conversations read CHANNEL_ID --limit=5 --json | jq '.messages[] | select(.text | contains("expected text"))'
To send a test message and verify the round-trip:
# Send
slackcli messages send --recipient-id=CHANNEL_ID --message="integration test $(date +%s)"
# Read back
slackcli conversations read CHANNEL_ID --limit=1 --json
slackcli supports multiple workspaces. Run the auth flow for each workspace you need:
# Add first workspace
./scripts/extract-tokens https://workspace-one.slack.com
# Add second workspace
./scripts/extract-tokens https://workspace-two.slack.com
# List all authenticated workspaces
slackcli auth list
When sending messages, slackcli automatically routes to the correct workspace based on the channel ID.
~/.config/slackcli/workspaces.json