Agent skill
slack
Slack API for sending messages, reading channels, and managing conversations. Use this skill to post messages, upload files, and interact with Slack workspaces.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/slack
SKILL.md
Slack API
Send messages, read channels, and interact with Slack workspaces.
When to Use
- Send messages to channels or users
- Read channel message history
- Upload files to Slack
- List channels and users
- Add reactions to messages
Prerequisites
export SLACK_BOT_TOKEN=xoxb-your-bot-token
Get Token
- Create app: https://api.slack.com/apps
- Add Bot Token Scopes (OAuth & Permissions):
chat:write- Send messageschannels:read- List public channelschannels:history- Read channel messagesfiles:write- Upload filesusers:read- List usersreactions:write- Add reactions
- Install to Workspace
- Copy "Bot User OAuth Token" (
xoxb-...)
Important: When using
$VARin a command that pipes to another command, wrap the command containing$VARinbash -c '...'. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.bashbash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY"'
Core APIs
List Channels
bash -c 'curl -s -H "Authorization: Bearer $SLACK_BOT_TOKEN" "https://slack.com/api/conversations.list?types=public_channel"' | jq '.channels[] | {id, name}'
Docs: https://docs.slack.dev/reference/methods/conversations.list
Get Channel History
Replace <channel-id> with the actual channel ID:
bash -c 'curl -s -H "Authorization: Bearer $SLACK_BOT_TOKEN" "https://slack.com/api/conversations.history?channel=<channel-id>&limit=10"' | jq '.messages[] | {ts, user, text}'
Docs: https://docs.slack.dev/reference/methods/conversations.history
Send Message
Write to /tmp/request.json:
{
"channel": "<channel-id>",
"text": "Hello, World"
}
bash -c 'curl -s -X POST "https://slack.com/api/chat.postMessage" -H "Authorization: Bearer $SLACK_BOT_TOKEN" -H "Content-Type: application/json" -d @/tmp/request.json'
Docs: https://docs.slack.dev/reference/methods/chat.postmessage
Send with Blocks
Write to /tmp/request.json:
{
"channel": "<channel-id>",
"text": "Notification",
"blocks": [
{
"type": "section",
"text": {"type": "mrkdwn", "text": "*Alert:* Something happened"}
},
{
"type": "section",
"fields": [
{"type": "mrkdwn", "text": "*Status:*\nActive"},
{"type": "mrkdwn", "text": "*Priority:*\nHigh"}
]
}
]
}
bash -c 'curl -s -X POST "https://slack.com/api/chat.postMessage" -H "Authorization: Bearer $SLACK_BOT_TOKEN" -H "Content-Type: application/json" -d @/tmp/request.json'
Block Kit Builder: https://app.slack.com/block-kit-builder
Reply in Thread
Write to /tmp/request.json:
{
"channel": "<channel-id>",
"thread_ts": "<thread-timestamp>",
"text": "Thread reply"
}
bash -c 'curl -s -X POST "https://slack.com/api/chat.postMessage" -H "Authorization: Bearer $SLACK_BOT_TOKEN" -H "Content-Type: application/json" -d @/tmp/request.json'
Update Message
Write to /tmp/request.json:
{
"channel": "<channel-id>",
"ts": "<message-timestamp>",
"text": "Updated message"
}
bash -c 'curl -s -X POST "https://slack.com/api/chat.update" -H "Authorization: Bearer $SLACK_BOT_TOKEN" -H "Content-Type: application/json" -d @/tmp/request.json'
Docs: https://docs.slack.dev/reference/methods/chat.update
Delete Message
Write to /tmp/request.json:
{
"channel": "<channel-id>",
"ts": "<message-timestamp>"
}
bash -c 'curl -s -X POST "https://slack.com/api/chat.delete" -H "Authorization: Bearer $SLACK_BOT_TOKEN" -H "Content-Type: application/json" -d @/tmp/request.json'
List Users
bash -c 'curl -s -H "Authorization: Bearer $SLACK_BOT_TOKEN" "https://slack.com/api/users.list"' | jq '.members[] | {id, name, real_name}'
Docs: https://docs.slack.dev/reference/methods/users.list
Get User by Email
Replace <user-email> with the actual email address:
bash -c 'curl -s -H "Authorization: Bearer $SLACK_BOT_TOKEN" "https://slack.com/api/users.lookupByEmail?email=<user-email>"'
Docs: https://docs.slack.dev/reference/methods/users.lookupbyemail
Upload File
curl -s -X POST 'https://slack.com/api/files.upload' -H "Authorization: Bearer $SLACK_BOT_TOKEN" -F 'channels=C1234567890' -F 'file=@/path/to/file.txt' -F 'title=My File'
Docs: https://docs.slack.dev/reference/methods/files.upload
Add Reaction
Write to /tmp/request.json:
{
"channel": "<channel-id>",
"timestamp": "<message-timestamp>",
"name": "thumbsup"
}
bash -c 'curl -s -X POST "https://slack.com/api/reactions.add" -H "Authorization: Bearer $SLACK_BOT_TOKEN" -H "Content-Type: application/json" -d @/tmp/request.json'
Docs: https://docs.slack.dev/reference/methods/reactions.add
Message Formatting
| Syntax | Result |
|---|---|
*bold* |
bold |
_italic_ |
italic |
~strike~ |
|
`code` |
code |
<URL|text> |
hyperlink |
<@U123> |
@mention user |
<#C123> |
#channel link |
Rate Limits
- Tier 1: 1 request/second
- Tier 2: 20 requests/minute
- Tier 3: 50 requests/minute
- Tier 4: 100 requests/minute
See: https://docs.slack.dev/apis/web-api/rate-limits
API Reference
- All Methods: https://docs.slack.dev/reference/methods
- Scopes: https://docs.slack.dev/reference/scopes
- Block Kit: https://docs.slack.dev/reference/block-kit
- App Management: https://api.slack.com/apps
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?