仿真型 HTML 交互 demo 生成:按用户截图复刻真实界面,产出自包含、全状态可达(带模拟开关)的可交互单文件 demo,落 tmp/ 就地多轮迭代;拍板后归档 prototypes/ 并衔接 prd-writer「demo 先行变体」写 PRD。
Scanned 9/6/2026
Install to Claude Code
npx -y skills add ryanzhao1011/workframe --skill html-demo --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Html Demo?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ryanzhao1011-html-demo)More formats (shields.io, HTML) on the badges page.
---
name: html-demo
description: 仿真型 HTML 交互 demo 生成:按用户截图复刻真实界面,产出自包含、全状态可达(带模拟开关)的可交互单文件 demo,落 tmp/ 就地多轮迭代;拍板后归档 prototypes/ 并衔接 prd-writer「demo 先行变体」写 PRD。
when_to_use: |
用户说「出个 demo / 做个 demo / 交互方案 / UI 方案 / 交互样式 / 页面方案 / HTML 原型」时;
写 PRD 前要先用可交互原型对齐交互细节时(demo 先行工作流)。
边界:只要静态图 → screenshot;要落正式需求文档 → prd-writer。
user-invocable: true
allowed-tools: [Read, Write, Edit, Glob, Grep, Bash]
---
# 仿真型 HTML 交互 demo
> 服务「demo 先行」工作流:先出可交互 demo 多轮快速迭代、拍板交互细节,再写 PRD(prd-writer「demo 先行变体」)。
>
> 与 prd-writer S5 的「展示型原型」(PRD 写完后生成、功能模块平铺、截图导向,规范见 `prd-writer/html-prototype.md`)是两种形态,按场景选用:迭代敲定交互 → 本 skill;为已定稿 PRD 配图 → 展示型。
## Workflow
```
Step 1: 输入确认 —— 用户截图(复刻基准,缺则先要)+ 需求一句话
Step 2: 生成 v1 —— 自包含单文件落 tmp/{需求名}-交互方案.html,写完提示用户打开预览
Step 3: 多轮迭代 —— 就地修改唯一一份,每轮改完提示刷新查看;不另存副本、不留版本文件
Step 4: 拍板归档 —— demo 复制到对应需求 prototypes/(删除 tmp/ 原件避免双源);
需要正式 PRD 时衔接 prd-writer「demo 先行变体」(交互细节从 demo 代码提取)
(按需)Step 5: 关键状态截图 —— 调 screenshot skill 归档 assets/,PRD 嵌图
```
## 页面调试确认(默认不开浏览器,按判断树决定)
**默认口径:写完直接交付,提示用户刷新查看,由用户人工验收——不开浏览器**(实战沉淀:常规控件盲改命中率足够高,起浏览器的时间成本大于收益)。
**仅以下三种情况开 Claude in Chrome 实时核对**:
| # | 触发 |
|---|---|
| 1 | 用户明确要求看效果,或提出视觉问题("太丑" / "对不齐" / "显示不对")——此时必须看着调,不盲改 |
| 2 | demo 含**自定义视觉形态**:图表 / 矩阵热力图 / 时间轴、动效与过渡、复杂布局(多列网格、自适应宽度、浮层定位、拖拽) |
| 3 | 高保真复刻截图是本次交付重点 |
**明确不开**(无论首版还是迭代):常规表单控件(输入框 / 下拉 / radio / checkbox / 开关 / 按钮 / 普通表格列表)、文案替换、选项增删与排序、默认值调整、删除已有内容。简单需求的首版 demo 同样不开。
**开了之后的操作纪律**:
- 后台跑 `python -m http.server <port> --directory "tmp"` → 扩展 `navigate` 到 `http://localhost:<port>/{需求名}-交互方案.html`(中文文件名需 URL 编码)→ 之后 `computer screenshot` / `read_page` / `javascript_tool` 均正常
- **关键坑**:Claude in Chrome 扩展**无法操作 `file://` 本地页面**(navigate / screenshot / read_page 全被拒,报 "browser-internal or unparseable URLs"),必须走 `http://localhost`
- **server 起一次保持到 demo 拍板**,不每轮起停
- **核对用 `javascript_tool` 直接设状态再截图,不用 `computer` 点击**——扩展的点击 / 滚动会误触发页面事件改乱 demo 状态(实证:选中项莫名跳变,白排查一轮)
- **兜底**:扩展未安装 / 用户不用 Chrome / 无浏览器权限 / 连接失败时,优雅回退到「写完提示用户打开预览、每轮改完提示刷新查看」,由用户截图 / 口头反馈——用户自查路径始终保留为 fallback
## 质量规范(生成与迭代)
- **自包含单文件**:一个 HTML 内联全部 CSS/JS(CDN 可选);落 `tmp/` **唯一一份**就地迭代
- **复刻真实**:以用户提供的截图为准复刻目标系统的布局与视觉;假数据贴近真实业务(真实风格的文案 / 标签值 / 数据形态)。项目级视觉口径(主题色参考等)由项目 local rule 定义
- **全状态可达**:每个状态(成功 / 失败 / 空 / 加载中 / 禁用)必须能通过**界面操作**到达——为不易自然触发的状态提供**模拟开关**(如「模拟失败」toggle、空态切换),不允许存在"改代码才能看到"的状态
- **mock 标注**:演示性假设(能力映射、概率模拟等)集中为**顶部常量** + 注释「演示用,实际以 {真实来源} 为准」,防止评审者当真
- **代码组织利于反向提取**(衔接 prd-writer demo 先行变体(S3 交互细节提取)):状态机集中管理、配置常量化、关键交互规则带注释——写 PRD 时直接从代码读取状态、文案、禁用与显隐逻辑,不靠回忆对话
## 与 PRD 的分工与同步
- 分工:界面文案、视觉样式、控件布局以 **demo 为准**(PRD 不重复描述视觉细节,引用原型链接);业务规则、边界、计算口径以 **PRD 为准**(demo 仅演示)
- 同步纪律:交互 / 文案类需求变更时,demo 与 PRD **同轮修改**;仅规则口径变更不动 demo
- 落盘前校验:PRD 落盘前对照 demo 过一遍状态文案与控件行为(字段与交互表、控件×状态矩阵逐行对),不一致即修
## 按需多状态截图
外部评审者(如飞书文档读者)无法打开本地 demo——按评审需要用 screenshot skill 截关键状态图(`setup_js` 触发状态切换 / 模拟开关)归档 `assets/`,PRD「前端交互详情」对应小节嵌图;是否截由用户当次决定,不强制。
## 与其他能力的关系
| 能力 | 关系 |
|---|---|
| `prd-writer`(demo 先行变体) | 下游:本 skill 产出的 demo 是其 S1 输入,交互细节提取(S3)与归档动作(S5)按其 demo 先行变体衔接 |
| `prd-writer/html-prototype.md` | 并列形态:展示型原型(标准路径 S5)的规范 |
| `screenshot` skill | 按需状态截图的执行引擎 |
| `Claude in Chrome` + 本地 http 服务器 | 页面调试确认引擎(交互实时核对;扩展不可用时回退用户自查)——区别于 `screenshot` 的静态归档 PNG |
| 项目 local rule | 项目视觉口径(截图为准 / 主题色参考)、demo 先行偏好声明 |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!