mcpField
X
x-markdown

x-markdown

github.com/ant-designDevelopment4.8k107 installsUpdated 2d ago
Repository

About x-markdown

x-markdown is a skill guide for developers rendering Markdown with @ant-design/x-markdown in React applications. It covers streaming output, incomplete syntax, custom components, plugins, themes, and safe rendering, while distinguishing rendering from chat data flow.

Key features

  1. 01Basic Markdown rendering
  2. 02Handle LLM streams and incomplete syntax
  3. 03Map custom components and tags
  4. 04Configure plugins and themes
  5. 05Handle raw HTML safely

Use cases

  1. 01Render standalone Markdown pages or docs
  2. 02Display chunked LLM responses
  3. 03Replace Markdown tags with business components

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/ant-design/x --skill x-markdown

After installing, type/x-markdownin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

reference/
API.md
CORE.md
EXTENSIONS.md
STREAMING.md

Details

From the project README

🎯 Skill Positioning

This skill focuses on one job: render Markdown correctly and predictably with @ant-design/x-markdown.

It covers:

  • Basic rendering and package boundaries
  • LLM streaming output and incomplete syntax handling
  • Custom component mapping for rich chat or data-display blocks
  • Plugins, themes, and safe rendering defaults

Table of Contents

📦 Package Boundaries

LayerPackageResponsibility
UI layer@ant-design/xChat UI, bubble lists, sender, rich interaction components
Data layer@ant-design/x-sdkProviders, requests, streaming data flow, state management
Render layer@ant-design/x-markdownMarkdown parsing, streaming rendering, plugins, themes, custom renderers

⚠️ x-markdown is not a chat-state tool. Use it to render content after @ant-design/x and @ant-design/x-sdk have already produced the message data.

🚀 Quick Start Decision Guide

If you need to...Read firstTypical outcome
Render Markdown with the smallest setupCORE.mdXMarkdown renders trusted content with basic styling
Render LLM streaming chunksSTREAMING.mdCorrect hasNextChunk, placeholders, tail indicator, loading states
Replace tags with business componentsEXTENSIONS.mdStable components map for custom tags and code blocks
Add plugins or theme overridesEXTENSIONS.mdPlugin imports, theme class wiring, minimal CSS overrides
Check prop details and defaultsAPI.mdFull prop table for XMarkdown and streaming options

🛠 Recommended Workflow

  1. Start with CORE.md and get a plain render working first.
  2. Add STREAMING.md only when the content arrives chunk-by-chunk.
  3. Add EXTENSIONS.md when you need custom tags, plugins, syntax blocks, or themes.
  4. Use API.md to confirm prop names and defaults instead of guessing.

Minimal Setup Reminder

import { XMarkdown } from '@ant-design/x-markdown';

export default () => <XMarkdown content="# Hello" />;

🚨 Development Rules

  • Prefer a stable components object. Do not create new inline component mappings on every render.
  • Use streaming.hasNextChunk = false on the final chunk, otherwise incomplete placeholders will not flush into final content.
  • Treat raw HTML carefully. Prefer escapeRawHtml when raw HTML should stay visible as text.
  • If raw HTML must be rendered, keep dompurifyConfig explicit and minimal.
  • Keep theme overrides small. Start from x-markdown-light or x-markdown-dark and override only the variables you need.
  • If a custom component depends on complete syntax, branch on streamStatus === 'done'.

🤝 Skill Collaboration

ScenarioRecommended skill combinationWhy
Rich assistant replies in chatx-chat-provider → x-request → use-x-chat → x-markdownProvider and request handle data flow, x-markdown handles final rendering
Built-in provider with Markdown repliesx-request → use-x-chat → x-markdownKeep request config and rendering concerns separate
Standalone Markdown page or docs viewerx-markdown onlyNo chat data flow needed

Boundary Rules

  • Use x-chat-provider when adapting an API shape.
  • Use x-request when configuring transport, auth, retries, or streaming separators.
  • Use use-x-chat when managing chat state in React.
  • Use x-markdown when the content itself needs Markdown parsing, streaming recovery, or rich component rendering.

🔗 Reference Resources

  • CORE.md - Package boundaries, install/setup, safe defaults, common render patterns
  • STREAMING.md - Chunked rendering, incomplete syntax recovery, loading vs done behavior
  • EXTENSIONS.md - Components, plugins, themes, custom tag guidance
  • API.md - Generated API reference from the official x-markdown docs

Official Docs

Comments

Markdown supported