Agent skill

slack

Search messages, read threads, and send messages in Slack. Use when looking up discussions, finding context about a topic, or sending notifications to channels.

Stars 77
Forks 14

Install this agent skill to your Project

npx add-skill https://github.com/letta-ai/skills/tree/main/tools/slack

SKILL.md

Slack

Search and interact with Slack workspaces from the command line.

Important: Token Security

NEVER include $SLACK_TOKEN directly in curl commands. The token will be logged and exposed.

Always use the wrapper scripts which read the token from the environment internally:

  • slack send - not curl ... -H "Authorization: Bearer $SLACK_TOKEN"
  • slack-api POST ... - for advanced API calls

Quick Setup (New Users)

bash
# Add scripts to PATH
export PATH="$PATH:$HOME/.letta/skills/slack/scripts"

# Create Slack app with one click (opens browser)
slack-setup

This opens Slack's app creation page with all permissions pre-configured. Then:

  1. Click Create to create the app
  2. Go to OAuth & PermissionsInstall to Workspace
  3. Copy the User OAuth Token (xoxp-...) - NOT the bot token
  4. Set it in your shell:
    bash
    export SLACK_TOKEN="xoxp-..."
    

Why user token? Bot tokens (xoxb-) cannot search messages (Slack limitation). User tokens can do everything bots can, plus search.

Quick Setup (Existing Token)

bash
export SLACK_TOKEN="xoxp-..."   # User token (recommended) or xoxb- bot token
export PATH="$PATH:$HOME/.letta/skills/slack/scripts"

Commands

Search messages

bash
slack search "deployment failed"
slack search "from:@caren database"
slack search "in:#engineering api"
slack search "in:#engineering after:2024-01-01 bug"

Search supports Slack's modifiers: from:, in:, to:, has:link, has:reaction, before:, after:, on:.

Send messages

bash
slack send "#general" "Hello team!"
slack send "#alerts" ":rocket: Deployment complete"
slack send "@caren" "Quick question..."

Join a channel

The bot must be a member of a channel to read its history. Join public channels with:

bash
slack join "#engineering"

For private channels, someone must invite the bot manually via Slack.

List channels

bash
slack channels

Read channel history

bash
slack history "#engineering"
slack history "#engineering" 50    # Last 50 messages

Read thread replies

bash
slack thread "C1234567890" "1234567890.123456"
slack thread "C1234567890" "1234567890.123456" --json   # Raw JSON output

Thread timestamps (ts) come from search results or channel history.

List and view users

bash
slack users
slack user "U1234567890"

Advanced: Direct API Access

For operations not covered by slack, use slack-api (keeps token secure):

bash
# Post with rich formatting (blocks)
slack-api POST chat.postMessage '{"channel": "#general", "blocks": [{"type": "section", "text": {"type": "mrkdwn", "text": "*Bold* and _italic_"}}]}'

# Add reaction
slack-api POST reactions.add '{"channel": "C1234", "timestamp": "1234.5678", "name": "thumbsup"}'

# Get user info
slack-api GET "users.info?user=U1234567890"

# Reply to thread
slack-api POST chat.postMessage '{"channel": "C1234", "thread_ts": "1234.5678", "text": "Thread reply"}'

See references/api.md for more API patterns.

Permissions Included

The manifest (slack-setup) includes these bot scopes:

Category Scopes
Search search:read
Messaging chat:write, chat:write.public, reactions:read, reactions:write
Public channels channels:read, channels:history, channels:join
Private channels groups:read, groups:history
Direct messages im:read, im:write, im:history
Users users:read, users:read.email
Files files:read, files:write
Other emoji:read, links:read

Expand your agent's capabilities with these related and highly-rated skills.

letta-ai/skills

yelp-search

Search Yelp for local businesses, get contact info, ratings, and hours. Use when finding services (cleaners, groomers, restaurants, etc.), looking up business phone numbers to text, or checking ratings before booking. Triggers on queries about finding businesses, restaurants, services, or "look up on Yelp".

77 14
Explore
letta-ai/skills

extracting-pdf-text

Extract text from PDFs for LLM consumption. Use when processing PDFs for RAG, document analysis, or text extraction. Supports API services (Mistral OCR) and local tools (PyMuPDF, pdfplumber). Handles text-based PDFs, tables, and scanned documents with OCR.

77 14
Explore
letta-ai/skills

morph-warpgrep

Integration guide for Morph's WarpGrep (fast agentic code search) and Fast Apply (10,500 tok/s code editing). Use when building coding agents that need fast, accurate code search or need to apply AI-generated edits to code efficiently. Particularly useful for large codebases, deep logic queries, bug tracing, and code path analysis.

77 14
Explore
letta-ai/skills

obsidian-cli

Work with Obsidian vaults using the official Obsidian CLI. Read, create, append, search, and manage notes, daily notes, properties, tags, tasks, sync, and more from the terminal. Use when the user mentions Obsidian, notes, vault, daily notes, or when working with markdown knowledge bases. Requires Obsidian desktop app running with CLI enabled in Settings > General.

77 14
Explore
letta-ai/skills

mcp-builder

Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).

77 14
Explore
letta-ai/skills

google-workspace

Connect to Gmail and Google Calendar via OAuth 2.0. Use when users want to search/read emails, create drafts, search calendar events, check availability, or schedule meetings. Triggers on queries about email, inbox, calendar, schedule, or meetings.

77 14
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results