Skip to content

Slack rich draft notification: Block Kit with synthesis, draft, and actions #74

Description

@farzanmrz

Per-desk Slack delivery already works (Slice 5: OAuth install via Setup → Connect Slack; api/slack/interactions handles buttons with the 3s-ack deferred-work pattern). Today's message is plain mrkdwn (lib/notify/compose.ts: "New draft — from a post by @handle / quoted source / draft", with a revised variant).

This issue: upgrade the message to Block Kit —

No install/setup changes — delivery path and per-desk app are unchanged; only the payload shape changes.

Depends on #73. Blocks #75.


Tooling note (2026-07-26): No Slack app-dev CLI/plugin/MCP is installed (searched user skills, plugin cache, user+repo MCP configs — none; install the official Slack CLI fresh if wanted). Available: the claude.ai Slack connector MCP (workspace messaging — use it to VERIFY delivered Block Kit messages in-channel during QC) and the vercel:chat-sdk skill (Slack bot guidance: cards, modals, webhooks — evaluate against this repo's raw-fetch/no-vendor-SDK convention in lib/slack + lib/notify before adopting anything from it). Slack's official Block Kit docs are the source of truth.


Docs grounding (2026-07-26): A slack-docs agent now exists in the user config (~/.claude/agents/slack-docs.md) — a curated docs.slack.dev URL index; delegate Slack-API questions to it instead of fetching ad hoc. Highest-leverage facts for this issue: every docs page is raw markdown via a .md suffix; prototype the payload in Block Kit Builder (https://api.slack.com/tools/block-kit-builder) and paste the exported JSON into the raw chat.postMessage call; 50-block message limit; button element limits (text ≤75 chars, value ≤2000 — the draft id goes in value); see /concepts/designing-with-block-kit for post-click message cleanup rules.

Bonus (2026-07-26): the installed Slack plugin ships a slack:block-kit skill that builds and validates layouts via Slack's blocks.validate API — use it during implementation instead of eyeballing JSON.

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew or improved product behavior

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions