| name | slack |
| description | Manage Slack using slk CLI — read messages, search, check unread, set status/DND, and browse activity. Use when user asks about Slack, wants to check messages, set status, or says "/slack". |
| tools | Bash |
Slack (slk CLI)
Interact with Slack from the command line using slk (Slack Gem).
Prerequisites
slk must be installed and authenticated. If any command fails with "command not found", suggest running /setup-slack.
Usage
/slack — Show unread messages across all workspaces
/slack unread — Same as above
/slack messages #channel — Read recent channel messages
/slack search "query" — Search messages
Arguments after /slack map directly to slk subcommands.
Commands
Unread messages
slk unread
slk unread -w oddball
slk unread --muted
slk unread clear
slk unread clear
Read channel/DM messages
slk messages
slk messages
slk messages @alexteal
slk messages https://oddball-io.slack.com/archives/C123/p456
slk messages
slk messages
slk messages
slk messages
slk messages
slk messages
Read threads
Use the messages command with a Slack message URL — it returns the message and its thread:
slk messages https://oddball-io.slack.com/archives/C123ABC/p1234567890
Search messages
Requires user token (xoxc/xoxs), not bot tokens.
slk search "deploy"
slk search "deploy" --in
slk search "vtk" --from @alexteal
slk search "outage" --after 2026-02-01 --before 2026-03-01
slk search "standup" --on 2026-02-28
slk search "PR review" --in
slk search "deploy" -n 50
slk search "deploy" -w oddball
Activity feed
slk activity
slk activity -m
slk activity --mentions
slk activity --reactions
slk activity --threads
slk activity -n 10
Status
slk status
slk status "Working" :laptop:
slk status "In a meeting" :calendar: 1h
slk status "Focus time" :headphones: 2h -p away -d 2h
slk status clear
slk status "OOO" :palm_tree: --all
Presets
slk preset list
slk preset meeting
slk preset focus
slk preset lunch
slk preset meeting --all
Do Not Disturb
slk dnd
slk dnd 1h
slk dnd 30m
slk dnd 1h30m
slk dnd off
slk dnd 1h --all
Emoji search
slk emoji search "thumbs"
slk emoji search "party"
JSON Output
Use --json when you need structured data for follow-up processing:
slk unread --json
slk messages
slk search "deploy" --json
slk activity --json
Workspaces
slk supports multiple workspaces. Use -w <name> to target a specific workspace, or --all for commands that support it. Without -w, slk uses the primary workspace.
slk workspaces
Behavior
- When the user says "/slack" with no arguments, show unread messages
- Present messages in a clean, readable format — show sender, timestamp, and content
- When reading long channels, use
--since to limit to recent messages rather than fetching everything
- For thread context, pass the Slack URL directly to
slk messages
- Use
--json when you need to process output programmatically or extract specific data
- Channel names use
#channel format (not weechat %channel format)
- Weechat logs (
~/.local/share/weechat/logs/) and qmd remain useful for historical/indexed search — prefer slk for live data
- When summarizing unread, group by workspace and highlight channels with the most activity
- If a command fails with an auth error, suggest
slk config setup or /setup-slack