Use when asked to send or read Slack messages, check Slack channels, test Slack integrations, or interact with a Slack workspace from the command line.
From interslacknpx claudepluginhub mistakeknot/interagency-marketplace --plugin interslackThis skill is limited to using the following tools:
SKILL-compact.mdscripts/extract-tokensGuides browser automation with Playwright, Puppeteer, Selenium for e2e testing and scraping. Teaches reliable selectors, auto-waits, isolation to fix flaky tests.
Provides checklists to review code for functionality, quality, security, performance, tests, and maintainability. Use for PRs, audits, team standards, and developer training.
Enforces A/B test setup with gates for hypothesis locking, metrics definition, sample size calculation, assumptions checks, and execution readiness before implementation.
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