{"id":35913499,"url":"https://github.com/shaharia-lab/slackcli","last_synced_at":"2026-05-25T00:15:26.389Z","repository":{"id":323364149,"uuid":"1092981175","full_name":"shaharia-lab/slackcli","owner":"shaharia-lab","description":"Slack CLI - Command-line tool for interacting with Slack workspaces and channels. AI-friendly with structured output formats (JSON, table, text) designed for easy integration with AI tools and automation workflows.","archived":false,"fork":false,"pushed_at":"2025-12-02T23:18:40.000Z","size":51,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-05T23:42:23.369Z","etag":null,"topics":["ai-tools","automation","cli","golang","slack","slack-api","slack-cli"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shaharia-lab.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["shaharia-lab"]}},"created_at":"2025-11-09T17:21:54.000Z","updated_at":"2025-12-05T13:26:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/shaharia-lab/slackcli","commit_stats":null,"previous_names":["shaharia-lab/slackcli"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/shaharia-lab/slackcli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shaharia-lab%2Fslackcli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shaharia-lab%2Fslackcli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shaharia-lab%2Fslackcli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shaharia-lab%2Fslackcli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shaharia-lab","download_url":"https://codeload.github.com/shaharia-lab/slackcli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shaharia-lab%2Fslackcli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28918235,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T19:10:10.838Z","status":"ssl_error","status_checked_at":"2026-01-30T19:06:40.573Z","response_time":66,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-tools","automation","cli","golang","slack","slack-api","slack-cli"],"created_at":"2026-01-10T03:53:25.269Z","updated_at":"2026-05-25T00:15:26.372Z","avatar_url":"https://github.com/shaharia-lab.png","language":"TypeScript","funding_links":["https://github.com/sponsors/shaharia-lab"],"categories":[],"sub_categories":[],"readme":"# SlackCLI\n\n![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/shaharia-lab/slackcli/total)\n[![Release](https://img.shields.io/github/v/release/shaharia-lab/slackcli)](https://github.com/shaharia-lab/slackcli/releases)\n[![Stars](https://img.shields.io/github/stars/shaharia-lab/slackcli)](https://github.com/shaharia-lab/slackcli/stargazers)\n[![License](https://img.shields.io/github/license/shaharia-lab/slackcli)](https://github.com/shaharia-lab/slackcli/blob/main/LICENSE)\n[![Last Commit](https://img.shields.io/github/last-commit/shaharia-lab/slackcli)](https://github.com/shaharia-lab/slackcli/commits/main)\n\n\u003e **Disclaimer:** This is an unofficial, open-source CLI tool for interacting with Slack. It is not affiliated with, endorsed by, or supported by Slack Technologies. Slack has an official CLI — see the [Slack CLI documentation](https://docs.slack.dev/tools/slack-cli/) for the officially supported tooling.\n\nA fast, developer-friendly command-line interface tool for interacting with Slack workspaces. Built with TypeScript and Bun, it enables AI agents, automation tools, and developers to access Slack functionality directly from the terminal.\n\n## Features\n\n- 🔐 **Dual Authentication Support**: Standard Slack tokens (xoxb/xoxp) or browser tokens (xoxd/xoxc)\n- 🎯 **Easy Token Extraction**: Automatically parse tokens from browser cURL commands\n- 🏢 **Multi-Workspace Management**: Manage multiple Slack workspaces with ease\n- 💬 **Conversation Management**: List channels, read messages, send messages\n- 🎉 **Message Reactions**: Add emoji reactions to messages programmatically\n- 📄 **Canvas Support**: List and read Slack canvas documents as markdown\n- 🚀 **Fast \u0026 Lightweight**: Built with Bun for blazing fast performance\n- 🔄 **Auto-Update**: Built-in self-update mechanism\n- 🎨 **Beautiful Output**: Colorful, user-friendly terminal output\n\n## Installation\n\n### Homebrew (macOS and Linux)\n\n```bash\nbrew tap shaharia-lab/tap\nbrew install slackcli\n```\n\nTo upgrade to the latest version:\n\n```bash\nbrew upgrade slackcli\n```\n\n### Pre-built Binaries\n\n#### Linux (x86_64)\n```bash\ncurl -L https://github.com/shaharia-lab/slackcli/releases/latest/download/slackcli-linux -o slackcli\nchmod +x slackcli\nmkdir -p ~/.local/bin \u0026\u0026 mv slackcli ~/.local/bin/\n```\n\n#### Linux (arm64)\n```bash\ncurl -L https://github.com/shaharia-lab/slackcli/releases/latest/download/slackcli-linux-arm64 -o slackcli\nchmod +x slackcli\nmkdir -p ~/.local/bin \u0026\u0026 mv slackcli ~/.local/bin/\n```\n\n#### macOS (Intel)\n```bash\ncurl -L https://github.com/shaharia-lab/slackcli/releases/latest/download/slackcli-macos -o slackcli\nchmod +x slackcli\nmkdir -p ~/.local/bin \u0026\u0026 mv slackcli ~/.local/bin/\n```\n\n#### macOS (Apple Silicon)\n```bash\ncurl -L https://github.com/shaharia-lab/slackcli/releases/latest/download/slackcli-macos-arm64 -o slackcli\nchmod +x slackcli\nmkdir -p ~/.local/bin \u0026\u0026 mv slackcli ~/.local/bin/\n```\n\n#### Windows\nDownload `slackcli-windows.exe` from the [latest release](https://github.com/shaharia-lab/slackcli/releases/latest) and add it to your PATH.\n\n### From Source\n\n```bash\n# Clone the repository\ngit clone https://github.com/shaharia-lab/slackcli.git\ncd slackcli\n\n# Install dependencies\nbun install\n\n# Build binary\nbun run build\n```\n\n## Authentication\n\nSlackCLI supports two authentication methods:\n\n### 1. Standard Slack App Tokens (Recommended for Production)\n\nCreate a Slack app at [api.slack.com/apps](https://api.slack.com/apps) and obtain a bot token (xoxb-*) or user token (xoxp-*).\n\n```bash\nslackcli auth login --token=xoxb-YOUR-TOKEN --workspace-name=\"My Team\"\n```\n\n### 2. Browser Session Tokens (Quick Setup)\n\nExtract tokens from your browser session. No Slack app creation required!\n\n```bash\n# Step 1: Get extraction guide\nslackcli auth extract-tokens\n\n# Step 2: Login with extracted tokens\nslackcli auth login-browser \\\n  --xoxd=xoxd-YOUR-TOKEN \\\n  --xoxc=xoxc-YOUR-TOKEN \\\n  --workspace-url=https://yourteam.slack.com\n```\n\n**How to Extract Browser Tokens:**\n\n1. Open your Slack workspace in a web browser\n2. Open Developer Tools (F12)\n3. Go to Network tab\n4. Send a message or refresh\n5. Find a Slack API request\n6. Extract:\n   - `xoxd` token from Cookie header (d=xoxd-...)\n   - `xoxc` token from request payload (\"token\":\"xoxc-...\")\n\n### 3. Easy Method: Parse cURL Command (Recommended for Browser Tokens)\n\nThe easiest way to extract browser tokens is to copy a Slack API request as cURL and let SlackCLI parse it automatically!\n\n```bash\n# Step 1: In browser DevTools, right-click any Slack API request\n#         → Copy → Copy as cURL\n\n# Step 2: Interactive mode (recommended) - just paste and press Enter twice\nslackcli auth parse-curl --login\n\n# Alternative: Read directly from clipboard\nslackcli auth parse-curl --from-clipboard --login\n\n# Alternative: Pipe from clipboard or file\npbpaste | slackcli auth parse-curl --login\ncat curl-command.txt | slackcli auth parse-curl --login\n```\n\nThis automatically extracts:\n- Workspace URL and name\n- xoxd token from cookies\n- xoxc token from request data\n\n## Usage\n\n### Authentication Commands\n\n```bash\n# List all authenticated workspaces\nslackcli auth list\n\n# Set default workspace\nslackcli auth set-default T1234567\n\n# Remove a workspace\nslackcli auth remove T1234567\n\n# Logout from all workspaces\nslackcli auth logout\n```\n\n### Conversation Commands\n\n```bash\n# List all conversations\nslackcli conversations list\n\n# List only public channels\nslackcli conversations list --types=public_channel\n\n# List DMs\nslackcli conversations list --types=im\n\n# Read recent messages from a channel\nslackcli conversations read C1234567890\n\n# Read a specific thread\nslackcli conversations read C1234567890 --thread-ts=1234567890.123456\n\n# Read with custom limit\nslackcli conversations read C1234567890 --limit=50\n\n# Get JSON output (includes ts and thread_ts for replies)\nslackcli conversations read C1234567890 --json\n```\n\n### Message Commands\n\n```bash\n# Send message to a channel\nslackcli messages send --recipient-id=C1234567890 --message=\"Hello team!\"\n\n# Send DM to a user\nslackcli messages send --recipient-id=U9876543210 --message=\"Hey there!\"\n\n# Reply to a thread\nslackcli messages send --recipient-id=C1234567890 --thread-ts=1234567890.123456 --message=\"Great idea!\"\n\n# Create a draft message in a channel (only works with browser session tokens)\nslackcli messages draft --recipient-id=C1234567890 --message=\"Hello team!\"\n\n# Add emoji reaction to a message\nslackcli messages react --channel-id=C1234567890 --timestamp=1234567890.123456 --emoji=+1\n\n# More reaction examples\nslackcli messages react --channel-id=C1234567890 --timestamp=1234567890.123456 --emoji=heart\nslackcli messages react --channel-id=C1234567890 --timestamp=1234567890.123456 --emoji=fire\nslackcli messages react --channel-id=C1234567890 --timestamp=1234567890.123456 --emoji=eyes\n```\n\n**Common emoji names:**\n- `+1` or `thumbsup` - 👍\n- `heart` - ❤️\n- `fire` - 🔥\n- `eyes` - 👀\n- `tada` - 🎉\n- `rocket` - 🚀\n\n### Canvas Commands\n\n```bash\n# List canvases in the workspace\nslackcli canvas list\nslackcli canvas list --limit=50\nslackcli canvas list --channel=C1234567890\n\n# Read canvas content as markdown\nslackcli canvas read F1234567890\n\n# Read canvas in JSON format (includes markdown field)\nslackcli canvas read F1234567890 --json\n\n# Read raw HTML (no conversion)\nslackcli canvas read F1234567890 --raw\n\n# Read the canvas associated with a channel\nslackcli canvas read --channel=C1234567890\n```\n\n### Update Commands\n\n```bash\n# Check for updates\nslackcli update check\n\n# Update to latest version\nslackcli update\n```\n\n### Multi-Workspace Usage\n\n```bash\n# Use specific workspace by ID\nslackcli conversations list --workspace=T1234567\n\n# Use specific workspace by name\nslackcli conversations list --workspace=\"My Team\"\n```\n\n## Configuration\n\nConfiguration is stored in `~/.config/slackcli/`:\n\n- `workspaces.json` - Workspace credentials\n- `config.json` - User preferences (future)\n\n## Development\n\n### Prerequisites\n\n- Bun v1.0+\n- TypeScript 5.x+\n\n### Setup\n\n```bash\n# Install dependencies\nbun install\n\n# Run in development mode\nbun run dev --help\n\n# Build binary\nbun run build\n\n# Build for all platforms\nbun run build:all\n\n# Type check\nbun run type-check\n```\n\n### Project Structure\n\n```\nslackcli/\n├── src/\n│   ├── index.ts              # CLI entry point\n│   ├── commands/             # Command implementations\n│   │   ├── auth.ts\n│   │   ├── conversations.ts\n│   │   ├── messages.ts\n│   │   └── update.ts\n│   ├── lib/                  # Core library\n│   │   ├── auth.ts\n│   │   ├── workspaces.ts\n│   │   ├── slack-client.ts\n│   │   ├── formatter.ts\n│   │   └── updater.ts\n│   └── types/                # Type definitions\n│       └── index.ts\n├── .github/workflows/        # CI/CD\n└── dist/                     # Build output\n```\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add some amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## Troubleshooting\n\n### Authentication Issues\n\n**Standard Tokens:**\n- Ensure your token has the required OAuth scopes\n- Check token validity in your Slack app settings\n\n**Browser Tokens:**\n- Tokens expire with your browser session\n- Extract fresh tokens if authentication fails\n- Verify workspace URL format (https://yourteam.slack.com)\n\n### Permission Errors\n\nIf you get permission errors when accessing conversations or sending messages:\n- Verify your bot/user has been added to the channel\n- Check OAuth scopes include required permissions\n- For browser tokens, ensure you have access in the web UI\n\n### Update Issues\n\nIf installed via Homebrew, use `brew upgrade slackcli` instead of `slackcli update`.\n\nIf `slackcli update` fails:\n- Ensure you have write permissions to the binary location\n- Try running with sudo if installed system-wide\n- Consider installing to user directory (~/.local/bin) instead\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details\n\n## Support\n\n- 🐛 [Report Issues](https://github.com/shaharia-lab/slackcli/issues)\n- 💬 [Discussions](https://github.com/shaharia-lab/slackcli/discussions)\n- 📧 Email: support@shaharia.com\n\n## 🤝 Contributors\n\nA huge thanks to the amazing people who have contributed to SlackCLI!\n\n\u003ca href=\"https://github.com/shaharia-lab/slackcli/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=shaharia-lab/slackcli\" /\u003e\n\u003c/a\u003e\n\n## Acknowledgments\n\n- Built with [Bun](https://bun.sh)\n- Powered by [@slack/web-api](https://slack.dev/node-slack-sdk/)\n- Inspired by [gscli](https://github.com/shaharia-lab/gscli)\n\n---\n\n**Made with ❤️ by Shaharia Lab**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshaharia-lab%2Fslackcli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshaharia-lab%2Fslackcli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshaharia-lab%2Fslackcli/lists"}