[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6G42ZFC7KXBHCDM707VC4MH":3,"skill-same:01M6G42ZFC7KXBHCDM707VC4MH":83},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":30,"publishedAt":51,"linkOnly":52,"markdownContent":53,"markdownBody":54,"frontMatter":55,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":6,"ownerHtmlUrl":61,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":62,"install":63,"resources":76},"01M6G42ZFC7KXBHCDM707VC4MH","slack-power-tools",null,"Advanced Slack automation beyond basic messaging. Use when user needs to manage channels (create, archive, invite users), schedule messages, upload files, search workspace, manage user groups, set status\u002FDND, get analytics, or automate Slack workflows. Covers channel ops, user management, scheduled messages, file uploads, search, and workspace analytics.","kbarbel640-del\u002Fskills","kbarbel640-del","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F255315490?v=4","01M6CJPPQGCCESXMG3K7BBGQ5J","01M6CJPPX2PB2BCZERFVM2C2B3",1,"MIT","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fspclaudehome\u002Fslack-power-tools\u002FSKILL.md",[17,22,25],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000005","邮件与沟通","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":26,"categoryName":27,"taxonomyType":28,"taxonomyTypeDesc":29},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50],"Tools","slack power tools","power","slack","manage channels","create","search","messaging","messages","SET","analytics","file uploads","automate","schedule","status","files","get","advanced","user management","workflows","2026-11-10 10:12:30",false,"---\nname: slack-power-tools\ndescription: Advanced Slack automation beyond basic messaging. Use when user needs to manage channels (create, archive, invite users), schedule messages, upload files, search workspace, manage user groups, set status\u002FDND, get analytics, or automate Slack workflows. Covers channel ops, user management, scheduled messages, file uploads, search, and workspace analytics.\n---\n\n# Slack Power Tools\n\nAdvanced Slack automation via Slack Web API. Requires a Slack Bot Token with appropriate scopes.\n\n## Prerequisites\n\n```bash\nexport SLACK_BOT_TOKEN=\"xoxb-your-token\"\n```\n\nRequired OAuth scopes depend on features used (see each section).\n\n## Channel Management\n\n**Scopes:** `channels:manage`, `channels:read`, `groups:write`, `groups:read`\n\n### List all channels\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.list?types=public_channel,private_channel&limit=200\" | jq '.channels[] | {id, name, num_members, is_archived}'\n```\n\n### Create a channel\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"new-channel\", \"is_private\": false}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.create\" | jq '.'\n```\n\n### Archive a channel\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"channel\": \"C123456\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.archive\"\n```\n\n### Set channel topic\u002Fpurpose\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"channel\": \"C123456\", \"topic\": \"Project X Discussion\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.setTopic\"\n\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"channel\": \"C123456\", \"purpose\": \"All things Project X\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.setPurpose\"\n```\n\n### Invite users to channel\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"channel\": \"C123456\", \"users\": \"U111,U222,U333\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.invite\"\n```\n\n### Kick user from channel\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"channel\": \"C123456\", \"user\": \"U111\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.kick\"\n```\n\n## Scheduled Messages\n\n**Scopes:** `chat:write`\n\n### Schedule a message\n```bash\n# post_at is Unix timestamp\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"channel\": \"C123456\",\n    \"text\": \"Reminder: Team standup in 15 minutes!\",\n    \"post_at\": 1735689600\n  }' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fchat.scheduleMessage\" | jq '.'\n```\n\n### List scheduled messages\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fchat.scheduledMessages.list\" | jq '.scheduled_messages[]'\n```\n\n### Delete scheduled message\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"channel\": \"C123456\", \"scheduled_message_id\": \"Q123456\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fchat.deleteScheduledMessage\"\n```\n\n## File Management\n\n**Scopes:** `files:write`, `files:read`\n\n### Upload a file\n```bash\n# Get upload URL\nUPLOAD=$(curl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Ffiles.getUploadURLExternal?filename=report.pdf&length=$(stat -f%z report.pdf)\")\n\nUPLOAD_URL=$(echo $UPLOAD | jq -r '.upload_url')\nFILE_ID=$(echo $UPLOAD | jq -r '.file_id')\n\n# Upload file content\ncurl -s -X POST \"$UPLOAD_URL\" -F \"file=@report.pdf\"\n\n# Complete upload and share to channel\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"{\\\"files\\\": [{\\\"id\\\": \\\"$FILE_ID\\\"}], \\\"channel_id\\\": \\\"C123456\\\"}\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Ffiles.completeUploadExternal\"\n```\n\n### List files\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Ffiles.list?channel=C123456&count=20\" | jq '.files[] | {id, name, filetype, size, created}'\n```\n\n### Delete a file\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"file\": \"F123456\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Ffiles.delete\"\n```\n\n## User Management\n\n**Scopes:** `users:read`, `users.profile:write`\n\n### List all users\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fusers.list?limit=200\" | jq '.members[] | select(.deleted==false) | {id, name, real_name, is_admin}'\n```\n\n### Get user info\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fusers.info?user=U123456\" | jq '.user'\n```\n\n### Set user status (for bot\u002Fself)\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"profile\": {\n      \"status_text\": \"In a meeting\",\n      \"status_emoji\": \":calendar:\",\n      \"status_expiration\": 1735693200\n    }\n  }' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fusers.profile.set\"\n```\n\n## User Groups\n\n**Scopes:** `usergroups:write`, `usergroups:read`\n\n### List user groups\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fusergroups.list?include_users=true\" | jq '.usergroups[] | {id, handle, name, user_count}'\n```\n\n### Create user group\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"Backend Team\", \"handle\": \"backend-team\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fusergroups.create\"\n```\n\n### Update user group members\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"usergroup\": \"S123456\", \"users\": \"U111,U222,U333\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fusergroups.users.update\"\n```\n\n## Search\n\n**Scopes:** `search:read`\n\n### Search messages\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fsearch.messages?query=project%20deadline&sort=timestamp&count=20\" | jq '.messages.matches[] | {channel: .channel.name, user, text, ts}'\n```\n\n### Search files\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fsearch.files?query=report%20Q4&count=20\" | jq '.files.matches[] | {name, filetype, user}'\n```\n\n## Do Not Disturb\n\n**Scopes:** `dnd:write`, `dnd:read`\n\n### Set DND\n```bash\n# Snooze for 60 minutes\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fdnd.setSnooze?num_minutes=60\"\n```\n\n### End DND\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fdnd.endSnooze\"\n```\n\n### Check DND status\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fdnd.info?user=U123456\" | jq '.'\n```\n\n## Reminders\n\n**Scopes:** `reminders:write`, `reminders:read`\n\n### Create reminder\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"text\": \"Review PR #42\",\n    \"time\": \"in 2 hours\",\n    \"user\": \"U123456\"\n  }' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Freminders.add\"\n```\n\n### List reminders\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Freminders.list\" | jq '.reminders[]'\n```\n\n## Analytics & Stats\n\n### Channel message count (last 7 days)\n```bash\n# Get channel history and count\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.history?channel=C123456&oldest=$(($(date +%s) - 604800))&limit=1000\" | jq '.messages | length'\n```\n\n### Most active users in channel\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.history?channel=C123456&limit=1000\" | jq '[.messages[].user] | group_by(.) | map({user: .[0], count: length}) | sort_by(-.count) | .[0:10]'\n```\n\n### Workspace stats\n```bash\n# Count total users\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fusers.list\" | jq '[.members[] | select(.deleted==false and .is_bot==false)] | length'\n\n# Count channels\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.list?types=public_channel&exclude_archived=true\" | jq '.channels | length'\n```\n\n## Bookmarks\n\n**Scopes:** `bookmarks:write`, `bookmarks:read`\n\n### Add bookmark to channel\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"channel_id\": \"C123456\",\n    \"title\": \"Project Wiki\",\n    \"type\": \"link\",\n    \"link\": \"https:\u002F\u002Fwiki.company.com\u002Fproject\"\n  }' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fbookmarks.add\"\n```\n\n### List bookmarks\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fbookmarks.list?channel_id=C123456\" | jq '.bookmarks[]'\n```\n\n## Common Workflows\n\n### Daily standup reminder (schedule for 9 AM)\n```bash\n# Calculate next 9 AM timestamp\nNINE_AM=$(date -v+1d -v9H -v0M -v0S +%s)\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"{\\\"channel\\\": \\\"C123456\\\", \\\"text\\\": \\\"? Good morning team! Time for standup.\\nWhat did you do yesterday?\\nWhat will you do today?\\nAny blockers?\\\", \\\"post_at\\\": $NINE_AM}\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fchat.scheduleMessage\"\n```\n\n### Bulk invite users to a new project channel\n```bash\n# Create channel, set topic, invite team\nCHANNEL=$(curl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"project-phoenix\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.create\" | jq -r '.channel.id')\n\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"{\\\"channel\\\": \\\"$CHANNEL\\\", \\\"topic\\\": \\\"? Project Phoenix - Q1 2026\\\"}\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.setTopic\"\n\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"{\\\"channel\\\": \\\"$CHANNEL\\\", \\\"users\\\": \\\"U111,U222,U333,U444\\\"}\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.invite\"\n```\n\n### Weekly channel cleanup report\n```bash\necho \"# Slack Cleanup Report\"\necho \"Generated: $(date)\"\necho \"\"\necho \"## Inactive Channels (no messages in 30 days)\"\n# List channels, check last message date\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.list?types=public_channel&exclude_archived=true&limit=500\" | \\\n  jq -r '.channels[] | \"\\(.id) \\(.name)\"' | while read id name; do\n    last_msg=$(curl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n      \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.history?channel=$id&limit=1\" | jq -r '.messages[0].ts \u002F\u002F \"0\"')\n    if [ $(echo \"$last_msg \u003C $(date -v-30d +%s)\" | bc) -eq 1 ]; then\n      echo \"- #$name (last activity: $(date -r ${last_msg%.*} +%Y-%m-%d 2>\u002Fdev\u002Fnull || echo 'never'))\"\n    fi\ndone\n```\n\n## Error Handling\n\nAll Slack API responses include `ok: true\u002Ffalse`. Check errors:\n```bash\nresponse=$(curl -s ...)\nif [ \"$(echo $response | jq -r '.ok')\" != \"true\" ]; then\n  echo \"Error: $(echo $response | jq -r '.error')\"\nfi\n```\n\nCommon errors:\n- `channel_not_found` - Invalid channel ID\n- `not_in_channel` - Bot not in channel\n- `missing_scope` - Need additional OAuth scope\n- `ratelimited` - Too many requests, check `Retry-After` header\n","# Slack Power Tools\n\nAdvanced Slack automation via Slack Web API. Requires a Slack Bot Token with appropriate scopes.\n\n## Prerequisites\n\n```bash\nexport SLACK_BOT_TOKEN=\"xoxb-your-token\"\n```\n\nRequired OAuth scopes depend on features used (see each section).\n\n## Channel Management\n\n**Scopes:** `channels:manage`, `channels:read`, `groups:write`, `groups:read`\n\n### List all channels\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.list?types=public_channel,private_channel&limit=200\" | jq '.channels[] | {id, name, num_members, is_archived}'\n```\n\n### Create a channel\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"new-channel\", \"is_private\": false}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.create\" | jq '.'\n```\n\n### Archive a channel\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"channel\": \"C123456\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.archive\"\n```\n\n### Set channel topic\u002Fpurpose\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"channel\": \"C123456\", \"topic\": \"Project X Discussion\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.setTopic\"\n\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"channel\": \"C123456\", \"purpose\": \"All things Project X\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.setPurpose\"\n```\n\n### Invite users to channel\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"channel\": \"C123456\", \"users\": \"U111,U222,U333\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.invite\"\n```\n\n### Kick user from channel\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"channel\": \"C123456\", \"user\": \"U111\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.kick\"\n```\n\n## Scheduled Messages\n\n**Scopes:** `chat:write`\n\n### Schedule a message\n```bash\n# post_at is Unix timestamp\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"channel\": \"C123456\",\n    \"text\": \"Reminder: Team standup in 15 minutes!\",\n    \"post_at\": 1735689600\n  }' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fchat.scheduleMessage\" | jq '.'\n```\n\n### List scheduled messages\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fchat.scheduledMessages.list\" | jq '.scheduled_messages[]'\n```\n\n### Delete scheduled message\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"channel\": \"C123456\", \"scheduled_message_id\": \"Q123456\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fchat.deleteScheduledMessage\"\n```\n\n## File Management\n\n**Scopes:** `files:write`, `files:read`\n\n### Upload a file\n```bash\n# Get upload URL\nUPLOAD=$(curl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Ffiles.getUploadURLExternal?filename=report.pdf&length=$(stat -f%z report.pdf)\")\n\nUPLOAD_URL=$(echo $UPLOAD | jq -r '.upload_url')\nFILE_ID=$(echo $UPLOAD | jq -r '.file_id')\n\n# Upload file content\ncurl -s -X POST \"$UPLOAD_URL\" -F \"file=@report.pdf\"\n\n# Complete upload and share to channel\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"{\\\"files\\\": [{\\\"id\\\": \\\"$FILE_ID\\\"}], \\\"channel_id\\\": \\\"C123456\\\"}\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Ffiles.completeUploadExternal\"\n```\n\n### List files\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Ffiles.list?channel=C123456&count=20\" | jq '.files[] | {id, name, filetype, size, created}'\n```\n\n### Delete a file\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"file\": \"F123456\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Ffiles.delete\"\n```\n\n## User Management\n\n**Scopes:** `users:read`, `users.profile:write`\n\n### List all users\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fusers.list?limit=200\" | jq '.members[] | select(.deleted==false) | {id, name, real_name, is_admin}'\n```\n\n### Get user info\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fusers.info?user=U123456\" | jq '.user'\n```\n\n### Set user status (for bot\u002Fself)\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"profile\": {\n      \"status_text\": \"In a meeting\",\n      \"status_emoji\": \":calendar:\",\n      \"status_expiration\": 1735693200\n    }\n  }' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fusers.profile.set\"\n```\n\n## User Groups\n\n**Scopes:** `usergroups:write`, `usergroups:read`\n\n### List user groups\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fusergroups.list?include_users=true\" | jq '.usergroups[] | {id, handle, name, user_count}'\n```\n\n### Create user group\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"Backend Team\", \"handle\": \"backend-team\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fusergroups.create\"\n```\n\n### Update user group members\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"usergroup\": \"S123456\", \"users\": \"U111,U222,U333\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fusergroups.users.update\"\n```\n\n## Search\n\n**Scopes:** `search:read`\n\n### Search messages\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fsearch.messages?query=project%20deadline&sort=timestamp&count=20\" | jq '.messages.matches[] | {channel: .channel.name, user, text, ts}'\n```\n\n### Search files\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fsearch.files?query=report%20Q4&count=20\" | jq '.files.matches[] | {name, filetype, user}'\n```\n\n## Do Not Disturb\n\n**Scopes:** `dnd:write`, `dnd:read`\n\n### Set DND\n```bash\n# Snooze for 60 minutes\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fdnd.setSnooze?num_minutes=60\"\n```\n\n### End DND\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fdnd.endSnooze\"\n```\n\n### Check DND status\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fdnd.info?user=U123456\" | jq '.'\n```\n\n## Reminders\n\n**Scopes:** `reminders:write`, `reminders:read`\n\n### Create reminder\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"text\": \"Review PR #42\",\n    \"time\": \"in 2 hours\",\n    \"user\": \"U123456\"\n  }' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Freminders.add\"\n```\n\n### List reminders\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Freminders.list\" | jq '.reminders[]'\n```\n\n## Analytics & Stats\n\n### Channel message count (last 7 days)\n```bash\n# Get channel history and count\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.history?channel=C123456&oldest=$(($(date +%s) - 604800))&limit=1000\" | jq '.messages | length'\n```\n\n### Most active users in channel\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.history?channel=C123456&limit=1000\" | jq '[.messages[].user] | group_by(.) | map({user: .[0], count: length}) | sort_by(-.count) | .[0:10]'\n```\n\n### Workspace stats\n```bash\n# Count total users\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fusers.list\" | jq '[.members[] | select(.deleted==false and .is_bot==false)] | length'\n\n# Count channels\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.list?types=public_channel&exclude_archived=true\" | jq '.channels | length'\n```\n\n## Bookmarks\n\n**Scopes:** `bookmarks:write`, `bookmarks:read`\n\n### Add bookmark to channel\n```bash\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"channel_id\": \"C123456\",\n    \"title\": \"Project Wiki\",\n    \"type\": \"link\",\n    \"link\": \"https:\u002F\u002Fwiki.company.com\u002Fproject\"\n  }' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fbookmarks.add\"\n```\n\n### List bookmarks\n```bash\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fbookmarks.list?channel_id=C123456\" | jq '.bookmarks[]'\n```\n\n## Common Workflows\n\n### Daily standup reminder (schedule for 9 AM)\n```bash\n# Calculate next 9 AM timestamp\nNINE_AM=$(date -v+1d -v9H -v0M -v0S +%s)\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"{\\\"channel\\\": \\\"C123456\\\", \\\"text\\\": \\\"? Good morning team! Time for standup.\\nWhat did you do yesterday?\\nWhat will you do today?\\nAny blockers?\\\", \\\"post_at\\\": $NINE_AM}\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fchat.scheduleMessage\"\n```\n\n### Bulk invite users to a new project channel\n```bash\n# Create channel, set topic, invite team\nCHANNEL=$(curl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"project-phoenix\"}' \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.create\" | jq -r '.channel.id')\n\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"{\\\"channel\\\": \\\"$CHANNEL\\\", \\\"topic\\\": \\\"? Project Phoenix - Q1 2026\\\"}\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.setTopic\"\n\ncurl -s -X POST -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"{\\\"channel\\\": \\\"$CHANNEL\\\", \\\"users\\\": \\\"U111,U222,U333,U444\\\"}\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.invite\"\n```\n\n### Weekly channel cleanup report\n```bash\necho \"# Slack Cleanup Report\"\necho \"Generated: $(date)\"\necho \"\"\necho \"## Inactive Channels (no messages in 30 days)\"\n# List channels, check last message date\ncurl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n  \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.list?types=public_channel&exclude_archived=true&limit=500\" | \\\n  jq -r '.channels[] | \"\\(.id) \\(.name)\"' | while read id name; do\n    last_msg=$(curl -s -H \"Authorization: Bearer $SLACK_BOT_TOKEN\" \\\n      \"https:\u002F\u002Fslack.com\u002Fapi\u002Fconversations.history?channel=$id&limit=1\" | jq -r '.messages[0].ts \u002F\u002F \"0\"')\n    if [ $(echo \"$last_msg \u003C $(date -v-30d +%s)\" | bc) -eq 1 ]; then\n      echo \"- #$name (last activity: $(date -r ${last_msg%.*} +%Y-%m-%d 2>\u002Fdev\u002Fnull || echo 'never'))\"\n    fi\ndone\n```\n\n## Error Handling\n\nAll Slack API responses include `ok: true\u002Ffalse`. Check errors:\n```bash\nresponse=$(curl -s ...)\nif [ \"$(echo $response | jq -r '.ok')\" != \"true\" ]; then\n  echo \"Error: $(echo $response | jq -r '.error')\"\nfi\n```\n\nCommon errors:\n- `channel_not_found` - Invalid channel ID\n- `not_in_channel` - Bot not in channel\n- `missing_scope` - Need additional OAuth scope\n- `ratelimited` - Too many requests, check `Retry-After` header\n",{"name":5,"description":7},"main","e7e336ac628c3e3bd771aff1aaa469c93778f94a","skills\u002Fspclaudehome\u002Fslack-power-tools",0,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del","2026-08-23 22:39:37",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add kbarbel640-del\u002Fskills --skill slack-power-tools",{"tool":69,"command":70},"bunx","bunx skills add kbarbel640-del\u002Fskills --skill slack-power-tools",{"tool":72,"command":73},"pnpm","pnpm dlx skills add kbarbel640-del\u002Fskills --skill slack-power-tools","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fspclaudehome\u002Fslack-power-tools\u002FSKILL.md",true,[77],{"path":78,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":82},"_meta.json","REFERENCE","参考文档",292,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fspclaudehome\u002Fslack-power-tools\u002F_meta.json",[84,113,139,160,166,184],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":93,"publishedAt":51},"01M6G8J55967D6281ACMKAKTEQ","crowd-prompting","A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzzadrian\u002Fcrowd-prompting\u002FSKILL.md",[90],{"categoryNo":91,"categoryName":92,"taxonomyType":28,"taxonomyTypeDesc":29},"01JBSEEDCAT000000000000036","内容创作者",[94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112],"crowd prompting","prompting","api","with","tokens","domain","world","prompts","operations","instructions","text","tool","system","improve","productivity","marketplace","https","content","ai agents",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":122,"publishedAt":51},"01M6G8J0PKPAYVET6BWE8W4C26","dilemm-ai","Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzyori\u002Fdilemm-ai\u002FSKILL.md",[119],{"categoryNo":120,"categoryName":121,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[123,96,124,125,126,127,36,128,129,130,131,132,133,134,135,136,137,101,138],"dilemm ai","arena","analyze","browser","openclaw agent","automation","browser automation","bot","openclaw","design","strategy","headless","compete","submit","matchmaking","use",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":148,"publishedAt":51},"01M6G8HWAF3K9SW7NP3Z83CPJ6","arxiv-paper-reviews","Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date\u002Fcategory\u002Finterest, viewing paper details with comments, or submitting paper reviews via API at http:\u002F\u002F150.158.152.82:8000.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Fweak-accept\u002FSKILL.md",[145],{"categoryNo":146,"categoryName":147,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000021","资料检索与研究",[149,150,151,152,153,154,155,97,156,136,138,157,96,158,159],"arxiv paper reviews","reviews","arxiv","paper","crawler","papers","comments","fetch","read","http","via",{"skillNo":161,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":165,"publishedAt":51},"01M6G8HQJ7N7WMY6YV7D7SSJ16","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[164],{"categoryNo":146,"categoryName":147,"taxonomyType":20,"taxonomyTypeDesc":21},[152,151,150,149,159,154,155,97,153,136,138,156,157,96,158],{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":172,"publishedAt":51},"01M6G8HM95Y64JNVFC2HN4E2BG","git-summary","Get a quick summary of the current Git repository including status, recent commits, branches, and contributors.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzweack\u002Fgit-summary\u002FSKILL.md",[],[173,174,175,176,177,178,45,179,180,181,182,47,183],"git","summary","git summary","commits","repository","win32","linux","contributors","true","quick","branches",{"skillNo":185,"name":186,"nameZh":6,"description":187,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":188,"categories":189,"keywords":194,"publishedAt":51},"01M6G8HGEGF05CNEJCGVYFSC4R","agent-constitution","Interact with AgentConstitution governance contracts on Base Sepolia. Check compliance, read rules, log actions, query governance state.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fztsalexey\u002Fagent-constitution\u002FSKILL.md",[190,191],{"categoryNo":120,"categoryName":121,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":192,"categoryName":193,"taxonomyType":28,"taxonomyTypeDesc":29},"01JBSEEDCAT000000000000037","律师与法务",[195,196,197,198,97,199,200,56,201,157,202,203,204,205,206,110,207,208,209],"agent constitution","constitution","contracts","tree","query","base","log","check","Rules","projects","compliance","actions","state","governance","github"]