
Slack
Wire your coding agent to Slack so it can send, read, edit, and moderate channel messages from structured tool calls.
Overview
Slack is an agent skill most often used in Build (also Operate, Grow) that exposes send/read/edit/delete, reactions, pins, and member or emoji lookups via structured slack tool actions.
Install
npx skills add https://github.com/steipete/clawdis --skill slackWhat is this skill?
- Nine documented actions: sendMessage, readMessages, editMessage, deleteMessage, react, reactions, pin/unpin, listPins, m
- Reuses channelId and Slack timestamp message IDs from agent context to avoid duplicate lookups
- Supports channel:<id> and user:<id> routing plus Unicode or :name: emoji reactions
- Requires channels.slack config in OpenClaw metadata before the tool is available
- JSON action payloads map 1:1 to common solo-builder ops (status posts, thread replies, pin runbooks)
- Nine primary Slack tool actions documented in SKILL.md (send, read, edit, delete, react, reactions, pin, unpin, listPins
Adoption & trust: 1.9k installs on skills.sh; 378k GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You want your agent in Slack threads but keep re-implementing message IDs, channel routing, and reaction APIs ad hoc.
Who is it for?
Solo builders running OpenClaw or clawdis agents that must notify a channel, triage threads, or pin runbooks during ship and operate.
Skip if: Teams that only need a one-off curl to Slack without an agent tool chain, or anyone who has not configured channels.slack yet.
When should I use this skill?
The agent must perform Slack channel operations via the slack tool and channels.slack config is present.
What do I get? / Deliverables
After invoking slack, your agent issues consistent JSON actions against configured channels and leaves auditable message, reaction, and pin state in Slack.
- Slack messages sent or updated
- Reactions, pins, or member/emoji metadata returned to the agent context
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Slack is agent-side channel integration—canonical shelf is Build because you configure tools and channel IDs before production workflows depend on them. integrations fits OpenClaw-style channel tools that call Slack APIs (send, react, pin) rather than general PM or frontend work.
Where it fits
Register channelId and map sendMessage actions before your agent joins the #releases channel.
Post a structured deploy summary and react with :white_check_mark: when CI finishes.
memberInfo and emojiList to personalize onboarding bot replies in a community Slack.
How it compares
Use this skill package for procedural Slack tool calls—not a standalone MCP server or the Slack Bolt SDK app template.
Common Questions / FAQ
Who is slack for?
Indie builders and small teams who already run agent tooling (OpenClaw/clawdis) and want Slack as a first-class channel for automation and visibility.
When should I use slack?
During Build when wiring agent integrations; during Ship or Launch when posting release notes to a channel; during Operate or Grow when reading threads, reacting, or pinning support or lifecycle updates.
Is slack safe to install?
Treat it like any channel integration: scope bot tokens minimally and review the Security Audits panel on this Prism page before enabling delete/edit actions in production workspaces.
SKILL.md
READMESKILL.md - Slack
# Slack Use the `slack` tool. Reuse `channelId` and Slack timestamp message IDs from context when present. ## Inputs - `channelId`: Slack channel ID. - `messageId`: Slack timestamp, e.g. `1712023032.1234`. - `to`: `channel:<id>` or `user:<id>` for sends. - `emoji`: Unicode or `:name:` for reactions. ## Actions ```json { "action": "sendMessage", "to": "channel:C123", "content": "Hello" } ``` ```json { "action": "readMessages", "channelId": "C123", "limit": 20 } ``` ```json { "action": "react", "channelId": "C123", "messageId": "1712023032.1234", "emoji": ":white_check_mark:" } ``` ```json { "action": "reactions", "channelId": "C123", "messageId": "1712023032.1234" } ``` ```json { "action": "editMessage", "channelId": "C123", "messageId": "1712023032.1234", "content": "Updated text" } ``` ```json { "action": "deleteMessage", "channelId": "C123", "messageId": "1712023032.1234" } ``` ```json { "action": "pinMessage", "channelId": "C123", "messageId": "1712023032.1234" } ``` ```json { "action": "unpinMessage", "channelId": "C123", "messageId": "1712023032.1234" } ``` ```json { "action": "listPins", "channelId": "C123" } ``` ```json { "action": "memberInfo", "userId": "U123" } ``` ```json { "action": "emojiList" } ``` ## Safety - Confirm destructive deletes when context is unclear. - Keep outbound messages short; avoid Markdown tables. - Prefer thread/message IDs over fuzzy channel names.