Reading and drafting Slack messages with Claude Code
A Slack CLI for following replies from Claude Code. The skill asks for approval before sending by default.
I wanted Claude to read a Slack thread and draft my reply while I stayed in the terminal. The usual routes didn't fit. A bot posts under an app name, and a shared connector may be signed in as someone else. I wanted the message to come from me, in threads I can already see, and nothing to go out until I had read it.
So I wrote claude-slack: a small Node CLI called slk plus a Claude Code skill. It runs on a user token I create for my own account. Setup checks the token and saves it in a local .env file with restricted permissions.
Drafts first
By default, the skill instructs Claude to show a dry run and wait for my approval. The CLI itself sends if called without --dry-run. slk can read a thread, search, look up a person and pull recent conversation history to give a draft context.
I added a writing profile so drafts can follow the sender's style. The default profile is plain; a separate profile can describe patterns learned from sent messages without storing the messages themselves.
I later added an opt-in mode, SLK_SEND=when-sure, that lets Claude send without asking when the skill's conditions are met. Even in that mode the skill asks for approval in cases such as a new recipient, an uncertain fact or a commitment. The public default remains draft-first.
Following replies
I added a listener so Claude could pick up replies after sending. It stores relevant DMs, mentions and followed-thread replies locally. Each Claude session tracks the conversations it has used, so slk inbox can show those first and slk wait can watch for a reply.
Keeping threads smaller
Long threads could fill the context quickly, so the skill starts with the root message and the last 20 replies. Claude can load more when it needs the missing context.
I can now follow a conversation from the terminal and review drafts before they go out. The tool currently handles text, not file uploads.
Install
/plugin marketplace add pravnyadv/claude-plugins
/plugin install slack@pravnyadv
Setup and listener instructions are in claude-slack.