AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified Apache-2.0 Self-run

Slack Skill

skill-kubiyabot-skill-slack-skill · by kubiyabot

Comprehensive Slack integration for messaging, channels, users, reactions, pins, and workspace management

No reviews yet
0 installs
15 views
0.0% view→install

Install

$ agentstack add skill-kubiyabot-skill-slack-skill

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-kubiyabot-skill-slack-skill)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
6mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Slack Skill? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Slack Skill

Comprehensive Slack workspace integration with 30+ tools for messaging, channel management, user operations, reactions, pins, and more. Built with the Skill Engine SDK showcasing OAuth2 token-based authentication and the Slack Web API.

Overview

This skill provides full access to Slack's Web API, enabling automation of workspace communication and management tasks. It demonstrates type-safe parameter validation, structured error handling, and production-ready API integration patterns.

When to Use This Skill

Use this skill when you need to:

  • Send messages to channels or direct messages to users
  • Create, manage, and archive channels
  • List and search workspace users and channels
  • Add reactions and pin important messages
  • Schedule messages for later delivery
  • Manage threads and conversations
  • Upload files and snippets
  • Set user status and presence
  • Search message history
  • Automate Slack workflows

Prerequisites

  1. Slack Workspace: Admin or appropriate permissions
  2. Slack App: Create an app at api.slack.com/apps
  3. Bot Token: OAuth token with required scopes

Setting Up Your Slack App

  1. Go to https://api.slack.com/apps
  2. Click "Create New App" → "From scratch"
  3. Name your app (e.g., "Skill Engine Bot") and select your workspace
  4. Navigate to "OAuth & Permissions"
  5. Add Bot Token Scopes:

``` Required Scopes:

  • chat:write (Send messages)
  • channels:read (List public channels)
  • users:read (List users)
  • reactions:write (Add/remove reactions)
  • pins:write (Pin messages)
  • channels:manage (Create/archive channels)
  • groups:write (Manage private channels)
  • im:write (Send DMs)
  • mpim:write (Manage group DMs)
  • search:read (Search messages - optional)
  • users:write (Set status - optional)
  • files:write (Upload files - optional)

```

  1. Click "Install to Workspace" and authorize
  2. Copy the "Bot User OAuth Token" (starts with xoxb-)

Configuration

Set the Slack token as an environment variable:

export SKILL_SLACK_TOKEN=xoxb-your-token-here

Or add to .skill-engine.toml:

[skills.slack-skill.instances.default]
config.slack_token = "${SLACK_TOKEN}"

Tools

Messaging Tools (4 tools)

send-message

Send a message to a Slack channel.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | channel | string | Yes | Channel name (without #) or channel ID | | text | string | Yes | Message text (supports Slack markdown) | | thread_ts | string | No | Thread timestamp to reply in thread |

Examples:

# Send to channel
skill run slack-skill send-message channel=general text="Hello team!"

# Send with markdown
skill run slack-skill send-message channel=dev text="*Important:* New release deployed :rocket:"

# Reply in thread
skill run slack-skill send-message channel=general text="Follow-up message" thread_ts=1234567890.123456
send-dm

Send a direct message to a user.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | user | string | Yes | User ID (U12345) or @username | | text | string | Yes | Message text |

Examples:

# Send DM by username
skill run slack-skill send-dm user=@john text="Hey, can you review PR #42?"

# Send DM by user ID
skill run slack-skill send-dm user=U12345ABC text="Meeting in 10 minutes"
update-message

Update an existing message.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | channel | string | Yes | Channel ID | | ts | string | Yes | Message timestamp | | text | string | Yes | New message text |

Example:

skill run slack-skill update-message channel=C123ABC ts=1234567890.123456 text="Updated: Meeting at 3pm"
delete-message

Delete a message.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | channel | string | Yes | Channel ID | | ts | string | Yes | Message timestamp |

Example:

skill run slack-skill delete-message channel=C123ABC ts=1234567890.123456
schedule-message

Schedule a message for later delivery.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | channel | string | Yes | Channel ID or name | | text | string | Yes | Message text | | post_at | number | Yes | Unix timestamp for when to post |

Example:

# Schedule message for tomorrow at 9am (Unix timestamp)
skill run slack-skill schedule-message channel=general text="Daily standup reminder" post_at=1704283200
get-thread-replies

Get all replies in a thread.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | channel | string | Yes | - | Channel ID | | ts | string | Yes | - | Thread parent message timestamp | | limit | number | No | 50 | Maximum replies to return |

Example:

skill run slack-skill get-thread-replies channel=C123ABC ts=1234567890.123456 limit=100

Channel Tools (6 tools)

list-channels

List channels in the workspace.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | type | string | No | public | Filter: public, private, all | | limit | number | No | 50 | Maximum channels to return (1-200) |

Examples:

# List public channels
skill run slack-skill list-channels

# List all channels (public + private)
skill run slack-skill list-channels type=all limit=100

# List only private channels
skill run slack-skill list-channels type=private
get-channel-info

Get detailed information about a channel.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | channel | string | Yes | Channel name or ID |

Example:

skill run slack-skill get-channel-info channel=general
skill run slack-skill get-channel-info channel=C123ABC
create-channel

Create a new channel.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | name | string | Yes | - | Channel name (lowercase, no spaces) | | is_private | boolean | No | false | Create as private channel |

Examples:

# Create public channel
skill run slack-skill create-channel name=project-alpha

# Create private channel
skill run slack-skill create-channel name=leadership is_private=true
archive-channel

Archive a channel (make it read-only).

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | channel | string | Yes | Channel ID |

Example:

skill run slack-skill archive-channel channel=C123ABC
invite-to-channel

Invite users to a channel.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | channel | string | Yes | Channel ID | | users | string | Yes | Comma-separated user IDs |

Example:

skill run slack-skill invite-to-channel channel=C123ABC users=U111,U222,U333
kick-from-channel

Remove a user from a channel.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | channel | string | Yes | Channel ID | | user | string | Yes | User ID to remove |

Example:

skill run slack-skill kick-from-channel channel=C123ABC user=U12345
set-topic

Set the topic for a channel.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | channel | string | Yes | Channel ID | | topic | string | Yes | New topic text |

Example:

skill run slack-skill set-topic channel=C123ABC topic="Q1 2024 Planning"
set-purpose

Set the purpose/description for a channel.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | channel | string | Yes | Channel ID | | purpose | string | Yes | New purpose text |

Example:

skill run slack-skill set-purpose channel=C123ABC purpose="Discuss project alpha milestones"

User Tools (4 tools)

list-users

List users in the workspace.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | include_bots | boolean | No | false | Include bot users | | limit | number | No | 50 | Maximum users to return (1-200) |

Examples:

# List human users
skill run slack-skill list-users

# Include bots
skill run slack-skill list-users include_bots=true limit=100
get-user-info

Get information about a specific user.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | user | string | Yes | User ID or @username |

Examples:

skill run slack-skill get-user-info user=@john
skill run slack-skill get-user-info user=U12345ABC
get-presence

Get a user's presence status (active/away).

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | user | string | Yes | User ID |

Example:

skill run slack-skill get-presence user=U12345ABC
set-status

Set your own status (emoji and text).

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | statustext | string | Yes | Status text | | statusemoji | string | No | Status emoji (e.g., :coffee:) | | expiration | number | No | Unix timestamp when status expires |

Examples:

# Simple status
skill run slack-skill set-status status_text="In a meeting"

# Status with emoji
skill run slack-skill set-status status_text="On vacation" status_emoji=":palm_tree:"

# Status that expires in 1 hour
skill run slack-skill set-status status_text="Do not disturb" status_emoji=":no_entry_sign:" expiration=1704290400

Reaction Tools (2 tools)

react

Add a reaction emoji to a message.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | channel | string | Yes | Channel ID | | ts | string | Yes | Message timestamp | | emoji | string | Yes | Emoji name (without colons) |

Examples:

skill run slack-skill react channel=C123ABC ts=1234567890.123456 emoji=thumbsup
skill run slack-skill react channel=C123ABC ts=1234567890.123456 emoji=rocket
skill run slack-skill react channel=C123ABC ts=1234567890.123456 emoji=heart
unreact

Remove a reaction from a message.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | channel | string | Yes | Channel ID | | ts | string | Yes | Message timestamp | | emoji | string | Yes | Emoji name (without colons) |

Example:

skill run slack-skill unreact channel=C123ABC ts=1234567890.123456 emoji=thumbsup

Pin Tools (2 tools)

pin-message

Pin a message to a channel.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | channel | string | Yes | Channel ID | | ts | string | Yes | Message timestamp |

Example:

skill run slack-skill pin-message channel=C123ABC ts=1234567890.123456
unpin-message

Unpin a message from a channel.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | channel | string | Yes | Channel ID | | ts | string | Yes | Message timestamp |

Example:

skill run slack-skill unpin-message channel=C123ABC ts=1234567890.123456

Search & Files (2 tools)

search-messages

Search for messages across the workspace (requires search:read scope).

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | query | string | Yes | - | Search query | | count | number | No | 20 | Number of results | | sort | string | No | score | Sort by: score or timestamp |

Examples:

# Search for messages
skill run slack-skill search-messages query="deployment failed"

# Search with more results
skill run slack-skill search-messages query="bug" count=50 sort=timestamp
upload-file

Upload content as a file (text snippets, code).

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | channels | string | Yes | Comma-separated channel IDs | | content | string | Yes | File content | | filename | string | Yes | Filename | | filetype | string | No | File type (text, javascript, python, etc.) | | title | string | No | File title | | initial_comment | string | No | Comment to add with file |

Examples:

# Upload code snippet
skill run slack-skill upload-file \
  channels=C123ABC \
  content="console.log('Hello');" \
  filename=test.js \
  filetype=javascript \
  title="Test Script"

# Upload with comment
skill run slack-skill upload-file \
  channels=C123ABC,C456DEF \
  content="API logs from server..." \
  filename=logs.txt \
  filetype=text \
  initial_comment="Here are today's logs"

Utility Tools (1 tool)

test-connection

Test the Slack API connection and verify token.

Parameters: None

Example:

skill run slack-skill test-connection
# Output: Connected to Slack!
#         Team: My Workspace
#         Bot User: skill-engine-bot

Workflows

Daily Standup Automation

# Send standup reminder
skill run slack-skill send-message \
  channel=engineering \
  text=":wave: Good morning! Time for standup. Please share:\n1. What you did yesterday\n2. What you'll do today\n3. Any blockers?"

# React to responses
skill run slack-skill react channel=C123ABC ts=1234567890.123456 emoji=white_check_mark

Channel Management Workflow

# Create project channel
skill run slack-skill create-channel name=project-phoenix

# Set topic and purpose
skill run slack-skill set-topic channel=C123ABC topic="Project Phoenix - Q1 2024"
skill run slack-skill set-purpose channel=C123ABC purpose="Coordinate Project Phoenix development"

# Invite team members
skill run slack-skill invite-to-channel channel=C123ABC users=U111,U222,U333

# Send welcome message
skill run slack-skill send-message channel=project-phoenix text="Welcome to Project Phoenix! :rocket:"

Notification & Alert Workflow

# Send alert to channel
skill run slack-skill send-message \
  channel=alerts \
  text=":rotating_light: *ALERT:* Database CPU usage >90%\nServer: prod-db-01\nTime: $(date)"

# Send DM to on-call engineer
skill run slack-skill send-dm \
  user=@oncall \
  text="FYI: Alert triggered for database. Check #alerts channel."

# Pin critical message
skill run slack-skill pin-message channel=C123ABC ts=1234567890.123456

Status Update Workflow

# Set away status
skill run slack-skill set-status \
  status_text="Lunch break" \
  status_emoji=":fork_and_knife:" \
  expiration=$(date -d '+1 hour' +%s)

# Update channel topic with current sprint
skill run slack-skill set-topic \
  channel=C123ABC \
  topic="Sprint 42 (Jan 2-15) | Goal: Launch beta | Daily standup @9am"

Error Handling

The skill provides clear error messages for common issues:

| Error | Cause | Solution | |-------|-------|----------| | 401 Authentication failed | Invalid or missing token | Check SKILL_SLACK_TOKEN is set correctly | | 429 Rate limit exceeded | Too many requests | Wait and retry (headers show reset time) | | channelnotfound | Channel doesn't exist | Verify channel name/ID | | notinchannel | Bot not in channel | Invite bot to channel first | | invalidauth | Token revoked or expired | Generate new token from Slack app settings | | missingscope | Token lacks required permission | Add scope in Slack app OAuth settings and reinstall |

Rate Limits

Slack API has tiered rate limits:

  • Tier 1 (most endpoints): 1 request per second
  • Tier 2 (chat.postMessage): 1 request per second per channel
  • Tier 3 (search, files): Lowe

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.