跳转到使用指南
stitch::extract-static-html作者 Google Labs

Stitch Extract Static HTML Skill.

Claude Code 和 Codex 的 UI 设计 skill:提取内联 CSS 和图片的独立静态 HTML 快照。

  • Web & UI
  • HTML
google-labs-code/stitch-skills · plugins/stitch-design/skills/extract-static-html/SKILL.mdSKILL.md
--- name: stitch::extract-static-html description: - Extract self-contained static HTML from a built web application or React components by inlining CSS and images. Use this skill whenever you need to capture a specific UI state, share a static version of a page, or prepare assets for Stitch upload, even if the user just asks to 'save the HTML' or 'mock the view'. --- ## Which Strategy to Use ## Strategy A: Puppeteer Snapshot (Recommended) ## Strategy B: Browser Subagent Capture ## Appendix: Static Fallback (MockPage.jsx)
前言和章节标题读取自 2026-09-14 的上游文件 · 完整 10,732 字符

01 功能说明

在 Claude Code 和 Codex 中,stitch::extract-static-html Skill 做什么

摘要、工作流与产物,均读自该 skill 的 SKILL.md。

来自 SKILL.md读取于 2026-09-14 · 非实际运行记录

以 skill 自身的术语

通过 Puppeteer 启动无头 Chrome,从正在运行的 Web 应用中生成一个自包含的 HTML 文件,捕获完全渲染后的 DOM、内联 CSSOM 规则,并将图片转换为 base64 data URI。它适用于任何框架 —— React/Vite、Next.js、Angular、Vue/Nuxt、Svelte、Storybook —— 无需 MockPage.jsx。

该 skill 会强制 Agent 在继续之前询问要使用两种捕获策略中的哪一种,并推荐使用 Puppeteer 快照方案,同时在本地服务器启动后暂停以等待确认。可用的选项涵盖等待时间、viewport、深色模式、固定元素移除、canvas 内联以及用于登录受限页面的鉴权脚本。文档附录中还提供了在应用无法本地运行时,将 React 组件手动拆解为 MockPage.jsx 的方法。

它产出什么

  • 每个被捕获的路由对应一个自包含的 HTML 文件,样式已内联,图片以 base64 形式嵌入。
  • 当你捕获多个视图时(例如首页、定价页和仪表盘),每个路由会生成一个文件。
  • 使用 canvas 选项时,图表会从 canvas 元素序列化为 base64 图片。
查看示例提示词 ↗

工作方式

  1. 01
    让用户选择策略

    在进行任何提取之前,Agent 会展示 A/B 对比,推荐 Puppeteer 方案,并等待明确的选择。

  2. 02
    按路由运行快照脚本

    每个 URL 对应一条命令,将每次捕获写入 .stitch 中各自的文件,并在网络空闲后固定等待一段时间。

  3. 03
    让脚本内联页面

    CSSOM 规则、链接的样式表、图片、srcset 来源以及同源图标字体都会被折叠进该文件,因此无需依赖正在运行的服务器。

  4. 04
    根据框架调整标志位

    等待时间和 URL 因技术栈而异,例如框架需要对服务端渲染的标记进行 hydration 时,等待时间会更长。

  5. 05
    对受限页面进行身份验证

    鉴权模块会在 Puppeteer 会话内运行,之后脚本会带着已建立的会话返回原始 URL。

  6. 06
    仅在必要时才回退到 Mock 方案

    当应用完全无法启动时,附录中的方案会将组件拆解为一个 JSX 文件,而不是捕获实时渲染结果。

02 找到适合场景

何时使用 stitch::extract-static-html Skill

当任务属于此类 UI 设计时,在 Claude Code 或 Codex 中使用 stitch::extract-static-html skill。下方的适用范围和限制来自该 skill 自身的文件。

适合场景

  • 你需要捕获某个特定的 UI 状态,并将页面的静态版本交给他人。
  • 你正在准备要上传到 Stitch 的素材。
  • 该应用可以在任意框架下本地运行,而你不想编写 MockPage.jsx。
  • 你需要先点击、填写或导航,才能让页面到达你想要的状态。
  • 你想要的是单个 Storybook story,而不是整个应用路由。

了解边界

  • 通过浏览器子 Agent 捕获的大型页面,可能会被 Agent 的上下文窗口截断。
  • 只要应用能够实际启动,就不建议采用手动扁平化路径。
  • 外部字体不会被转换为 data URI,只有同源和相对资源才会。
  • 导航无法到达的 UI 状态,例如错误界面和空状态,需要使用 mock 路由来处理。

需要提供的信息

  • 你的策略选择如果没有在 Puppeteer 快照和浏览器 subagent 之间做出明确决定,Agent 不会启动。
  • 运行在 localhost 上的应用一个你可以访问的服务器,例如通过项目的 dev 脚本启动的服务器,因为该脚本会从实际运行的页面抓取内容。
  • 一个输出文件路径--output 是必需项,因此需要决定每个抓取的路由落在何处,通常放在 .stitch 下。
  • 用于受限页面的鉴权模块一个 JS/TS 文件,其默认导出是一个接收 Puppeteer page 的异步函数,用于处理登录表单、令牌或模块注入。
  • 带有 puppeteer 的 Node 环境快照脚本通过 npx tsx 运行,需要在该环境中能解析到 puppeteer。

03 Skill 内部

stitch::extract-static-html Skill 为 Claude Code 和 Codex 制定的规则

SKILL.md 为 Agent 设定的 8 条具体指令、默认值与限制——文件中真正改变结果的部分。

  1. 永远不要自行选择策略

    Agent 不得代替用户在 Puppeteer 和浏览器 subagent 之间做出选择,也不得在用户确认之前继续执行。

  2. 策略 A 是默认选项

    必须清晰展示各个选项,推荐策略 A,并为每个选项提供简短的优缺点总结。

  3. 截图前的检查点

    启动本地服务器后,Agent 必须暂停,在运行快照脚本或启动浏览器 subagent 之前获取确认。

  4. 完成后关闭 dev 服务器

    仅为提取而启动的 dev 服务器,在抓取完成后必须被停止,或终止其后台任务。

  5. 默认等待 1000 毫秒

    --wait 默认在网络空闲后等待 1000 毫秒,对于延迟加载的应用需要调高;--viewport 默认为 1280x800。

  6. 不输出任何脚本

    输出内容不包含任何 script 标签;Vite HMR 开发风格的代码块(createHotContext、import.meta.hot)以及开发覆盖层都会被移除。

  7. 固定元素需手动开启

    --remove-fixed 默认为 false,用于从抓取内容中清除 cookie 提示条和聊天小组件。

  8. 对 mock 路径将所有内容扁平化

    附录回退方案不是实时抓取;它需要手动将 React 组件拉平成单个 JSX 文件。

04 投入使用

在 Claude Code 或 Codex 中安装 stitch::extract-static-html

一条 npx skills add 命令,然后在你的 Agent 中执行第一个任务和对结果的清单检查。

将 stitch::extract-static-html 添加到 Claude Code、Codex 或你的 Agent

在你的项目中运行;安装程序会询问要把它添加到哪个 Agent。

Terminal
npx skills add https://github.com/google-labs-code/stitch-skills --skill stitch::extract-static-html

针对 plugins/stitch-design/skills/extract-static-html/SKILL.md 的通用 skills CLI 形式;该仓库可能有自己的文档路径。

给 Skill 一个首次 UI 设计任务

按 skill 自身的术语撰写;把括号中的部分换成你的内容。

Starter prompt
The app is running at http://localhost:5173. Snapshot the [dashboard] route to .stitch/dashboard.html with --html-class dark and --inline-canvas, and pass --wait 5000 because the ECharts graphs load late. That page sits behind a login guard, so run it with my [auth-myapp.ts] script first.

来源:依据 SKILL.md,按 skill 自身的术语撰写。

检查首次结果

SKILL.md 本身如何描述正确的结果:

  • 停止开发服务器并打开保存的文件:如果图片显示不出来,说明 srcset 内联没有生效,此时回退到内联 src 就很关键。
  • 在信任输出结果之前,先查看脚本日志中内联的图片数量。
  • 如果图标显示为文本或退回为衬线字体,说明 CSSOM 抓取或 @font-face 内联没有发生。
  • 如果要求暗色模式却出现浅色页面,说明本次运行缺少了 html-class 标志。
  • 图表渲染为空白框,说明没有传入 canvas 标志。
  • 在 Next.js 中,优化后的图片只有在抓取期间开发服务器仍在运行时才会内联。

在 OpenDesign 中,通过 SKILL.md 链接导入 stitch::extract-static-html:Plugins → Add → Skill → Import from link,然后在顶部栏中选择它。

05 开源、可追溯

来源、许可与验证

本页面事实的来源,以及最后检查时间。

Skill 文件
plugins/stitch-design/skills/extract-static-html/SKILL.md 验证时记录的内容校验和;commit 0337446
License
Apache-2.0 来自 LICENSE。
仓库星标数
8,304 GitHub 快照拍摄于 2026-09-14,针对整个 google-labs-code/stitch-skills 仓库,该仓库在此目录中包含 12 个 skills。不是 stitch::extract-static-html 的评分或使用量。
已由 OpenDesign 验证
2026-09-14 已检查源文件、路径、许可文本和 star 数量。未内置在 OpenDesign 主程序(检查日期 2026-08-28);本页面未记录实际运行。

SKILL.md 内部

  1. 该用哪种策略Puppeteer 与浏览器子 Agent 的对比表;Agent 必须先获得用户批准才能继续。
  2. 策略 A:Puppeteer 快照(推荐)无头 Chrome 快照,自包含 HTML,适用于任何框架,无需 MockPage.jsx。
  3. 脚本标志url、output、wait、viewport、html-class、remove-fixed、full-height、title、auth-script 与 inline-canvas 标志的默认值。
  4. 自动完成的工作CSSOM 抓取、样式表与图片内联、srcset 清理、脚本与 HMR 移除、url() 解析。
  5. 各框架注意事项React/Vite、Next.js、Angular、Vue/Nuxt、Svelte、Storybook 与 SSR 的等待时间与默认 URL。
  6. 故障排查覆盖图片缺失、图标字体、暗色模式、Cookie 提示栏、身份验证与画布问题的现象对应标志表。
  7. 需要身份验证的页面编写一个 Puppeteer 身份验证模块;脚本在登录后会重新导航到原始 url。
  8. 策略 B:浏览器子 Agent 抓取子 Agent 进行导航与交互,然后提取 outerHTML;较大的页面在 Agent 上下文中可能被截断。
  9. 附录:静态回退方案(MockPage.jsx)当应用无法运行时,作为最后手段针对手动拉平的 MockPage.jsx 运行 extract_inline_html.ts。
  10. MockPage.jsx 规则包含完整布局,拉平条件逻辑,硬编码数据,保留 logo,去除浮动元素。
  11. 后处理post_process.ts 以应用目录作为 base-dir 来内联本地图片。
Skill 自身的描述
"- 通过内联 CSS 和图片,从已构建的 web 应用或 React 组件中提取自包含的静态 HTML。每当你需要捕获特定的 UI 状态、分享页面的静态版本或准备用于 Stitch 上传的资源时,使用这个 skill,即使用户只是要求「保存 HTML」或「模拟视图」。"

来自 SKILL.md 的前置描述。完整文件约 10,732 个字符。在 GitHub 上阅读完整文件。

Stitch Extract Static HTML

在真实的 UI 设计任务中运行 stitch::extract-static-html。

下载 OpenDesign,从其 SKILL.md 链接导入 stitch::extract-static-html,粘贴上方的提示,并在查看结果前先阅读计划。

终端
npx skills add https://github.com/google-labs-code/stitch-skills --skill stitch::extract-static-html

OpenDesign 桌面客户端

一套设计系统,让每一次创作都保持品牌一致

在完整的 Vibe Design Workspace 中,用同一套品牌规则生成网页、PPT、可交互原型、数据看板、图像与 HTML 视频。连接本地 Codex、Claude Code、Cursor 等编程助手,即可免费创作。

  • 覆盖网页、PPT、原型、数据看板、图像与视频
  • 140+ 设计系统,以及完整模板与技能库
  • 连接本地 Codex 与 21+ 款编程助手 · 免费使用
免费下载

支持 macOS 与 Windows