Skip to content

[Knowledge] Slack chat.postMessage — should recommend Block Kit over plain text for rich messages #2

@lucasygu

Description

@lucasygu

Platform

slack

Action ID

conn_mod_def::GJ7H84zBlaI::BCfuA16aTaGVIax5magsLA

Action Name

Send a Message to a Channel

What's wrong?

Other

Description

The knowledge documents text as the primary way to send message content, with blocks listed as an optional field. In practice, any AI agent sending structured data (reports, comparisons, audit results) via plain text produces poorly formatted messages because Slack's mrkdwn is NOT standard markdown.

Key issues AI agents hit:

1. Markdown tables don't render in Slack
AI agents generating reports naturally produce markdown tables. Slack doesn't support tables — they render as broken monospace text. The knowledge should explicitly warn about this.

2. Slack mrkdwn ≠ Markdown — differences not documented

Feature Standard Markdown Slack mrkdwn
Bold **bold** *bold*
Italic *italic* _italic_
Tables Supported Not supported
Headings (#) Supported Not supported
Links [text](url) <url|text>
Strikethrough ~~text~~ ~text~

An AI agent that doesn't know this will use **bold** (which Slack renders literally) and markdown tables (which break).

3. Block Kit should be the recommended approach for rich messages

The knowledge should recommend blocks as the primary content delivery method for structured messages, with text as the notification fallback. Block Kit supports:

  • header blocks — large text for report titles
  • section blocks with fields — 2-column layouts (replaces tables)
  • divider blocks — visual separation between sections
  • context blocks — small metadata text
  • Emoji shortcodes for visual indicators (:white_check_mark:, :x:, :warning:)

Suggested additions to knowledge:

  1. Add a "Formatting Guide" section that documents Slack mrkdwn vs Markdown differences
  2. Add a "Rich Messages with Block Kit" section showing a practical example:
{
  "channel": "C123ABC456",
  "text": "Report summary (fallback for notifications)",
  "blocks": [
    {
      "type": "header",
      "text": { "type": "plain_text", "text": "Weekly Report" }
    },
    {
      "type": "section",
      "fields": [
        { "type": "mrkdwn", "text": "*Metric A*\n:white_check_mark: 95%" },
        { "type": "mrkdwn", "text": "*Metric B*\n:warning: 72%" }
      ]
    },
    {
      "type": "divider"
    },
    {
      "type": "section",
      "text": { "type": "mrkdwn", "text": "*Action Items*\n1. Fix the thing\n2. Ship the feature" }
    }
  ]
}
  1. Add a warning: "Do NOT use markdown table syntax (| col |) — Slack does not render tables. Use section blocks with fields for side-by-side data instead."

How we discovered this

Building One CLI flow templates that post analysis reports to Slack. The SEO competitive analysis report contained markdown tables comparing 4 sites — rendered as unreadable broken text in Slack. After switching to Block Kit with header blocks, section fields, dividers, and emoji indicators, the same data rendered cleanly with proper structure.

Source

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions