Audit and migrate existing Markdown rendering to Markstream, or upgrade a markstream-vue 1.x integration to 2.x. Use when Codex needs to replace another renderer, classify direct vs custom vs plugin-heavy adoption, preserve behavior during adoption, migrate custom renderers into scoped Markstream overrides, decide when `nodes` streaming is worth adopting, or replace removed 1.x code-block dependencies, APIs, preview payloads, and parser types.
70
85%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Use this skill when a repo already renders Markdown and the task is either to adopt Markstream safely or to upgrade an existing markstream-vue 1.x integration to 2.x.
Inspect package.json, the lockfile, imports, and renderer props before changing code.
markstream-vue 1.x, read references/vue-1x-to-2x.md and follow Route B. Confirm the package dependency instead of routing only from shared names such as MarkdownCodeBlockNode or InternalParseOptions, which can also appear in other adapters.react-markdown, markdown-it, marked, or another renderer with a Markstream package, read references/adoption-checklist.md and follow Route A.direct: simple string-in renderer swap.renderer-custom: custom renderers but limited parser work.plugin-heavy: remark, rehype, markdown-it, or other transform-heavy pipelines.security-heavy: allow or deny lists, URL rewriting, sanitization, or raw HTML policies.streamingComponents for parser-backed tags and htmlComponents for sanitized HTML-prop components; use setCustomComponents for built-in node overrides or shared compatibility registration.customComponents input when the mapping does not need shared registration.customHtmlTags.parseOptions.preTransformTokens, postTransformTokens, or postTransformNodes only when the old pipeline truly requires token or AST transforms.nodes.
mode="chat" for AI/SSE output, mode="docs" for rich document surfaces, and mode="minimal" for lightweight non-chat surfaces.content and only needs pacing, smooth-streaming="auto" (the default) handles it without requiring nodes.nodes only when the app needs custom AST control, worker preparsing, or high-frequency structural updates.mode="chat" defaults, pair it with :fade="false".mode="chat" on the same chat row and switch pacing/animation props instead. Vue 3 streaming: mode="chat", smooth-streaming="auto", :fade="false". Vue 3 completed chat history: mode="chat", :smooth-streaming="false", optional :fade="true". Use mode="docs" only for separate rich document surfaces.markstream-vue version and package-manager resolution.next resolves to that generation, or markstream-vue@2 after stable release.monacoOptions / codeBlockMonacoOptions fields to the shared codeBlockOptions contract and delete unsupported Monaco-only fields.stream-diffs only when enhanced code or diff blocks are required; otherwise use the plain fallback.htmlPolicy / html-policy="trusted" and mermaidProps.isStrict = false instead of weakening defaults everywhere.docs/guide/migration-2-0.mddocs/guide/react-markdown-migration.mddocs/guide/react-markdown-migration-cookbook.mddocs/guide/ai-chat-streaming.mddocs/guide/installation.mddocs/guide/component-overrides.mddocs/guide/advanced.md3ffa399
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.