一键导入
slack
Read, send and manage Slack messages and channels. Requires Slack OAuth token. Tools: http.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Read, send and manage Slack messages and channels. Requires Slack OAuth token. Tools: http.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Search, subscribe, and listen to podcasts. Download RSS feeds, manage episodes, and play audio with position tracking. Tools: http, file_storage, media_queue, play_audio.
Manage local lists (shopping, to-do, etc.) stored as files. Add, remove, check and read items. Tools: file_storage.
Read, create, update and delete Google Calendar events. Requires Google OAuth. Tools: http.
Search contacts by name and retrieve phone numbers. Use before calling or sending SMS. Tools: query.
Read, search and send emails via Gmail API. Requires Google OAuth. Tools: gmail_send, http.
Start navigation, get directions and route info via Google Maps app. Tools: intent, http (optional, requires Maps API key for traffic/route details).
| name | slack |
| description | Read, send and manage Slack messages and channels. Requires Slack OAuth token. Tools: http. |
Read and send messages in Slack channels and direct messages.
Users speak channel names without # – this is normal and expected.
| User says | Means |
|---|---|
| "the general channel" | #general |
| "in the project channel" | #project |
| "the random channel" | #random |
| "in the dev channel" | #dev / #development |
Important: Match the spoken name against conversations.list – find the channel whose name is closest to the spoken term (substring match, case-insensitive). If multiple channels match, ask: "Do you mean the channel 'project-alpha' or 'project-beta'?"
All requests require auth_provider: "slack".
Base URL: https://slack.com/api
{
"method": "GET",
"url": "https://slack.com/api/conversations.list?types=public_channel,private_channel&exclude_archived=true&limit=50",
"auth_provider": "slack"
}
Returns channels – each element has id, name and is_member.
{
"method": "GET",
"url": "https://slack.com/api/conversations.history?channel={CHANNEL_ID}&limit=10",
"auth_provider": "slack"
}
{CHANNEL_ID} e.g. C01234ABCDE. Returns messages, newest first.
{
"method": "GET",
"url": "https://slack.com/api/conversations.replies?channel={CHANNEL_ID}&ts={THREAD_TS}&limit=20",
"auth_provider": "slack"
}
{THREAD_TS} = timestamp of the parent message (e.g. 1713000000.000100).
{
"method": "POST",
"url": "https://slack.com/api/conversations.open",
"auth_provider": "slack",
"body": {
"users": "{USER_ID}"
}
}
Returns channel.id – use this ID for chat.postMessage.
{
"method": "POST",
"url": "https://slack.com/api/chat.postMessage",
"auth_provider": "slack",
"body": {
"channel": "{CHANNEL_ID}",
"text": "{MESSAGE_TEXT}"
}
}
{
"method": "POST",
"url": "https://slack.com/api/chat.postMessage",
"auth_provider": "slack",
"body": {
"channel": "{CHANNEL_ID}",
"text": "{REPLY_TEXT}",
"thread_ts": "{TIMESTAMP_OF_ORIGINAL_MESSAGE}"
}
}
{
"method": "GET",
"url": "https://slack.com/api/users.lookupByEmail?email={EMAIL}",
"auth_provider": "slack"
}
Or list all users:
{
"method": "GET",
"url": "https://slack.com/api/users.list?limit=50",
"auth_provider": "slack"
}
Returns members – each element has id, name, real_name and profile.display_name.
{
"method": "GET",
"url": "https://slack.com/api/auth.test",
"auth_provider": "slack"
}
Returns user_id, user (name) and team (workspace name) among others.
{
"method": "POST",
"url": "https://slack.com/api/users.profile.set",
"auth_provider": "slack",
"body": {
"profile": {
"status_text": "{STATUS_TEXT}",
"status_emoji": "{EMOJI}",
"status_expiration": 0
}
}
}
Example emojis: :car:, :palm_tree:, :calendar:, :no_entry_sign:
status_expiration: Unix timestamp (0 = no expiry).
{
"method": "POST",
"url": "https://slack.com/api/users.profile.set",
"auth_provider": "slack",
"body": {
"profile": {
"status_text": "",
"status_emoji": "",
"status_expiration": 0
}
}
}
{
"method": "GET",
"url": "https://slack.com/api/conversations.info?channel={CHANNEL_ID}",
"auth_provider": "slack"
}
conversations.list (substring match on name)conversations.history with limit=5user ID to real name using users.listtts: "{Name} writes: {Text}" – omit timestampsconversations.listchat.postMessageusers.list (real_name or display_name, substring match)conversations.open with the user_id → get DM channel IDusers.profile.set with status_text: "On the road", status_emoji: ":car:"Every Slack API response contains "ok": true/false. If "ok": false, the "error" field contains the error code:
not_in_channel → Join the channel first (conversations.join)channel_not_found → Search for channel ID again via conversations.listmissing_scope → OAuth scope missing (user must re-authorize the app)conversations.list → match general → conversations.history → TTSconversations.history → TTS summarythread_ts → chat.postMessage with thread_tsusers.profile.set with :palm_tree:users.profile.set with empty fields# – always match via conversations.list (substring match)#: "the general channel", not "hashtag general"ts) are strings in format "1713000000.000100" – copy them exactly