关于 markstream-migration
用于将其他 Markdown 渲染器迁移到 Markstream,或将 markstream-vue 1.x 升级至 2.x。技能强调保留现有行为、审查安全与迁移差异,并验证改动。
主要功能
- 01选择采用或升级路线
- 02审查渲染器用法与依赖
- 03迁移自定义渲染组件
- 04检查 HTML 与安全行为
- 05验证改动并准备回退
适用场景
- 01替换 react-markdown 或 marked
- 02将 markstream-vue 1.x 升级至 2.x
- 03迁移自定义渲染器映射
- 04审查 Markdown 安全差异
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ simon-he95/ markstream-vue --skill markstream-migration安装后在 Claude Code 中输入/markstream-migration确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/adoption-checklist.mdvue-1x-to-2x.md详细介绍
Markstream 迁移
当仓库已能渲染 Markdown,且任务是安全地采用 Markstream 或将现有的 markstream-vue 1.x 集成升级到 2.x 时,请使用此技能。
选择迁移路线
更改代码前,请检查 package.json、锁文件、导入内容和渲染器属性。
- 如果仓库已依赖
markstream-vue1.x,请阅读 references/vue-1x-to-2x.md 并遵循 路线 B。请确认软件包依赖,而不要仅根据MarkdownCodeBlockNode或InternalParseOptions等共有名称选择路线,因为其他适配器中也可能出现这些名称。 - 否则,如果要用 Markstream 软件包替换
react-markdown、markdown-it、marked或其他渲染器,请阅读 references/adoption-checklist.md 并遵循 路线 A。 - 如果两种情况都适用,请先完成从 1.x 到 2.x 的软件包和 API 升级,然后再将单独的渲染器替换作为采用任务进行审核。
路线 A:从其他渲染器迁移到 Markstream
- 审查仓库当前对渲染器的使用情况。
- 搜索 Markdown 渲染器、插件链、原始 HTML 处理、安全属性和自定义渲染器。
- 列出所有需要修改的调用点。
- 对迁移进行分类。
direct:简单地替换字符串输入的渲染器。renderer-custom:使用了自定义渲染器,但解析器工作有限。plugin-heavy:使用了 remark、rehype、markdown-it 或其他转换密集型流水线。security-heavy:涉及允许或拒绝列表、URL 重写、清理或原始 HTML 策略。
- 先替换渲染器。
- 引入合适的 Markstream 包和 CSS。
- 通过包的 CSS 子路径导入 Markstream CSS;不要依赖渲染器导入来注入样式。
- 添加更丰富的 Markstream 专属功能之前,先保留用户可见行为。
- 在宣称行为一致之前,检查旧渲染器是否允许宽泛的原始 HTML 或 Mermaid 宽松模式 HTML 标签。
- 迁移自定义渲染器。
- 将内置节点渲染器转换为限定范围的节点类型覆盖。
- 在 React 中,对于由解析器处理的标签,优先使用渲染器本地的
streamingComponents;对于经过清理的 HTML 属性组件,优先使用htmlComponents;对于内置节点覆盖或共享兼容性注册,使用setCustomComponents。 - 在 Svelte 或 Angular 中,如果映射不需要共享注册,优先使用渲染器本地的
customComponents输入。 - 对于可信的类标签内容,优先使用
customHtmlTags。 - 只有当旧流水线确实需要令牌或 AST 转换时,才使用
parseOptions.preTransformTokens、postTransformTokens或postTransformNodes。
- 如实审查差异。
- 不要在无法做到时宣称完全一致。
- 明确指出仍需人工审查的解析器、插件、安全或 HTML 行为。
- 在转向
nodes之前,先考虑渲染器模式和平滑流式输出。- 对于 Vue 3,AI/SSE 输出请选择
mode="chat",丰富的文档界面请选择mode="docs",轻量的非聊天界面请选择mode="minimal"。 - 如果应用流式传输
content,且只需要控制节奏,smooth-streaming="auto"(默认值)即可满足需求,无需使用nodes。 - 仅当应用需要自定义 AST 控制、在 worker 中预解析或进行高频结构更新时,才改用
nodes。 - 在 Vue 3(包括 Nuxt)中,
smooth-streaming控制输出节奏,fade控制不透明度;两者可以同时启用。mode="chat"默认将fade设为false,以保持轻量。需要逐渐显示文本时添加fade;更在意动画开销时则保持关闭。迁移 Vue 3 时,不要照搬旧版:fade="!isStreaming"绑定,除非宿主应用需要该策略。 - 流式输出与恢复历史记录:迁移聊天 UI 时,在同一聊天行中保留
mode="chat",改用其他节奏或动画属性。Vue 3 流式输出:使用mode="chat"、final,以及可选的fade。Vue 3 已完成的聊天历史记录:保留mode="chat",无需控制节奏时使用:smooth-streaming="false",并独立选择是否启用渐显效果。仅在独立的丰富文档界面中使用mode="docs"。
- 对于 Vue 3,AI/SSE 输出请选择
- 验证并总结。
- 运行范围最小且相关的测试或构建。
- 报告直接映射关系、待办事项和仍需完成的验证工作。
路线 B:将 markstream-vue 1.x 升级到 2.x
- 冻结当前集成接口。
- 记录已安装的
markstream-vue版本和包管理器解析结果。 - 找出旧的代码块依赖项、渲染器值、属性、公共类型、运行时辅助工具、预览处理器和直接导入的解析器。
- 确定能够验证当前行为所需的最小构建、类型检查、SSR 和代码块检查。
- 记录已安装的
- 选择一个发布系列。
- 仅在协调一致的 beta 系列发布后,且
next指向该代版本时使用;或者在稳定版发布后使用markstream-vue@2。 - 编辑清单前检查注册表版本和 dist-tags;仓库中的版本变更不能证明某个包可安装。
- 仅安装应用使用的适配器。仅当应用直接导入解析器或核心包时,才直接添加它们。
- 让各个包保持在同一预发布代;不要混用无关的 beta 版本。
- 仅在协调一致的 beta 系列发布后,且
- 仅根据references/vue-1x-to-2x.md应用必要的依赖项和 API 变更。
- 移除两个旧版代码块运行时。将受支持的
monacoOptions/codeBlockMonacoOptions字段重命名为共享的codeBlockOptions契约,并删除仅适用于 Monaco 的不受支持字段。 - 仅在需要增强代码块或差异代码块时添加
stream-diffs;否则使用纯文本回退方案。 - 保留现有的 Markdown、图表、数学、HTML 策略、worker、CSS、流式处理和虚拟化设置,除非有文档记录的 2.x 重大变更要求修改。
- 移除两个旧版代码块运行时。将受支持的
- 验证迁移后的行为,并保留回滚路径。
- 视情况检查包解析结果、公共类型、预览负载使用方、普通和差异代码围栏、主题、响应式差异布局,以及 SSR 或打包安装。
- 报告可恢复到先前系列的确切 1.x 版本或旧版 dist-tag。
默认决策
- 先替换渲染器,再优化流式处理。
- 不要把现有 Markstream 版本升级当成渲染器迁移改写。
- 从 1.x 升级到 2.x 时,保留应用中除文档记录的代码块和解析器变更之外的行为。
- 协调一致的 beta 系列应保持在同一预发布代;更改依赖项前明确回滚方案。
- 平滑流式处理是“仅内容”和“完整节点迁移”之间的中间选项:它无需控制 AST,即可按节奏呈现可见输出。
- 涉及 HTML 或安全规则时,安全性优先于功能对等。
- 优先使用明确的 TODO,而非含糊的说法。
- 目标框架提供组件映射时,优先使用渲染器本地的组件映射。
- 如果当前技术栈严重依赖 Markstream 无法直接对应的转换,应建议不要迁移。
- 必须保留可信的旧版行为时,应使用作用域受限的
htmlPolicy/html-policy="trusted"和mermaidProps.isStrict = false,而不是在所有地方放宽默认设置。
有用的文档目标
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.md
评论
支持 Markdown