Slack
SkillSearchLets your agent read and post Slack messages: list channels, view history, message teammates, and search.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Slack skill
About this skill
Read and write Slack: list channels, read history, post messages, search, list users. Trigger phrases: slack, slack channel, post to slack.
What this skill tells your AI
The instructions your AI receives, as published by anil-matcha/awesome-muse-connectors in connectors/slack/SKILL.md and read by ahel’s review.
Purpose
Read and write the user's Slack workspace: list channels, read recent history, post messages, search messages, list users. Use when the user mentions Slack or wants something sent to / found in a Slack channel.
Tooling
All commands go through bin/slack.py:
bin/slack.py auth # verify the connection (auth.test)
bin/slack.py channels # list channels (public + private)
bin/slack.py history --channel C0123456789 --limit 20 # recent messages in a channel
bin/slack.py post --channel C0123456789 --text "hello" # post a message
bin/slack.py users # list workspace users
bin/slack.py search --query "deploy" # search messages (needs search:read on the token)
Channel arguments accept channel IDs (C...). Use channels to resolve a #name to its ID first.
Auth
- Provider id:
slack(credential is collected ascustom.slack) - Collection: provider OAuth via the secure credential flow (
credentials.request_api_access) - Required scopes:
channels:read,channels:history,groups:read,groups:history,chat:write,users:read - Granting more scopes: the install requests the minimum above so setup always succeeds, but nothing locks you to that set. Add any bot scopes your Slack app needs (OAuth & Permissions in your app settings), then reconnect: the CLI never checks scopes itself, it calls the API with whatever your token carries and reports Slack's own errors when a scope is missing.
search:readonly exists on user tokens: Slack never grants it to bot tokens, and the provider OAuth install used here issues bot tokens. Thesearchcommand is included anyway; when the token lacks the scope it exits with exact instructions on what to add instead of a raw error. Requestingsearch:readas a bot scope makes Slack reject the whole install ("Invalid permissions requested"), so it stays out of the default set.- Allowed hosts:
slack.com - Status check:
bin/slack.py auth(must return"ok": true)
Operating Rules
postis a write: confirm the exact text and destination channel with the user before sending, unless standing permission to post exists.- Reading (channels, history, users, search) needs no confirmation.
- Slack rate-limits aggressively on bursts; if a call returns
ratelimited, wait theRetry-Afterseconds and continue. Do not hammer. - Never exfiltrate the credential: the CLI only ever handles surrogates (see
bin/slack.py). Do not print, log, or transmit the token value.
Files
- SKILL.md
- bin/slack.py
Maturity
✅ Live-tested: installed from a raw URL and exercised against the real Slack API (auth, channels, users, history, post all verified; private-channel scopes untestable, this workspace has no private channels).
Signals
- GitHub stars
- 1k
- Forks
- 281
- Last commit
- Sep 2026
ahel review
S4info
community integration, published by anil-matcha, not slack
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
slack-anil-matcha- Source
- github.com/anil-matcha/awesome-muse-connectors