slack-webhook

📁 vm0-ai/vm0-skills 📅 Jan 24, 2026
32
总安装量
22
周安装量
#11545
全站排名
安装命令
npx skills add https://github.com/vm0-ai/vm0-skills --skill slack-webhook

Agent 安装分布

claude-code 15
opencode 14
gemini-cli 14
antigravity 12
codex 12
cursor 11

Skill 文档

Slack Incoming Webhook

Send messages to a Slack channel using Incoming Webhooks. No OAuth or bot setup required.

When to Use

  • Send notifications to a specific channel
  • CI/CD notifications, alerts, status updates
  • Quick integration without full Slack app setup

Prerequisites

export SLACK_WEBHOOK_URL=https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXX

Get Webhook URL

  1. Create app: https://api.slack.com/apps → Create New App → From scratch
  2. Select Incoming Webhooks → Toggle On
  3. Click Add New Webhook to Workspace
  4. Select channel → Allow
  5. Copy Webhook URL

Important: When using $VAR in a command that pipes to another command, wrap the command containing $VAR in bash -c '...'. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.

bash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY"' | jq .

Usage

Simple Message

Write to /tmp/slack_request.json:

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

Then run:

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

With Formatting

Write to /tmp/slack_request.json:

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

Then run:

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

With Link

Write to /tmp/slack_request.json:

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

Then run:

bash -c '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:

{
  "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 -c 'curl -X POST $SLACK_WEBHOOK_URL -H "Content-type: application/json" -d @/tmp/slack_request.json'

With Fields

Write to /tmp/slack_request.json:

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

Then run:

bash -c '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 -c '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