Agent skill
slack
Slack API for messages and channels. Use when user mentions "Slack", "slack.com", shares a Slack link, "send to Slack", "Slack channel", or asks about workspace.
Install this agent skill to your Project
npx add-skill https://github.com/vm0-ai/vm0-skills/tree/main/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
Core APIs
List Channels
curl -s -H "Authorization: Bearer $(printenv SLACK_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:
curl -s -H "Authorization: Bearer $(printenv SLACK_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"
}
curl -s -X POST "https://slack.com/api/chat.postMessage" -H "Authorization: Bearer $(printenv SLACK_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"}
]
}
]
}
curl -s -X POST "https://slack.com/api/chat.postMessage" -H "Authorization: Bearer $(printenv SLACK_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"
}
curl -s -X POST "https://slack.com/api/chat.postMessage" -H "Authorization: Bearer $(printenv SLACK_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"
}
curl -s -X POST "https://slack.com/api/chat.update" -H "Authorization: Bearer $(printenv SLACK_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>"
}
curl -s -X POST "https://slack.com/api/chat.delete" -H "Authorization: Bearer $(printenv SLACK_TOKEN)" -H "Content-Type: application/json" -d @/tmp/request.json
List Users
curl -s -H "Authorization: Bearer $(printenv SLACK_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:
curl -s -H "Authorization: Bearer $(printenv SLACK_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 $(printenv SLACK_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"
}
curl -s -X POST "https://slack.com/api/reactions.add" -H "Authorization: Bearer $(printenv SLACK_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.
brave-search
Brave Search API for web search. Use when user says "search web", "Brave search", or asks to "find on web" without specifying Google.
supadata
Supadata API for YouTube/web data. Use when user mentions "Supadata", "YouTube data", "channel stats", or web scraping data.
roadmap-planning
Build and prioritize product roadmaps using scoring models like RICE, ICE, and value-effort matrices. Activate when creating a product roadmap, prioritizing features, sequencing initiatives, mapping dependencies, balancing team capacity, choosing between Now/Next/Later or quarterly planning, or communicating roadmap tradeoffs to executives and stakeholders.
qdrant
Qdrant API for vector search. Use when user mentions "Qdrant", "vector database", "semantic search", or embeddings storage.
calendly
Calendly scheduling API. Use when user mentions "Calendly", "calendly.com", "schedule a meeting", "booking link", "event types", or asks about interview scheduling.
stripe
Stripe API for payments. Use when user mentions "Stripe", "payment", "subscription", "billing", "invoice", or asks about payment processing.
Didn't find tool you were looking for?