Markstream Custom Components
SkillDev toolsLets your agent customize how Markstream renders markdown nodes and custom tags in Vue, React, Svelte, and Angular apps.
Then ask your AI: use the Markstream Custom Components skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add it as a step in a pipeline you build on Ahel, or connect Ahel to Claude, ChatGPT, Cursor, Claude Code or Codex and ask your AI to use it.
About this skill
Override built-in Markstream node renderers and add trusted custom tags across Vue, React, Svelte, and Angular. Use when Codex needs scoped `setCustomComponents`, renderer-local React `streamingComponents` or `htmlComponents`, Angular/Svelte `customComponents`, Vue app-scoped components, node overri
What this skill tells your AI
The instructions your AI receives, as published by simon-he95/markstream-vue in .agents/skills/markstream-custom-components/SKILL.md and read by Ahel’s review.
Use this skill when the task is to change how Markstream renders specific nodes or custom tags.
Read references/patterns.md before choosing an override strategy.
Workflow
- Classify the request.
built-in override: replace an existing renderer such asimage,link,code_block,mermaid,d2, orinline_code.custom tag: support trusted HTML-like tags such asthinking.parser-level: requires token transforms or AST reshaping. Only then should you leave this skill and use low-level parser hooks.
- Prefer scoped mappings.
- Vue, Vue 2, Svelte, and shared Angular registration: use
setCustomComponents(customId, mapping)instead of global mappings whenever practical, and pass the samecustomId/custom-id. - React custom tags: prefer renderer-local
streamingComponentsfor parser-backed nodes orhtmlComponentsfor sanitized HTML props pluschildren. UsedefineStreamingComponents(...)/defineHtmlComponents(...)for typed maps. KeepsetCustomComponentsfor built-in node overrides or shared legacy registration. - Svelte and Angular can also pass a renderer-local
customComponentsmap when the override should not enter the shared registry. - In Vue 3 app/plugin setup, import
{ VueRendererMarkdown }frommarkstream-vueand install it with{ components }when the override should be scoped to the Vue app instance.
- Vue, Vue 2, Svelte, and shared Angular registration: use
- Start with the smallest safe override.
- Leaf-like nodes (
image,link,inline_code,mermaid) are easier than container nodes (heading,paragraph,list_item). - If the request only changes Mermaid, use
mermaid, notcode_block.
- Leaf-like nodes (
- Preserve nested Markdown when needed.
- For trusted custom tags with inner Markdown, render
node.contentwith a nested renderer. - Pass the same custom-tag allowlist to nested renderers.
- Nested renderers inside a smooth-streaming parent are automatically suppressed from double pacing — do not add
smooth-streamingto child renderers. - In React,
streamingComponentsautomatically contributes its keys to the effective custom-tag list; do not duplicate those keys incustomHtmlTagsunless another parser path needs them.
- For trusted custom tags with inner Markdown, render
- Keep props and cleanup intact.
- Preserve
node,loading,indexKey,customId, andisDark. - For
mermaidandinfographicoverrides, preserveestimatedPreviewHeightPxso async preview shells keep stable height during remounts. - Remove temporary scoped mappings with
removeCustomComponents(customId)when the scope is no longer needed.
- Preserve
- Validate with the smallest useful check.
- Prefer a local demo, targeted test, or docs build.
- Call out whether the implementation is safe for repeated and nested custom tags.
Default Decisions
- Scoped overrides first, global overrides only when the whole app truly needs them.
- Leaf-node overrides before container-node overrides.
customHtmlTagsplus scoped custom components before parser hooks.- In React, renderer-local component maps before registry mutation.
- Nested renderers for tag bodies that contain Markdown.
Useful Doc Targets
docs/guide/component-overrides.mddocs/guide/custom-components.mddocs/guide/react-components.mddocs/guide/components.mddocs/guide/advanced.md
Signals
- GitHub stars
- 3k
- Forks
- 188
- Last commit
- Oct 2026
Advanced
- Item type
- skill
- Key
markstream-custom-components-simon-he95- Source
- github.com/simon-he95/markstream-vue
github.com/simon-he95/markstream-vue
Related picks
Skill · cometchat
The pick for Angularintegration-angular
Skill · posthog
The pick for Angularreact-component-performance
Skill · davila7
The pick for Reactreact-doctor
Skill · millionco
The pick for Reactsvelte
Skill · liyang8246
The pick for Sveltedevtools-svelte
Skill · vercel-labs
The pick for Svelte