Communitygithub.com

hifebriansyah/mockup-html

将网页或应用界面设计为可运行的 HTML/CSS 模型,或将 Logo、图标、插图设计为 SVG,并在沙盒预览面板中展示(支持手机、平板、桌面宽度,以及浅色、深色、棋盘格背景)。适用于用户需要模型、线框图、原型、着陆页、屏幕布局、Logo、图标或 SVG 的场景。

mockup-html 是什么?

该技能能够将用户的需求直接转化为可视化的、可交互的 HTML/CSS 网页模型或 SVG 图形,并在聊天界面内嵌的沙盒预览面板中实时渲染。它解决了 AI 无法直接展示视觉设计的痛点,允许用户立刻看到设计效果。 此技能适用于 Claude Code、Cursor、Codex 等支持 HTML/SVG 标签渲染的平台。其核心工作方式为:AI 在对话中输出一个 `<mockup>` 标签,其中包含完整的 HTML 文档或 SVG 代码,平台会将该标签内的内容安全地在隔离的浏览器沙盒中渲染,并提供预览和代码切换标签。 生成的 HTML 模型必须移动优先、使用 CSS 变量、语义化且可访问,并包含真实的示例内容和多种交互状态(如错误、空状态)。它支持 JavaScript 库(如 Chart.js、Three.js)、Web 字体、图片和公共 API 请求,但不支持服务端功能。生成的 SVG 则需使用内联形状和渐变,避免外部引用,并确保在小尺寸下依然清晰。整个设计过程强调完整性和丰富性,对于完整的网站或应用页面请求,AI 会生成包含所有必要部分(如导航、页脚、多个内容区)的详细代码,而非简略草图。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hifebriansyah/pro/tree/HEAD/skills/mockup-html

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

将模型设计为 HTML,或将 Logo 设计为 SVG

当用户想看到屏幕、页面、Logo 或图标,而不是阅读其文字描述时,使用此技能。

您正在聊天的页面会为用户绘制它。 写在 <mockup> 标签内的 HTML 和 SVG 会显示在聊天界面旁边的预览面板中。因此,永远不要回答“我无法渲染或显示这个”:将其写入标签中。您无法看到结果本身,所以请说明这一点,并告知需要检查什么。

如何交付

  1. 以正常的聊天语气回复,使用一到三句简短的句子:模型展示了什么,最重要的两三个设计决策,以及需要检查什么。不要在聊天中粘贴代码。
  2. 将整个模型放在一个标签对中,并附上一个简短的标题:

每条回复只输出一个模型:一个屏幕,或一个完整页面。标签内只能包含 HTML。永远不要将标签放在代码块内。页面会在右侧显示该模型,并带有“预览”和“代码”选项卡。

如果用户还要求提供书面内容(如产品需求文档、笔记),可以在同一条回复中,在 <mockup> 旁边放置一个 <document>。对于模型请求,回复应包含 <mockup>,而不仅仅是文档。

Logo、图标或插图(SVG)

在 <mockup> 标签内放置一个 <svg>,不要有其他内容。页面会居中绘制它,并提供一个切换浅色、深色或棋盘格背景的开关,用户可以复制或下载 .svg 文件。

  • 以 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 W H"> 开头(Logo 或图标推荐使用正方形,例如 0 0 200 200)。使用平面形状绘制:path、circle、rect;使用 linearGradient 实现渐变;使用 mask 或形状实现镂空效果。文字仅用于字标,并应使用系统字体栈,或者最好绘制为形状。
  • 不要使用脚本和外部引用(指向文件或地址的 href):仅使用内联形状、渐变和 data: 图片。
  • 您无法看到自己的 SVG,因此请在脑中检查几何形状,并说明您检查了哪些内容:重叠或产生间隙的半径和描边宽度、在浅色和深色背景下的对比度、在 16 和 32 像素下是否仍然清晰可辨(细描边会消失),并保持一个核心概念和两到三种颜色。
  • 如果用户粘贴了 SVG 代码,页面已经为其显示了预览;根据代码审查设计(几何形状、对比度、小尺寸显示效果、多余的形状),并提供修订版本。
  • 根据设计需要添加尽可能多的细节:没有长度限制。

预览允许的内容(页面在沙盒中运行)

它会运行您构建的所有内容。 预览是一个真实的浏览器框架:编写一个可运行的页面,而不是一张图片。

  • JavaScript(内联 <script>、onclick 等处理程序),任何来自 CDN 的库,需固定版本(例如 <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>:three.js、Chart.js、Alpine、GSAP、Leaflet...;将库放在使用它的脚本之前)、通过地址引用的 Web 字体和样式表(Google Fonts)、通过地址引用的图片、对公共 API 的 fetch 请求、嵌入式框架(YouTube、地图)、表单、弹出框、对话框、下载、全屏、WebGL 和画布。
  • localStorage 和 sessionStorage 可用:模型通过 localStorage 保存的内容会在用户的浏览器中为该模型保留,因此待办事项列表或保存的主题在刷新后仍然存在。
  • 不支持的内容: Cookie、IndexedDB、摄像头、麦克风和位置信息,以及任何触及聊天页面周围区域的内容(该框架与其隔离)。需要自有服务器(登录、数据库)的页面只能展示示例数据。
  • Logo 或图标(单独的 <svg>)无需脚本即可绘制。

如何构建优秀的模型

  • 移动优先。 首先为 390px 宽的手机设计,然后使用一两个 @media (min-width: 768px) 规则进行扩展;使用 max-width 容器和 <meta name="viewport" content="width=device-width, initial-scale=1">。
  • 令牌优先。 在 <style> 中以 :root 变量开头(主色、表面色、文字色、弱化色、边框色、圆角、间距),并仅使用这些变量。一种主色调,中性灰色,4 / 8 / 12 / 16 / 24px 的间距比例,14 / 16 / 20 / 28 的字号比例,font-family: system-ui, sans-serif。
  • 语义化和可访问性。 使用 header、nav、main、section、button、带 input 的 label;提供可见的标签,触摸目标至少为 44px,文字对比度至少为 4.5:1,可见的焦点样式。
  • 可信的内容。 使用用户语言的真实措辞,看起来真实的姓名、价格和日期。不要使用 Lorem ipsum、不要使用“按钮”、不要使用“此处标题”。
  • 重要的状态。 除了正常流程外,展示最重要的一个状态:带有错误消息的表单、空列表或加载骨架屏。
  • 图片。 使用 CSS 渐变块或简单的内联 SVG;头像使用带首字母的圆形。
  • 无大小限制。使其完整且丰富。 对于网站或应用屏幕,HTML 和 CSS 加起来至少要有 250 行(远超 8,000 个字符),如果页面需要,更多。构建用户要求的整个页面,而不是草图:该页面应有的每一个部分(对于网站:带导航的页眉、英雄区、主要功能(CSS 能展示到哪就到哪)、多个内容区域、页脚),每个列表中有几个真实感强的内容项,以及精良的样式(间距、颜色、悬停和焦点状态、响应式规则)。如果请求包含“完整的”、“完全的”、“全的”或指定了整个网站或应用,则意味着一个完整的页面,绝不是一个简短的片段。永远不要为了节省空间而缩短、概括或将一部分写成“...”。如果您的回答被截断,您将需要从最后一个字符继续:先写 <style>,继续写下去,永不重写,并以 </html> 和 </mockup> 结束。
  • 真正可用的控件。 使用简短的内联脚本(或更简单时使用 CSS,例如带有 :has() 的隐藏复选框)为每个用户要求的按钮、开关、选择器和选项卡接线。主题切换开关翻转颜色,开关按钮交换两个选项,时钟显示选定时区的真实时间。永远不要展示一个什么都不做的控件。
  • 语言。 用用户最新消息所使用的语言编写聊天回复和页面上的所有文本。
  • 完成页面。 HTML 必须是完整的:以 <!doctype html> 开始,每个标签都已关闭,并以 </html> 结束。先写 <style> 并保持简短,以便为整个 body 留出空间。

相关技能