{"slug": "authoring-markdown-externally-and-getting-even-prettier-output-in-slack-with", "title": "Authoring Markdown externally and getting even 'prettier' output in Slack with `md2slack`", "summary": "Developer Jamie Tanna published md2slack, a command-line tool built with Claude Sonnet 5 that converts external Markdown into Slack Block Kit messages, enabling rich rendering of tables, syntax-highlighted code blocks and formatted text in Slack. The tool requires creating and installing a Slack App into a workspace, which Tanna notes is not always straightforward at a company. Tanna built md2slack after reverse-engineering a colleague's Claude-posted Slack message that used Block Kit to render a table and code snippet inline.", "body_md": "You know what's a little bit sad to think to yourself?\n\nWow, I'm a little bit jealous of how nice that person's Slack message looks\n\nAnd yet, that something I thought to myself last week 😅\n\nI was looking at a colleague's message - which was posted to Slack via Claude - and it had the regular sort of rendered-Markdown that you'd expect from Slack, but inline in the message it had a pretty-rendered table, and a syntax-highlighted code snippet, followed by other bits of text.\n\n(Aside: I'm not really a fan of people using AI to post to Slack, because it infers that a) the human may not be involved in the loop and b) does that mean all our private conversations are now being ingested by the AI provider?)\n\nThis wasn't a \"normal\" message that could be posted normally, especially as it included multiple types of content all rendered nicely.\n\nAfter doing some digging, it looks like it was created using the [Slack Block Kit](https://docs.slack.dev/block-kit/), which is much more powerful than the interface you get through Slack's clients.\n\nWith a bit of help from Claude Sonnet 5 I managed to get it to reproduce the message via Block Kit and some API calls, which then led me to what I really wanted - to be able to post these sorts of rich messages myself.\n\nThis is a step further on my journey of writing Markdown externally and then getting it into Slack, which I've talked about before [on Linux](https://www.jvt.me/posts/2025/04/19/slack-external-markdown/) or [on Mac](https://www.jvt.me/posts/2026/01/13/mac-slack-external-markdown/).\n\nI set Claude Sonnet 5 on creating a command-line tool that would allow posting a richer Markdown body into Slack, which I've published as [`md2slack`](https://gitlab.com/tanna.dev/md2slack).\n\nFor example, let's take the following Markdown\n\n``` php\n<!-- Co-authored-by: Claude Sonnet 5 -->\n\n# Deploy Failure: `payments-api`\n\n**Status:** investigating — pods crash-looping since ~14:02 UTC.\n\nWe think this is caused by a bad config value pushed in the last release. See\nthe [rollout history](https://example.com/rollouts) for context.\n\n## What we know\n\n- Error only appears on the `us-east` cluster\n- Started right after `v2.4.1` rolled out\n- ~~Not~~ related to the database migration — ruled that out at 14:15\n\n## Timeline\n\n1. `14:02` — first crash loop alerts fire\n2. `14:09` — on-call acknowledges\n3. `14:15` — database migration ruled out\n\n## Recent error counts\n\n``` sql\nselect\n pod_name,\n COUNT(*) as errors\nfrom\n app_logs\nwhere\n service = 'payments-api'\n and level = 'ERROR'\n and ts > now() - interval '30 minutes'\ngroup by\n pod_name\norder by\n errors desc;\n```\n\n| Pod | Restarts | Status |\n| --- | ---: | --- |\n| payments-api-7d9 | 14 | `CrashLoopBackOff` |\n| payments-api-a21 | 11 | `CrashLoopBackOff` |\n| payments-api-f03 | 0 | `Running` |\n\n## Rollback\n\n``` sh\nkubectl rollout undo deployment/payments-api -n us-east\n```\n\n> Once rolled back, we'll confirm error rates return to baseline before\n> closing this out.\n```\n\nThis then renders as:\n\nThis is a much nicer view, and I'm looking forward to using it where I'm trying to share more in-depth examples that I've previously been using a snippet for (or dealing with Slack's not-that-good interface for).\n\nNote that this does require you are able to [create and install an App](https://gitlab.com/tanna.dev/md2slack/#prerequisites) into your Slack Workspace, which isn't always as straightforward at a company.", "url": "https://wpnews.pro/news/authoring-markdown-externally-and-getting-even-prettier-output-in-slack-with", "canonical_source": "https://www.jvt.me/posts/2026/09/30/slack-prettier/?utm_medium=rss&utm_source=rss", "published_at": "2026-09-30 20:01:32+00:00", "updated_at": "2026-09-30 20:18:09.770303+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools"], "entities": ["md2slack", "Slack", "Claude Sonnet 5", "Slack Block Kit", "Jamie Tanna", "Anthropic"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/authoring-markdown-externally-and-getting-even-prettier-output-in-slack-with", "markdown": "https://wpnews.pro/news/authoring-markdown-externally-and-getting-even-prettier-output-in-slack-with.md", "text": "https://wpnews.pro/news/authoring-markdown-externally-and-getting-even-prettier-output-in-slack-with.txt", "jsonld": "https://wpnews.pro/news/authoring-markdown-externally-and-getting-even-prettier-output-in-slack-with.jsonld"}}