| name | slack-personal |
| description | Read, send, search, and manage Slack messages and DMs via the slk CLI. Use when the user asks to check Slack, read channels or DMs, send Slack messages, search Slack, check unreads, manage drafts, view saved items, or interact with Slack workspace. Also use for heartbeat Slack checks. Triggers on "check slack", "any slack messages", "send on slack", "slack unreads", "search slack", "slack threads", "draft on slack", "read slack dms", "message on slack". |
| homepage | https://www.npmjs.com/package/slkcli |
| metadata | {"moltbot":{"emoji":"💬","requires":{"bins":["slk"]},"install":[{"id":"npm","kind":"node","package":"slkcli","bins":["slk"],"label":"Install slk (npm)"}],"os":["darwin"]}} |
slk — Slack CLI
Session-based Slack CLI for macOS. Auto-authenticates from the Slack desktop app — no tokens, no OAuth, no app installs. Acts as your user (xoxc- session tokens).
Commands
slk auth
slk channels
slk dms
slk read <channel> [count]
slk read @username [count]
slk read <channel> --threads
slk read <channel> --from 2026-02-01
slk thread <channel> <ts> [count]
slk search <query> [count]
slk users
slk activity
slk unread
slk starred
slk saved [count] [--all]
slk pins <channel>
slk send <channel> <message>
slk react <channel> <ts> <emoji>
slk draft <channel> <message>
slk draft thread <ch> <ts> <message>
slk draft user <user_id> <message>
slk drafts
slk draft drop <draft_id>
Channel accepts name (general), ID (C08A8AQ2AFP), @username for DMs, or user ID (U07RQTFCLUC).
Auth
Automatic — extracts session token from Slack desktop app's LevelDB + decrypts cookie from macOS Keychain.
First run: macOS will show a Keychain dialog asking to allow access to "Slack Safe Storage":
- Allow — one-time access, prompted again next time
- Always Allow — permanent, no future prompts (convenient but any process running as your user can extract credentials silently)
- Deny — blocks access, slk cannot authenticate
Token cache: ~/.local/slk/token-cache.json — auto-validated, auto-refreshed on invalid_auth.
If auth fails (token rotated, Slack logged out):
rm ~/.local/slk/token-cache.json
slk auth
Slack desktop app must be installed and logged in. Does not need to be running if token is cached.
Reading Threads
Threads require a Slack timestamp. Use --ts to get it, then read the thread:
slk read general 10 --ts
slk thread general 1769753479.788949
Agent Workflow Examples
- Heartbeat/cron unread check —
slk unread → slk read <channel> for channels that need attention
- Save & pick up — Human saves threads in Slack ("Save for later"). Agent runs
slk saved during heartbeat, reads full threads with slk thread, summarizes or extracts action items
- Daily channel digest —
slk read <channel> 100 across key channels → compile decisions, open questions, action items → slk send daily-digest "📋 ..."
- Weekly DM summary —
slk read @boss 200 --from 2026-02-01 --threads → extract action items, decisions, context
- Thread monitoring — Watch specific threads for new replies (incidents, PR reviews, decisions)
- Draft for human review —
slk draft <channel> "..." posts to Slack's editor UI for human to review before sending
- Search-driven context —
slk search "deployment process" or slk pins <channel> to pull context before answering questions
Limitations
- macOS only — uses Keychain + Electron storage paths
- Session-based — acts as your user, not a bot. Be mindful of what you send
- Draft drop may fail with
draft_has_conflict if Slack has that conversation open
- Session token expires on logout — keep Slack app running or rely on cached token
Missing Features & Issues
Create PR or Report Issue at: https://github.com/therohitdas/slkcli