home / skills / openclaw / openclaw / slack

slack skill

/skills/slack

This skill helps you control Slack from OpenClaw by reacting, pinning, and messaging in channels and DMs.

npx playbooks add skill openclaw/openclaw --skill slack

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
2.3 KB
---
name: slack
description: Use when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
metadata: {"openclaw":{"emoji":"πŸ’¬","requires":{"config":["channels.slack"]}}}
---

# Slack Actions

## Overview

Use `slack` to react, manage pins, send/edit/delete messages, and fetch member info. The tool uses the bot token configured for OpenClaw.

## Inputs to collect

- `channelId` and `messageId` (Slack message timestamp, e.g. `1712023032.1234`).
- For reactions, an `emoji` (Unicode or `:name:`).
- For message sends, a `to` target (`channel:<id>` or `user:<id>`) and `content`.

Message context lines include `slack message id` and `channel` fields you can reuse directly.

## Actions

### Action groups

| Action group | Default | Notes |
| --- | --- | --- |
| reactions | enabled | React + list reactions |
| messages | enabled | Read/send/edit/delete |
| pins | enabled | Pin/unpin/list |
| memberInfo | enabled | Member info |
| emojiList | enabled | Custom emoji list |

### React to a message

```json
{
  "action": "react",
  "channelId": "C123",
  "messageId": "1712023032.1234",
  "emoji": "βœ…"
}
```

### List reactions

```json
{
  "action": "reactions",
  "channelId": "C123",
  "messageId": "1712023032.1234"
}
```

### Send a message

```json
{
  "action": "sendMessage",
  "to": "channel:C123",
  "content": "Hello from OpenClaw"
}
```

### Edit a message

```json
{
  "action": "editMessage",
  "channelId": "C123",
  "messageId": "1712023032.1234",
  "content": "Updated text"
}
```

### Delete a message

```json
{
  "action": "deleteMessage",
  "channelId": "C123",
  "messageId": "1712023032.1234"
}
```

### Read recent messages

```json
{
  "action": "readMessages",
  "channelId": "C123",
  "limit": 20
}
```

### Pin a message

```json
{
  "action": "pinMessage",
  "channelId": "C123",
  "messageId": "1712023032.1234"
}
```

### Unpin a message

```json
{
  "action": "unpinMessage",
  "channelId": "C123",
  "messageId": "1712023032.1234"
}
```

### List pinned items

```json
{
  "action": "listPins",
  "channelId": "C123"
}
```

### Member info

```json
{
  "action": "memberInfo",
  "userId": "U123"
}
```

### Emoji list

```json
{
  "action": "emojiList"
}
```

## Ideas to try

- React with βœ… to mark completed tasks.
- Pin key decisions or weekly status updates.

Overview

This skill lets the AI control Slack via the OpenClaw slack tool to react to messages, manage pins, and send, edit, or delete messages. It uses the bot token configured for OpenClaw and supports message-level operations, member lookups, and custom emoji listings. Designed for programmatic Slack workflows from your personal assistant.

How this skill works

Provide channelId and messageId (Slack timestamp) when acting on messages. Actions include reacting, listing reactions, sending/editing/deleting messages, reading recent messages, pinning/unpinning, listing pins, fetching member info, and listing custom emoji. Inputs like emoji, target (channel:<id> or user:<id>), and content are accepted depending on the action.

When to use it

  • Mark messages as done or acknowledged by adding reactions.
  • Share announcements or updates by sending messages to channels or users.
  • Pin important decisions, docs, or weekly summaries in a channel.
  • Audit or fetch recent conversation context before taking action.
  • Lookup user details to personalize messages or check availability.

Best practices

  • Always pass the Slack message timestamp as messageId (e.g., 1712023032.1234).
  • Use explicit channelId and to: channel:<id> or user:<id> to avoid ambiguous targets.
  • Prefer idempotent actions (react, pin) for state signaling instead of repeated messages.
  • Limit readMessages with a sensible limit to avoid large payloads.
  • Validate emoji input (Unicode or :name:) before sending reactions.

Example use cases

  • React with βœ… to mark a task complete on a team message.
  • Pin a weekly status message so everyone can find it later.
  • Send a direct message with onboarding steps to a new team member.
  • Edit a previously posted announcement to correct details.
  • List pinned items to compile a quick reference of key artifacts.

FAQ

What format should messageId use?

Use Slack's message timestamp format, e.g., 1712023032.1234.

How do I target a user versus a channel when sending?

Set the to field to channel:<id> for channels or user:<id> for direct messages.