SlackCLI Documentation
SlackCLI is an unofficial command-line interface for Slack workspaces, built with TypeScript and Bun. It talks to Slack either through a standard Slack app token or through the tokens a signed-in browser session already holds — so you can automate Slack without creating a Slack app.
Disclaimer: not affiliated with, endorsed by, or supported by Slack Technologies. Slack has an official CLI.
User guide
Section titled “User guide”Start here if you want to use SlackCLI.
| Page | What it covers |
|---|---|
| Installation | Homebrew, pre-built binaries, from source, updating |
| Authentication | The four ways to sign in, and which one to pick |
| Workspaces and profiles | Several workspaces, several identities per workspace |
| Slack links and timestamps | Paste a Slack URL anywhere an ID is expected |
| Conversations | List channels and DMs, read history, threads, unreads |
| Messages | Send, reply, edit, react, draft, attach files, Block Kit |
| Search | Search messages, channels, and people |
| Team | Read the workspace’s own name, domain, and ID |
| User groups | List and read user groups, and manage them behind --yes |
| Saved items | Read your “saved for later” list |
| Canvas | List canvases and read them as Markdown |
| Files | Inspect, read, and download Slack-hosted files |
| Emoji | List a workspace’s custom emoji and inspect one |
| Scripting and JSON output | Piping into jq, exit codes, automation patterns |
| Claude Code plugin | The /slackcli skill, so an agent can drive Slack |
| Troubleshooting | Auth failures, permissions, update problems |
Developer documentation
Section titled “Developer documentation”Start here if you want to work on SlackCLI.
| Page | What it covers |
|---|---|
| Development setup | Toolchain, pre-commit hooks, the everyday loop |
| Architecture | How the pieces fit: commands, client, auth, storage |
| Project structure | What each file in src/ is responsible for |
| Testing | Test layout, conventions, and how to write a good one |
| Build and release | Version injection, CI, tagging, Homebrew tap |
| Adding a command | A worked example, end to end |
| Website | The Astro site in web/, and how docs become pages |
Contributing
Section titled “Contributing”Read CONTRIBUTING.md before opening a pull request. In
short: every PR needs a linked GitHub issue, and that issue must carry the
ready-for-pr label. The full policy — which is binding on human and AI
contributors alike — lives in CLAUDE.md.
For security reports, follow SECURITY.md.