关于 markstream-custom-components
指导开发者调整 Markstream 特定节点或自定义标签渲染方式的技能。它强调优先使用局部组件映射,并根据节点类型选择覆盖、标签支持或解析器级转换。
主要功能
- 01区分内置节点、自定义标签和解析器需求
- 02优先采用局部组件映射
- 03支持嵌套 Markdown 渲染
- 04保留组件属性与清理逻辑
- 05通过针对性检查验证更改
适用场景
- 01替换链接或代码块渲染器
- 02为受信任的标签添加渲染
- 03为标签内容保留嵌套 Markdown
- 04调整 Mermaid 或图像节点
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ simon-he95/ markstream-vue --skill markstream-custom-components安装后在 Claude Code 中输入/markstream-custom-components确认已加载。
附带文件agents/openai.yamlreferences/patterns.md
详细介绍
Markstream 自定义组件
如果任务是更改 Markstream 对特定节点或自定义标签的渲染方式,请使用此技能。
选择覆盖策略前,请先阅读 references/patterns.md。
工作流
- 对请求进行分类。
built-in override:替换现有渲染器,例如image、link、code_block、mermaid、d2或inline_code。custom tag:支持可信的类 HTML 标签,例如thinking。parser-level:需要转换 token 或重塑 AST。只有这种情况才应离开此技能并使用底层解析器钩子。
- 优先使用限定作用域的映射。
- Vue、Vue 2、Svelte 和共享的 Angular 注册:只要可行,就使用
setCustomComponents(customId, mapping),而不是全局映射,并传入相同的customId/custom-id。 - React 自定义标签:对于解析器支持的节点,优先使用渲染器本地的
streamingComponents;对于经清理的 HTML 属性和children,优先使用htmlComponents。使用defineStreamingComponents(...)/defineHtmlComponents(...)定义带类型的映射。将setCustomComponents用于内置节点覆盖或共享的旧式注册。 - 如果覆盖不应加入共享注册表,Svelte 和 Angular 也可以传入渲染器本地的
customComponents映射。 - 在 Vue 3 应用/插件设置中,从
markstream-vue导入{ VueRendererMarkdown },并通过{ components }安装,以便将覆盖限定到 Vue 应用实例。
- Vue、Vue 2、Svelte 和共享的 Angular 注册:只要可行,就使用
- 从最小且安全的覆盖开始。
- 类叶节点(
image、link、inline_code、mermaid)比容器节点(heading、paragraph、list_item)更容易处理。 - 如果请求只涉及 Mermaid,请使用
mermaid,不要使用code_block。
- 类叶节点(
- 必要时保留嵌套 Markdown。
- 对于包含内部 Markdown 的可信自定义标签,使用嵌套渲染器渲染
node.content。 - 将相同的自定义标签允许列表传递给嵌套渲染器。
- 在平滑流式传输的父级中,嵌套渲染器会自动停用,以避免重复节奏控制——不要给子渲染器添加
smooth-streaming。 - 在 React 中,
streamingComponents会自动将其键加入有效的自定义标签列表;除非其他解析器路径需要这些键,否则不要在customHtmlTags中重复添加。
- 对于包含内部 Markdown 的可信自定义标签,使用嵌套渲染器渲染
- 保持属性和清理逻辑完整。
- 保留
node、loading、indexKey、customId和isDark。 - 对于
mermaid和infographic覆盖,保留estimatedPreviewHeightPx,以便异步预览外壳在重新挂载期间保持高度稳定。 - 作用域不再需要时,使用
removeCustomComponents(customId)移除临时的限定作用域映射。
- 保留
- 使用最精简且有效的检查进行验证。
- 优先使用本地演示、针对性测试或文档构建。
- 说明该实现对于重复和嵌套的自定义标签是否安全。
默认决策
- 优先使用限定作用域的覆盖;只有整个应用确实需要时才使用全局覆盖。
- 优先覆盖叶节点,而不是容器节点。
- 优先使用
customHtmlTags加限定作用域的自定义组件,而不是解析器钩子。 - 在 React 中,优先使用渲染器本地组件映射,而不是修改注册表。
- 对于包含 Markdown 的标签主体,使用嵌套渲染器。
实用文档
docs/guide/component-overrides.mddocs/guide/custom-components.mddocs/guide/react-components.mddocs/guide/components.mddocs/guide/advanced.md
评论
支持 Markdown