Integrate markstream-vue into a Vue 3 app. Use when Codex needs to add the Vue 3 renderer, import CSS in the right order, choose `mode="chat"`, `mode="docs"`, or `mode="minimal"`, choose between `cont
Use this skill when the host app is plain Vue 3, typically Vite-based, and not Nuxt.
Its 765-word system prompt specializes your agent in testing & qa with structured methodology and proven output formats. Copy the prompt below to use in any AI coding agent.
Use this skill when the host app is plain Vue 3, typically Vite-based, and not Nuxt.
markstream-vue plus only the optional peers required by the requested features.markstream-vue/index.css after resets.@import 'markstream-vue/index.css' layer(components);.
- The root JS import does not inject styles; use markstream-vue/index.css or markstream-vue/index.px.css explicitly.
content and choose the renderer mode by surface.mode="chat" for AI chat or SSE output. It uses lightweight batches, <pre> code rendering by default, fade=false, and max-live-nodes=0; smooth-streaming="auto" paces visible output.
- Use mode="docs" for rich document surfaces. It is the default, enables larger batches, tooltips, fade, and Monaco-backed code blocks when the peer is installed.
- Use mode="minimal" when the surface is lightweight but not chat.
- If a docs page does not need Monaco-backed code blocks, set :render-code-blocks-as-pre="true".
- typewriter only controls the blinking cursor and defaults to false.
- Set :smooth-streaming="false" to preserve raw chunk cadence; set :smooth-streaming="true" to force smooth pacing even on first-screen content (may cause hydration mismatch in SSR).
- When overriding mode defaults on a high-frequency stream, pair smooth streaming with :fade="false" to avoid delta fade (280 ms) stacking with high-commit pacing.
- Streaming vs recovering history: in chat UIs the same MarkdownRender starts streaming and later switches to history when final=true.
- Streaming: mode="chat", smooth-streaming="auto", :fade="false", typewriter=true.
- Recovering/completed chat history: keep mode="chat" on the same chat row to avoid switching code renderer or layout strategy when final=true; use :smooth-streaming="false", typewriter=false, and only set :fade="true" when the host explicitly wants a history-entry animation.
- Use mode="minimal" for lightweight non-chat recovered content, and use mode="docs" only for rich document surfaces, not for finalizing an existing chat message.
- Switch to nodes plus final only when the app needs custom AST control, worker preparsing, or structural updates beyond pacing.
- Remember that html-policy now defaults to safe, and Mermaid strict mode is on by default through mermaid-props.
MarkstreamVirtualTimeline when the app does not already own timeline virtualization.
- If the app already uses vue-virtual-scroller DynamicScroller, use useMarkstreamVirtualAdapter() and bind adapter.markdownProps(item, index) to Markdown items.
- Put adapter.measureItem(item, index, el) on the outer timeline row so row chrome is included in item height.
- Use Markstream's reported logical height (metrics.totalHeight through the adapter/virtualizer), not the renderer element's current offsetHeight, because Markdown node virtualization may only mount the live window.
- On thread switches, save adapter.captureThreadState() together with the scroller cache; restore the scroller cache before restoring the Markstream anchor.
custom-id plus scoped setCustomComponents(...) for local overrides, or import { VueRendererMarkdown } from markstream-vue and install it when the repo already has an app-level plugin entry.content; choose mode before fine-tuning lower-level render props.mode only when the surface should use rich docs defaults.smooth-streaming="auto") is on by default when typewriter or max-live-nodes <= 0. It only paces the content path; nodes mode is never affected.nodes, use useSmoothMarkdownStream directly: enqueue() chunks, finish() when done, render from visible, and wait for caughtUp before final parsing.final=true, disable smooth streaming/typewriter and optionally enable fade. Switch to mode="docs" only when moving content into a separate rich document surface. See docs/guide/ai-chat-streaming.md for full examples.virtual-scroll only on large Markdown messages.vue-virtual-scroller, keep sessionKey tied to content identity (thread:item:revision) and measurementKey tied to layout identity such as width, theme, font, and density.preloadCodeBlockRuntime from markstream-vue. Existing getUseMonaco() preloads remain valid; do not import stream-monaco directly just to warm workers.html-policy="safe" and Mermaid strict mode unless the task is explicitly preserving trusted legacy behavior.html-policy="trusted" and :mermaid-props="{ isStrict: false }", and call out the trust boundary in the final handoff.markstream-nuxt.docs/guide/quick-start.mddocs/guide/installation.mddocs/guide/usage.mddocs/guide/ai-chat-streaming.mddocs/guide/performance.mddocs/guide/component-overrides.mdMarkstream Vue is a free testing & qa skill for AI coding agents. Integrate markstream-vue into a Vue 3 app. Use when Codex needs to add the Vue 3 renderer, import CSS in the right order, choose `mode="chat"`, `mode="docs"`, or `mode="minimal"`, choose between `cont. It provides a specialized system prompt that configures your agent with testing & qa expertise.
Copy the system prompt below and paste it into your CLAUDE.md file or Claude Code's custom instructions to activate Markstream Vue.
Markstream Vue is compatible with Claude Code, Cursor, GitHub Copilot, Windsurf, OpenClaw, Cline, and any AI agent that supports custom system prompts or .cursorrules files.
Yes, Markstream Vue is completely free and open source. The full source is available on GitHub at https://github.com/Simon-He95/markstream-vue/blob/main/.agents/skills/markstream-vue/SKILL.md. You only need a subscription to the AI agent you use it with.
Weekly roundup of top Claude Code skills, MCP servers, and AI coding tips.