Markstream custom components
Skill aiskillstore/marketplace/skills/simon-he95/markstream-custom-components
Override built-in Markstream node renderers and add trusted custom tags. Use when Codex needs to apply `setCustomComponents`, install `VueRendererMarkdown` with scoped Vue app components, keep overrides scoped with `customId`, map override keys like `image`, `code_block`, `mermaid`, or `link`, or wire `customHtmlTags` and nested renderers for tags such as `thinking`.From its SKILL.md
npx -y skills add aiskillstore/marketplace --skill markstream-custom-componentsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
SKILL.md
2.9 KB, 581 tokens by cl100k_base, as published. Nobody here has run it
Markstream Custom Components
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.
- Use
setCustomComponents(customId, mapping)instead of global mappings whenever practical. - Pass the same
customIdorcustom-idto the renderer instance. - 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.
- 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.
- 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.- Nested renderers for tag bodies that contain Markdown.
Useful Doc Targets
docs/guide/component-overrides.mddocs/guide/custom-components.mddocs/guide/components.mddocs/guide/advanced.md
What ships with it: 3 files
25.8 KB alongside SKILL.md
agents/
- openai.yaml261 B
references/
- patterns.md1.1 KB
- skill-report.json24.5 KB