slack-webhook

$npx mdskill add vm0-ai/vm0-skills/slack-webhook

Post formatted messages to Slack via webhook

  • Enables agents to send text, links, and rich blocks to Slack
  • Requires a configured Slack webhook URL for message delivery
  • Accepts JSON payloads with text, formatting, or block structures
  • Delivers output directly to Slack channels as formatted posts
SKILL.md
.github/skills/slack-webhookView on GitHub ↗
---
name: slack-webhook
description: Slack Webhook for posting messages. Use when user says "post to Slack",
  "Slack webhook", or "send Slack notification".
---

## Usage

### Simple Message

Write to `/tmp/slack_request.json`:

```json
{
  "text": "Hello, world."
}
```

Then run:

```bash
curl -X POST $SLACK_WEBHOOK_URL -H "Content-type: application/json" -d @/tmp/slack_request.json
```

### With Formatting

Write to `/tmp/slack_request.json`:

```json
{
  "text": "*Bold* and _italic_ text"
}
```

Then run:

```bash
curl -X POST $SLACK_WEBHOOK_URL -H "Content-type: application/json" -d @/tmp/slack_request.json
```

### With Link

Write to `/tmp/slack_request.json`:

```json
{
  "text": "Check <https://example.com|this link>"
}
```

Then run:

```bash
curl -X POST $SLACK_WEBHOOK_URL -H "Content-type: application/json" -d @/tmp/slack_request.json
```

### With Blocks (Rich Layout)

Write to `/tmp/slack_request.json`:

```json
{
  "text": "New review submitted",
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "Danny left the following review:"
      }
    },
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "<https://example.com|Overlook Hotel>\n:star:\nDoors had too many axe holes."
      }
    }
  ]
}
```

Then run:

```bash
curl -X POST $SLACK_WEBHOOK_URL -H "Content-type: application/json" -d @/tmp/slack_request.json
```

### With Fields

Write to `/tmp/slack_request.json`:

```json
{
  "text": "Deployment status",
  "blocks": [
    {
      "type": "section",
      "fields": [
        {
          "type": "mrkdwn",
          "text": "*Environment:*\nProduction"
        },
        {
          "type": "mrkdwn",
          "text": "*Status:*\nSuccess"
        }
      ]
    }
  ]
}
```

Then run:

```bash
curl -X POST $SLACK_WEBHOOK_URL -H "Content-type: application/json" -d @/tmp/slack_request.json
```

## Message Formatting

| Syntax | Result |
|--------|--------|
| `*bold*` | **bold** |
| `_italic_` | _italic_ |
| `~strike~` | ~~strike~~ |
| `` `code` `` | `code` |
| `\n` | newline |
| `<URL\|text>` | hyperlink |
| `:emoji:` | emoji |

## Shell Escaping

Messages with `!` may fail due to shell history expansion. Use heredoc:

```bash
curl -s -X POST $SLACK_WEBHOOK_URL -H "Content-type: application/json" -d @- << 'EOF'
{"text":"Deploy completed! :rocket:"}
EOF
```

## Response

Success: `ok` (HTTP 200)

Errors:
- `invalid_payload` - Malformed JSON
- `no_text` - Missing `text` field
- `no_service` - Webhook disabled or invalid
- `channel_not_found` - Channel deleted
- `channel_is_archived` - Channel archived
- `action_prohibited` - Admin restriction

## Limitations

- One webhook = one channel only
- Cannot override username or icon (set in app config)
- Send only (no reading messages)
- Cannot delete messages after posting
- Rate limit: 1 message/second

For full API access, use the `slack` skill with Bot Token.

## API Reference

- Webhooks Guide: https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks
- Block Kit Builder: https://app.slack.com/block-kit-builder
- Message Formatting: https://docs.slack.dev/messaging/formatting-message-text
More from vm0-ai/vm0-skills