Setup & Installation

clawhub install slack-block-kit

Or with OpenClaw CLI:

openclaw skills install slack-block-kit

What This Skill Does

slack-block-kit is a Communication & Messaging skill that send rich Slack Block Kit messages — native tables, structured layouts. Use when formatting tabular data for Slack, sending Block Kit payloads, or when markdown tables render poorly in Slack..

Slack Block Kit

Send native Block Kit payloads to Slack. Primary use case: tables (Slack's native table block type).

When to Use

  • Tabular data in Slack (financial summaries, comparison grids, status dashboards)
  • Markdown tables render poorly or not at all in Slack — use Block Kit tables instead

Sending Block Kit Tables

Quick Path: scripts/table.mjs

Generate table JSON from headers + rows:

node <skill_dir>/scripts/table.mjs \
  --headers '["Source","Amount","Status"]' \
  --rows '[["Mochary","$11K","Pending"],["MHC","$13.4K","Invoiced"]]' \
  --align '1:right' \
  --compact --blocks-only

Options:

  • --headers '["H1","H2"]' — first row (bold by default)
  • --rows '[["a","b"],["c","d"]]' — data rows
  • --json '{"headers":[...],"rows":[...]}' — single JSON input
  • --stdin — read JSON from stdin
  • --align '<col>:<left|center|right>,...' — column alignment (0-indexed)
  • --wrap '<col>,...' — columns to wrap text
  • --no-bold-headers — plain text headers
  • --compact — minified JSON
  • --blocks-only — output just the blocks array (for API calls)

Empty cells are handled automatically (zero-width space).

Posting to Slack

The message tool does not pass blocks through. Use the Slack API directly:

BLOCKS=$(node <skill_dir>/scripts/table.mjs --compact --blocks-only \
  --headers '["Col A","Col B"]' \
  --rows '[["val1","val2"]]')

curl -s -X POST https://slack.com/api/chat.postMessage \
  -H "Authorization: Bearer $SLACK_BOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d "$(jq -n \
    --arg channel "$CHANNEL_ID" \
    --arg thread "$THREAD_TS" \
    --argjson blocks "$BLOCKS" \
    '{channel: $channel, thread_ts: $thread, text: "Fallback text", blocks: $blocks}')"

The bot token is in openclaw.json at channels.slack.botToken. The text field is required (accessibility fallback) but won't display when blocks render.

Table Block Constraints

  • 1 table per message (Slack limit)
  • Max 100 rows, max 20 columns
  • Cells: raw_text (plain) or rich_text (bold, links, mentions)
  • Empty text is not allowed — the script uses zero-width spaces automatically

Combining Text + Table

Post your text message first via message tool, then post the table in the same thread via curl. Or include a section block before the table in the blocks array.

Manual Block Kit JSON

For non-table blocks or custom layouts, construct the JSON directly. Reference: https://docs.slack.dev/reference/block-kit/blocks/table-block/

Cell with bold text:

{"type": "rich_text", "elements": [{"type": "rich_text_section", "elements": [{"type": "text", "text": "Bold", "style": {"bold": true}}]}]}

Plain text cell:

{"type": "raw_text", "text": "Plain"}

Version History

Latest version: 1.0.0

First published: Mar 18, 2026. Last updated: Mar 18, 2026.

1 version released.

Frequently Asked Questions

Is slack-block-kit free to use?
Yes. slack-block-kit is a free, open-source skill available on the OpenClaw Skills Registry.
What platforms does slack-block-kit support?
It runs on any platform that supports OpenClaw, including macOS, Linux, and Windows.