Token导航 LogoToken导航TokenDH.com
待分类需要联网github未标认证来源可访问clear审计提醒

slackSlack 团队协作

Agent Skill

用于处理 Slack 工作区里的频道、消息、线程、用户和通知信息。它适合让 Agent 查询团队沟通记录、整理上下文、回复线程或辅助协作提醒。使用时需要确认机器人或用户 token 是否具备目标频道访问权,私有频道和历史消息通常有额外权限限制;发送消息、@成员或批量读取对话时,应避免泄露内部讨论和敏感工作信息。

总安装

1,968

周安装

82

GitHub Stars

56

下载量

656
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

3

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:slack(Slack 团队协作)
来源仓库:https://github.com/vm0-ai/vm0-skills
仓库路径:skills/slack
安装命令:
npx skills add https://github.com/vm0-ai/vm0-skills --skill slack
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/vm0-ai/vm0-skills --skill slack

简介

slack 用于处理 Slack 工作区的频道、消息、线程和用户信息。

  • 适合查询团队沟通记录、整理上下文、回复线程或辅助协作提醒。
  • 通过 npx skills add 命令从指定仓库安装并使用。
  • 使用时需确认机器人或用户 token 是否具备目标频道访问权,私有频道有额外限制。
  • 发送消息或批量读取时应避免泄露内部讨论和敏感信息。

SKILL.md

Troubleshooting

If requests fail, run zero doctor check-connector --env-name SLACK_TOKEN or zero doctor check-connector --url https://slack.com/api/chat.postMessage --method POST

Messages

Send Message

curl -s -X POST "https://slack.com/api/chat.postMessage" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"text\": \"Hello, World\"}"

Send with Block Kit

curl -s -X POST "https://slack.com/api/chat.postMessage" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"text\": \"Fallback text\", \"blocks\": [{\"type\": \"section\", \"text\": {\"type\": \"mrkdwn\", \"text\": \"*Alert:* Something happened\"}}, {\"type\": \"section\", \"fields\": [{\"type\": \"mrkdwn\", \"text\": \"*Status:*\\nActive\"}, {\"type\": \"mrkdwn\", \"text\": \"*Priority:*\\nHigh\"}]}]}"

Block Kit Builder: https://app.slack.com/block-kit-builder

Reply in Thread

curl -s -X POST "https://slack.com/api/chat.postMessage" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"thread_ts\": \"<message-ts>\", \"text\": \"Thread reply\"}"

Update Message

curl -s -X POST "https://slack.com/api/chat.update" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"ts\": \"<message-ts>\", \"text\": \"Updated message\"}"

Delete Message

curl -s -X POST "https://slack.com/api/chat.delete" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"ts\": \"<message-ts>\"}"

Schedule Message

curl -s -X POST "https://slack.com/api/chat.scheduleMessage" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"text\": \"Scheduled message\", \"post_at\": 1735689600}"

post_at is a Unix timestamp. Must be within 120 days.

List Scheduled Messages

curl -s -X POST "https://slack.com/api/chat.scheduledMessages.list" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\"}"

Delete Scheduled Message

curl -s -X POST "https://slack.com/api/chat.deleteScheduledMessage" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"scheduled_message_id\": \"<scheduled-id>\"}"

Send Ephemeral Message

Only visible to the specified user.

curl -s -X POST "https://slack.com/api/chat.postEphemeral" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"user\": \"<user-id>\", \"text\": \"Only you can see this\"}"

Get Permalink

curl -s "https://slack.com/api/chat.getPermalink?channel=<channel-id>&message_ts=<message-ts>" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Channels (Conversations)

Slack uses a unified "conversations" API for public channels, private channels, DMs, and group DMs.

List Channels

curl -s "https://slack.com/api/conversations.list?types=public_channel&limit=100" \
  --header "Authorization: Bearer $SLACK_TOKEN"

types: public_channel, private_channel, mpim (group DM), im (DM). Comma-separated for multiple.

Get Channel Info

curl -s "https://slack.com/api/conversations.info?channel=<channel-id>" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Get Channel History

curl -s "https://slack.com/api/conversations.history?channel=<channel-id>&limit=20" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Params: latest, oldest (Unix timestamps), inclusive, limit (max 1000), cursor.

Get Thread Replies

curl -s "https://slack.com/api/conversations.replies?channel=<channel-id>&ts=<thread-ts>&limit=50" \
  --header "Authorization: Bearer $SLACK_TOKEN"

List Channel Members

curl -s "https://slack.com/api/conversations.members?channel=<channel-id>&limit=100" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Create Channel

curl -s -X POST "https://slack.com/api/conversations.create" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"name\": \"project-updates\", \"is_private\": false}"

Invite Users to Channel

curl -s -X POST "https://slack.com/api/conversations.invite" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"users\": \"<user-id-1>,<user-id-2>\"}"

Remove User from Channel

curl -s -X POST "https://slack.com/api/conversations.kick" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"user\": \"<user-id>\"}"

Join Channel

curl -s -X POST "https://slack.com/api/conversations.join" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\"}"

Leave Channel

curl -s -X POST "https://slack.com/api/conversations.leave" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\"}"

Set Channel Topic

curl -s -X POST "https://slack.com/api/conversations.setTopic" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"topic\": \"New topic text\"}"

Set Channel Purpose

curl -s -X POST "https://slack.com/api/conversations.setPurpose" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"purpose\": \"Channel purpose text\"}"

Rename Channel

curl -s -X POST "https://slack.com/api/conversations.rename" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"name\": \"new-channel-name\"}"

Archive Channel

curl -s -X POST "https://slack.com/api/conversations.archive" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\"}"

Unarchive Channel

curl -s -X POST "https://slack.com/api/conversations.unarchive" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\"}"

Mark Channel as Read

curl -s -X POST "https://slack.com/api/conversations.mark" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"ts\": \"<message-ts>\"}"

Open DM

curl -s -X POST "https://slack.com/api/conversations.open" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"users\": \"<user-id>\"}"

Returns a channel ID for the DM. Use multiple comma-separated user IDs for group DM.

Users

List Users

curl -s "https://slack.com/api/users.list?limit=100" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Get User Info

curl -s "https://slack.com/api/users.info?user=<user-id>" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Look Up User by Email

curl -s "https://slack.com/api/users.lookupByEmail?email=<user-email>" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Get User Profile

curl -s "https://slack.com/api/users.profile.get?user=<user-id>" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Set User Profile

curl -s -X POST "https://slack.com/api/users.profile.set" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"profile\": {\"status_text\": \"On vacation\", \"status_emoji\": \":palm_tree:\", \"status_expiration\": 0}}"

Set Presence

curl -s -X POST "https://slack.com/api/users.setPresence" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"presence\": \"away\"}"

Values: auto, away.

List User's Channels

curl -s "https://slack.com/api/users.conversations?user=<user-id>&types=public_channel,private_channel&limit=100" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Search

Search Messages

curl -s "https://slack.com/api/search.messages?query=budget%20report&count=20&sort=timestamp" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Params: query (supports Slack search modifiers like from:@user, in:#channel, before:2026-04-01), count (max 100), sort (score or timestamp), sort_dir (asc or desc).

Search Files

curl -s "https://slack.com/api/search.files?query=presentation&count=20" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Search All

curl -s "https://slack.com/api/search.all?query=project%20update&count=20" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Files

Upload File

Step 1: Get upload URL.

curl -s -X POST "https://slack.com/api/files.getUploadURLExternal" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"filename\": \"report.pdf\", \"length\": 12345}"

Step 2: Upload to the returned URL, then call files.completeUploadExternal with the file_id.

curl -s -X POST "https://slack.com/api/files.completeUploadExternal" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"files\": [{\"id\": \"<file-id>\", \"title\": \"Report\"}], \"channel_id\": \"<channel-id>\"}"

Legacy Upload (Simpler)

curl -s -X POST "https://slack.com/api/files.upload" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  -F "channels=<channel-id>" \
  -F "file=@/path/to/file.txt" \
  -F "title=My File"
Note: files.upload is deprecated but still functional. For new integrations, use the two-step getUploadURLExternal + completeUploadExternal flow.

List Files

curl -s "https://slack.com/api/files.list?channel=<channel-id>&count=20" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Get File Info

curl -s "https://slack.com/api/files.info?file=<file-id>" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Delete File

curl -s -X POST "https://slack.com/api/files.delete" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"file\": \"<file-id>\"}"

Reactions

Add Reaction

curl -s -X POST "https://slack.com/api/reactions.add" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"timestamp\": \"<message-ts>\", \"name\": \"thumbsup\"}"

Remove Reaction

curl -s -X POST "https://slack.com/api/reactions.remove" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"timestamp\": \"<message-ts>\", \"name\": \"thumbsup\"}"

Get Reactions on a Message

curl -s "https://slack.com/api/reactions.get?channel=<channel-id>&timestamp=<message-ts>" \
  --header "Authorization: Bearer $SLACK_TOKEN"

List User's Reactions

curl -s "https://slack.com/api/reactions.list?user=<user-id>&count=20" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Pins

Pin a Message

curl -s -X POST "https://slack.com/api/pins.add" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"timestamp\": \"<message-ts>\"}"

Unpin a Message

curl -s -X POST "https://slack.com/api/pins.remove" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel\": \"<channel-id>\", \"timestamp\": \"<message-ts>\"}"

List Pins

curl -s "https://slack.com/api/pins.list?channel=<channel-id>" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Bookmarks

List Bookmarks

curl -s -X POST "https://slack.com/api/bookmarks.list" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel_id\": \"<channel-id>\"}"

Add Bookmark

curl -s -X POST "https://slack.com/api/bookmarks.add" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel_id\": \"<channel-id>\", \"title\": \"Project Wiki\", \"type\": \"link\", \"link\": \"https://wiki.example.com\"}"

Remove Bookmark

curl -s -X POST "https://slack.com/api/bookmarks.remove" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"channel_id\": \"<channel-id>\", \"bookmark_id\": \"<bookmark-id>\"}"

User Groups

List User Groups

curl -s "https://slack.com/api/usergroups.list?include_users=true" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Create User Group

curl -s -X POST "https://slack.com/api/usergroups.create" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"name\": \"Engineering\", \"handle\": \"engineering\", \"description\": \"Engineering team\"}"

Update User Group Members

curl -s -X POST "https://slack.com/api/usergroups.users.update" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"usergroup\": \"<usergroup-id>\", \"users\": \"<user-id-1>,<user-id-2>\"}"

List User Group Members

curl -s "https://slack.com/api/usergroups.users.list?usergroup=<usergroup-id>" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Reminders

List Reminders

curl -s "https://slack.com/api/reminders.list" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Add Reminder

curl -s -X POST "https://slack.com/api/reminders.add" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"text\": \"Review the PR\", \"time\": 1735689600}"

time is a Unix timestamp or natural language (e.g., in 15 minutes, tomorrow at 9am).

Complete Reminder

curl -s -X POST "https://slack.com/api/reminders.complete" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"reminder\": \"<reminder-id>\"}"

Delete Reminder

curl -s -X POST "https://slack.com/api/reminders.delete" \
  --header "Authorization: Bearer $SLACK_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"reminder\": \"<reminder-id>\"}"

Do Not Disturb

Get DND Status

curl -s "https://slack.com/api/dnd.info?user=<user-id>" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Set Snooze

curl -s "https://slack.com/api/dnd.setSnooze?num_minutes=60" \
  --header "Authorization: Bearer $SLACK_TOKEN"

End DND

curl -s -X POST "https://slack.com/api/dnd.endDnd" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Emoji

List Custom Emoji

curl -s "https://slack.com/api/emoji.list" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Team Info

Get Workspace Info

curl -s "https://slack.com/api/team.info" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Get Team Profile Fields

curl -s "https://slack.com/api/team.profile.get" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Auth

Test Token

curl -s -X POST "https://slack.com/api/auth.test" \
  --header "Authorization: Bearer $SLACK_TOKEN"

Returns workspace, user, and bot info for the token. Useful for verifying connectivity and discovering the bot's user ID.

Guidelines

  1. Channel IDs, not names: All API methods require channel IDs (e.g., C1234567890), not display names. Use conversations.list to discover IDs.
  2. Message timestamps: Messages are identified by their ts (timestamp) field, not a numeric ID. Format: "1735689600.000100".
  3. Pagination: Use cursor and limit params. Next page cursor is in response_metadata.next_cursor. Keep paginating until cursor is empty.
  4. GET vs POST: Read methods (list, info, history) are typically GET with query params. Write methods (post, update, delete, create) are POST with JSON body.
  5. Rate limits: Methods are grouped into tiers. Tier 1: 1/sec, Tier 2: 20/min, Tier 3: 50/min, Tier 4: 100+/min. Check Retry-After header on 429 responses.
  6. Block Kit: Use blocks array for rich message formatting. Always include a text field as fallback for notifications. Builder: https://app.slack.com/block-kit-builder
  7. Threading: Set thread_ts to reply in a thread. The parent message's ts is the thread_ts.
  8. Conversation types: public_channel, private_channel, im (1:1 DM), mpim (group DM). Many methods accept a types param to filter.
  9. User IDs: Users are identified by IDs like U1234567890. Use users.lookupByEmail to find a user by email.
  10. File uploads: The legacy files.upload still works but is deprecated. Prefer the two-step flow: files.getUploadURLExternal → upload → files.completeUploadExternal.

Message Formatting

SyntaxResult
*bold*bold
_italic_*italic*
~strike~strike
` code `code
`<URL\text>`hyperlink
<@U123>@mention user
<#C123>#channel link
<!here>@here
<!channel>@channel

Admin API (Enterprise Grid Only)

The admin.* methods (100+ endpoints) are only available on Slack Enterprise Grid plans. They cover:

  • admin.conversations — manage channels across an Enterprise org (create, archive, set teams, bulk move)
  • admin.users — manage users across workspaces (assign, invite, remove, set admin/owner roles)
  • admin.teams — manage workspaces (create, list, get settings)
  • admin.apps — approve/restrict apps across the org
  • admin.invites — manage workspace invite requests
  • admin.roles — assign and list role-based access
  • admin.usergroups — manage user groups across workspaces
  • admin.barriers — manage information barriers
  • admin.workflows — manage workflow builder workflows
  • admin.analytics — access workspace analytics data
  • admin.audit — access audit logs
Note: These methods require Enterprise Grid admin tokens with admin.* scopes. They will return missing_scope or not_allowed errors on non-Enterprise workspaces. See docs for details.

How to Look Up More API Details

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Antigravity

27.29%
按下载量换算179

Claude Code

24.42%
按下载量换算160

Gemini CLI

17.74%
按下载量换算116

OpenCode

12.22%
按下载量换算80

kilo

8.28%
按下载量换算54

windsurf

3.44%
按下载量换算23

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。

来源信息

继续浏览同类 Skills