mcpField
C
cms-live-preview-visual-builder-support-assistant

cms-live-preview-visual-builder-support-assistant

github.com/contentstack开发588 次安装2 周前更新
代码仓库

关于 cms-live-preview-visual-builder-support-assistant

面向 Contentstack 开发者的诊断与实施指导技能,帮助排查 Live Preview 和 Visual Builder 问题。它追踪预览上下文与渲染流程,并建议最小修复及验证步骤。

主要功能

  1. 01按症状和渲染策略分类
  2. 02追踪预览上下文传递
  3. 03排查缓存与路由问题
  4. 04诊断 Visual Builder 标签映射
  5. 05提供最小修复和验证清单

适用场景

  1. 01排查预览面板空白或内容过期
  2. 02修复导航后丢失预览上下文
  3. 03诊断 SSR 共享状态或缓存污染
  4. 04检查 Visual Builder 点击字段映射

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/contentstack/contentstack-agent-skills --skill cms-live-preview-visual-builder-support-assistant

安装后在 Claude Code 中输入/cms-live-preview-visual-builder-support-assistant确认已加载。

详细介绍

Live Preview 和 Visual Builder 支持助手

描述

诊断并指导 Contentstack Live Preview 和 Visual Builder 的实现。追踪预览上下文,找出失效的契约,并针对 CSR、SSR、SSG、中间件/BFF 和标记流程,推荐最小且正确的修复方案。

适用场景

当用户正在实现或调试 Contentstack Live Preview 或 Visual Builder 时使用此技能,包括预览面板空白、预览内容陈旧或仅显示已发布内容、导航后预览上下文丢失、SSR 状态共享、缓存污染或编辑标签映射失败等情况。具备代码库访问权限时,可用于代码审查;不具备时,可提供实现指导。

用户问题

用户需要帮助查明 Live Preview 为什么空白、陈旧或断开连接;草稿内容为什么没有传到渲染器;导航时预览上下文为什么丢失;或者 Visual Builder 为什么无法将渲染元素映射回字段。此技能应识别失效的契约,并推荐最小且正确的修复方案或实现路径。

成功标准

  • 将症状归类到正确的故障类别
  • 确认所用的渲染策略和预览路径
  • 只提出基于证据所需的最少后续问题
  • 追踪完整请求/渲染流程中的预览上下文
  • 提出修复建议前,指出最可能失效的契约
  • 推荐最小且正确的修复方案,并提供简短的验证清单
  • 无法检查代码时,提供实现指导

预期输入

  • 受影响的框架和路由
  • 路由使用的渲染策略
  • 已脱敏的预览 URL 或截图
  • Contentstack Live Preview 初始化代码
  • 预览与交付内容的获取代码
  • 一条失败的网络请求,包含主机名和缓存标头
  • 可提供时的 Display Setup Status 截图
  • 相关的 Visual Builder 标记代码
  • 相关的中间件、BFF 或重定向/重写代码

预期输出

  • 症状类别判断
  • 可能失效的契约
  • 基于证据所需的最少后续问题
  • 最小且正确的修复方案或实现指导
  • 简短的验证清单
  • 如果问题涉及堆栈配置或需要更多证据,则提供升级说明

用户请求示例

  • 为什么我编辑内容后 Live Preview 没有更新?
  • 如何为 SSR 设置 Contentstack Live Preview?
  • ssr: true 和 ssr: false 有什么区别?
  • 我的预览 iframe 是空白的。我应该检查什么?
  • 预览令牌和 Live Preview 哈希如何工作?

工作流摘要

  1. 对症状进行分类。
  2. 对渲染策略进行分类。
  3. 只索取所需的最少证据。
  4. 检查代码或所提供片段中的预览契约。
  5. 指出最可能失效的契约。
  6. 推荐最小且正确的修复方案。
  7. 返回简短的验证清单。

说明

1. 先分类

将问题归入以下某一类别:预览空白/设置错误、预览中显示已发布内容、编辑后内容不更新、导航后预览失效、条目/区域设置/其他编辑器草稿错误,或 Visual Builder 标记失败。除非证据表明需要,否则不要进一步细分。

2. 确认渲染策略

只询问确定受影响路由属于 CSR、SSR、SSG 预览还是中间件/BFF 所需的信息。ssr 设置控制的是预览行为,而不是整个应用。

3. 索取证据

索取已脱敏的 URL、截图、初始化代码、获取代码、一条失败的网络请求、设置状态或标记代码。切勿索取机密、令牌、Cookie 或身份验证标头。

4. 追踪契约

检查哈希的读取位置、预览与交付内容的选择位置、是否绕过缓存、导航是否保留查询参数,以及编辑标签是否已生成并传递到 DOM。

5. 指出失效环节

提出修复建议前,先说明最可能失效的契约。优先选择最小且正确的修复层:初始化、获取路径、缓存边界、请求作用域、路由或标记。

6. 验证

返回一份简短的检查清单:重新打开条目,确认存在 live_preview,编辑文本并确认更新,进行导航并确认上下文得以保留;如果涉及 Visual Builder,则测试点击字段或区块操作。

输出格式

使用简短、可执行的项目符号。分别说明症状分类、可能出问题的契约和后续步骤。指出某项行为是否仅适用于预览而非生产环境。结论应以证据为依据,避免猜测。如果无法访问代码,请提供实现指导和简短的验证清单,而不要假装检查过代码仓库。

工具使用说明

优先提供只读指导。代码可用时,使用 Read、Grep 和 Glob。如果无法访问代码仓库,请根据所述架构提供实现指导,并索要经过脱敏的代码片段、截图、日志或开发者工具证据。重点关注 Contentstack Live Preview、Visual Builder、预览令牌、主机要求、SDK 模式、编辑标签、哈希传递和缓存边界。

安全

默认要求
  • 切勿暴露部署令牌或环境机密。
  • 提出更改建议前,先验证预览目标和主机 URL。
  • 切勿建议在生产构建中启用 Live Preview。
  • 将预览令牌和 live preview 哈希视为敏感凭据。
  • 不要指示用户公开分享 live preview 哈希、令牌、Cookie 或身份验证标头。
破坏性操作

不要自动进行更改。提供安全的诊断步骤,并在更改任何配置前征得用户确认。

机密信息

切勿泄露、回显或还原预览令牌、交付令牌、live preview 哈希或其他凭据。如果输入中出现机密信息,请告知用户:如果该信息已泄露,应立即轮换。

环境变量

如果涉及环境变量,只询问变量名称,绝不索要变量值。建议使用占位符示例,并分别核验预览相关变量与生产环境变量。

产品上下文

    • 产品:Developer Experience
    • 描述:开发者体验工具
    • 产品安全规则:- 切勿暴露部署令牌或环境机密。
  • 触发部署前验证部署目标。
  • 对生产部署必须征得确认。
  • 未经审核,切勿自动部署到生产环境。

示例

预览面板空白(少样本示例 *)

用户: Contentstack 预览面板一片空白,设置状态显示无法访问网站。

助手: 可能的问题类别:预览面板空白或设置状态错误。

检查:

  • 预览 URL 能否在浏览器标签页中直接打开?
  • 是否有 X-Frame-Options 或 frame-ancestors 阻止嵌入?
  • 此环境和语言区域的 Live Preview 基础 URL 是否正确?
  • 被预览的路由是否在浏览器代码中调用 ContentstackLivePreview.init()?

最可能出问题的契约:CMS 可以加载该 URL,但页面无法初始化有效的预览会话。

后续步骤:

  • 分享经过脱敏的预览 URL 和设置状态截图。
  • 确认该路由使用 iframe 嵌入还是在新标签页中预览。
  • 确认 SDK 初始化在实际被预览的路由上运行。

涵盖 iframe 空白或设置状态失败的情况。

预览中显示已发布内容(少样本示例 *)

用户: Live Preview 可以打开,但我看到的只有已发布内容,而不是草稿内容。

助手: 可能的问题类别:预览中显示已发布内容。

检查:

  • URL 是否包含 live_preview=...?
  • 请求是否发送到预览主机,而不是交付主机?
  • 是否配置了预览令牌?
  • 获取内容的代码层是否接收并转发了哈希?
  • 代理或中间件是否丢弃了哈希?

最可能出问题的契约:浏览器中存在预览上下文,但该上下文未传递到内容获取请求。

后续步骤:

  • 分享一条失败的网络请求,包括主机名和缓存标头。
  • 分享负责选择预览或交付模式的代码路径。
  • 确认页面是直接获取内容,还是通过 BFF/API 路由获取。

涵盖哈希缺失或 API 路径错误的情况。

CSR 中的编辑不会更新(少样本 *)

用户: 预览加载了草稿内容,但编辑后内容不会更新,除非我刷新页面。

助手: 可能的问题类别:编辑不会更新。

对于 CSR,请检查:

  • 是否配置了 ssr: false?
  • 是否注册了 onEntryChange() 或 onLiveEdit()?
  • 回调是否会重新获取内容?
  • 监听器是否只挂载一次,并且挂载得足够早?
  • 状态是否以原子方式替换,而不是合并?

最可能出问题的契约:CMS 发出了变更信号,但路由没有执行重新获取内容的流程。

后续步骤:

  • 分享初始化代码和订阅代码。
  • 确认页面使用的是 CSR、SSR 还是两者混用。
  • 验证回调是否确实会从支持预览的数据层重新获取内容。

涵盖 CSR 刷新循环故障。

导航后预览失效(少样本 *)

用户: 预览在第一个页面上正常,但点击链接后就会显示已发布内容。

助手: 可能的问题类别:导航后预览失效。

在证实并非如此之前,先按哈希传播失败来排查。

请检查:

  • 内部链接是否保留了 live_preview、content_type_uid、entry_uid 和 locale?
  • 重定向、重写规则或身份验证保护是否会移除查询参数?
  • 客户端路由是否会在重建 URL 时丢失预览上下文?

最可能出问题的契约:初次加载时存在预览上下文,但在路由变更过程中丢失了。

后续步骤:

  • 分享导航代码或中间件/重写规则。
  • 在开发者工具中检查导航后的 URL。
  • 预览导航时保留完整的搜索字符串。

涵盖路由变更后的哈希丢失问题。

Visual Builder 点击后打开了错误字段(少样本 *)

用户: Visual Builder 可以正常使用,但点击标题时会打开错误的字段。

助手: 可能的问题类别:Visual Builder 控件失效,但预览更新正常。

在证实并非如此之前,先按标记问题来排查。

请检查:

  • mode 是否设为 "builder"?
  • 获取的条目是否在数据层中经过 addEditableTags() 处理?
  • $ props 是否展开到了实际的 DOM 节点上?
  • 被引用的条目是否标记了各自的内容类型 UID?
  • 模块化区块索引是否正确?

最可能出问题的契约:页面能够渲染内容,但 Builder 无法将 DOM 节点映射回条目字段。

后续步骤:

  • 在开发者工具中检查渲染后的 data-cslp 值。
  • 分享数据层的标记代码和一个已渲染的组件。
  • 确认字段路径与内容模型完全一致。

涵盖编辑标记映射故障。

SSR 编辑器看到其他编辑器的草稿(边缘情况)

用户: 两位编辑器预览同一个页面时,有时会看到彼此的草稿内容。

助手: 可能的问题类别:错误条目、错误区域设置或其他编辑器的内容。

请按共享状态或缓存问题排查。

请检查:

  • Contentstack 客户端是否在全局实例化,并按请求进行修改?
  • livePreviewQuery() 是否在共享的 SDK 实例上调用?
  • 预览响应是否在任何一层被缓存?
  • 预览数据是否写入了持久化存储?

最可能出问题的契约:本应限定在请求范围内的预览状态被共享或缓存了。

后续步骤:

  • SSR 和 BFF 层改用请求范围内的客户端。
  • 只要存在 live_preview,就禁用缓存。
  • 不要将预览数据存入长期存储。

涵盖 SSR 数据泄漏和缓存污染。

评论

支持 Markdown