从原型工具导出的 HTML 目录(或单个 HTML 文件)中自动识别页面结构、页面内容、控件和交互,生成 PRD、功能清单、测试用例、数据字典、页面跳转关系图、用户故事、开发计划等开发交付物。
支持 Axure RP、墨刀 Mockplus、MasterGo、蓝湖 Lanhu 及未知工具的 HTML 导出(退化为通用解析)。
- 获取
prototypes-spec.skill包文件 - 在 Claude Code 或 Claude.ai 中导入该 .skill 文件
- 安装后技能会出现在
~/.claude/skills/prototypes-spec/
将 prototypes-spec/ 目录复制到 ~/.claude/skills/ 下,保持以下结构:
~/.claude/skills/prototypes-spec/
├── SKILL.md # 主技能文档(257 行)
├── scripts/
│ └── parse_axure.py # 多工具解析引擎
└── references/
├── PRD-template.md # PRD 格式规范
├── 功能清单.md # 功能清单 xlsx 规范
├── 测试用例.md # 测试用例 xlsx 规范
├── 数据字典.md # 数据字典 md 触范
├── 开发计划.md # 开发计划 md 规范
├── 页面跳转关系图.md # 页面跳转关系图 md 规范
└ 用户故事.md # 用户故事 md 规范
安装完成后,当你在对话中提到"原型""Axure""生成 PRD""原型转文档"等触发词时,Claude 会自动调用此技能。
| 依赖 | 用途 | 是否必装 |
|---|---|---|
| python3 | 运行解析脚本 | 必装(系统自带) |
| openpyxl | 生成 xlsx 交付物(功能清单/测试用例) | 必装(pip install openpyxl) |
| python-docx | 生成 Word 格式 PRD(可选) | 选装(pip install python-docx) |
| 工具 | 导出形式 | 识别特征 | 解析深度 |
|---|---|---|---|
| Axure RP | HTML 离线包 | data/document.js、resources/scripts/axure/ |
完整:页面树 + 控件 + 交互 + 便签 |
| 墨刀 Mockplus | HTML 离线演示包 | index.html 含 mockplus 字样、mockplus.js |
页面文本 + 控件类型 + 便签 |
| MasterGo | 离线标注导出 | JS 文件含 PAGED_FRAMES/FILE_DATA |
画板名称列表 |
| 蓝湖 Lanhu | Schema JSON 或 HTML | .schema.json 文件、lanhutext/lanhuimage 类型 |
图层树 + 文本 + 控件类型 |
| 未知工具 | HTML 文件 | 无上述特征 | 退化为通用 HTML 文本提取 + 便签 |
直接在对话中告诉 Claude 你的需求,例如:
"我这边有一个 Axure 原型导出的目录,在 /path/to/prototype 下面,请帮我解析这个原型,然后生成一份 PRD(Markdown 格式)。"
Claude 会自动:
- 识别原型类型 — 调用
parse_axure.py脚本自动识别工具类型 - 解析原型结构 — 提取页面树、文本内容、控件类型、交互事件、便签/备注
- 询问交付物(若未明确指定) — 展示解析摘要,等待你确认范围
- 生成交付物 — 按对应 reference 规范生成文件,保存到
output/或你指定的位置
技能接受以下输入形式:
- 完整导出目录:包含多个 HTML 文件和资源子目录的文件夹路径
- 单个 HTML 文件:独立的原型页面文件路径
- Schema JSON 文件(蓝湖):
.schema.json文件所在目录路径
你可以在对话中明确指定要生成什么:
- "生成 PRD" → 只生成 PRD.md
- "做一份功能清单和测试用例" → 生成功能清单.xlsx + 测试用例.xlsx
- "生成所有交付物" / "能生成的都生成" → 生成全部 7 类
- "分析这个原型" 但未指定交付物 → Claude 会询问你要生成什么
- "Markdown 格式" / "md 格式" → 生成 .md 文件
- "xlsx 格式" / "Excel 格式" → 生成 .xlsx 文件
- "Word 格式" / "docx 格式" → 生成 .docx 文件(需 python-docx)
- 默认:原型目录下的
output/文件夹 - 自定义:在对话中指定路径,如 "保存到 ~/Desktop/"
共支持 7 类交付物,每类有独立的格式规范文件(位于 references/):
| # | 交付物 | 默认格式 | 文件名 | 规范文件 | 列数/结构 |
|---|---|---|---|---|---|
| 1 | 📄 PRD(产品需求文档) | md | PRD.md |
PRD-template.md |
7 章节 |
| 2 | 📋 功能清单 | xlsx | 功能清单.xlsx |
功能清单.md |
8 列,主表 + 副表「说明」 |
| 3 | 🧪 测试用例 | xlsx | 测试用例.xlsx |
测试用例.md |
8 列,主表 + 副表「说明」 |
| 4 | 📊 数据字典 | md | 数据字典.md |
数据字典.md |
9 列字段定义表 |
| 5 | 🔗 页面跳转关系图 | md | 页面跳转关系图.md |
页面跳转关系图.md |
Mermaid 流程图 + 详表 + 孤立页面 |
| 6 | 🎯 用户故事 | md | 用户故事.md |
用户故事.md |
角色定义 + 故事地图 + 详表 + 验收标准 |
| 7 | 📅 开发计划 | md | 开发计划.md |
开发计划.md |
模块拆分表 + 4 里程碑 + 风险项 |
- 格式:Markdown
- 文件名:
PRD.md - 7 章节:文档信息 / 产品概述 / 页面结构 / 功能需求 / 非功能需求 / 页面流程图 / 附录
- 便签/备注说明纳入功能需求项和附录汇总
- 格式:xlsx(Excel)
- 文件名:
功能清单.xlsx - 主表 8 列:功能编号 / 模块 / 功能名称 / 功能描述 / 优先级 / 所属页面 / 关联功能 / 备注
- 副表「说明」:项目元信息 + 便签纳入标注
- 按页面分组,合并单元格做模块标题行
- 便签说明补为独立功能条目或备注列
- 格式:xlsx(Excel)
- 文件名:
测试用例.xlsx - 主表 8 列:用例编号 / 模块 / 功能点 / 用例标题 / 前置条件 / 测试步骤 / 预期结果 / 优先级
- 副表「说明」:项目元信息 + 便签纳入标注
- 按模块分组,用例编号全局递增(
TC-001、TC-002...) - 便签说明补为业务规则用例或前置条件
- 格式:Markdown
- 文件名:
数据字典.md - 9 列字段定义表:字段名 / 中文名 / 类型 / 长度 / 必填 / 默认值 / 说明 / 所属页面 / 备注
- 按页面分组组织
- 便签说明优先填入"说明"和"备注"列
- 格式:Markdown
- 文件名:
页面跳转关系图.md - 含 Mermaid 流程图代码块 + 跳转关系详表 + 孤立页面清单
- 跳转来源优先级:onClick 交互事件 > 按钮文字 > 链接 href > 页面名推断
- 便签说明补入跳转条件与备注列
- 格式:Markdown
- 文件名:
用户故事.md - 含角色定义 + 用户故事地图(角色 × 模块) + 详表(按角色分组) + 验收标准汇总
- 故事格式:作为 [角色] / 我想要 [功能] / 以便于 [业务价值] + 验收标准 + 优先级
- 便签说明补为独立故事、验收标准或角色识别依据
- 格式:Markdown
- 文件名:
开发计划.md - 含模块拆分表(工时/依赖/角色) + 4 个里程碑(M1 核心框架 → M4 优化收尾) + 风险项
- 工时基于功能数估算,需团队确认
- 便签说明影响工时估算与风险评估
- 功能清单和测试用例各自独立 xlsx 文件,不合并到同一 xlsx
- 每个 xlsx 含主表 + 副表「说明」共 2 张 sheet
- 主表冻结首行,列宽固定,模块标题行合并单元格
- 每份 md 交付物独立单文件,不合并
- 末尾含"数据来源说明"章节,标注便签/备注说明是否已纳入
解析时每页新增以下字段,所有交付物都应基于这些字段生成:
| 字段 | 类型 | 说明 |
|---|---|---|
page_category |
string | 页面分类标签 |
is_screenshot_composite |
bool | 页面是否由多张截图拼出来 |
screenshot_evidence |
string | 截图拼接判定的证据描述 |
strict_fields |
list | 严格基于页面出现内容提取的字段说明(禁止臆想) |
ambiguous_fields |
list | 模糊字段,需先与用户确认再写入 PRD/数据字典 |
filter_area |
dict | 筛选区域识别(管理后台常见) |
| 分类 | 含义 |
|---|---|
admin_console |
管理后台页面 |
config_page |
配置页 |
mobile_page |
移动端页面 |
flow_diagram |
流程图 / 拓扑图 |
login_page |
登录 / 注册 / 验证码页 |
list_page |
列表页 |
detail_page |
详情页 |
form_page |
表单页 |
modal_dialog |
弹窗 / 对话框 |
dashboard |
仪表盘 / 数据看板 |
image_composite |
截图拼接页 |
unknown |
无法判定 |
识别优先级:关键词匹配(页面名+文本)> 控件组合推断 > 截图拼接 > unknown。
满足以下任一条件即判定为截图拼接:
- 多张大图:≥2 张宽度 ≥600px 的
<img> - 多张 background-image 切片:≥2 个不同 url 的
background-image - 文本极少 + 图片多:文本 ≤5 条且
<img>≥3 张 - 单张超大图 + 几乎无文本:一张宽度 ≥800px 的图且文本 ≤5 条
判定为截图拼接的页面,PRD 上必须有明确标识(见 references/PRD-template.md 的"截图拼接页标识"章节)。
字段说明严格基于页面出现的内容输出:
- 字段标签必须出现在页面
texts中——以":"或":"结尾,或匹配常见字段后缀(名称/编号/状态/时间/日期/类型/分类/部门/创建时间/更新时间/手机/邮箱/地区/标签/级别 等) - 字段类型从对应控件推断:标签后紧跟"请选择"则下拉,"请输入"则输入框,"请选择日期"则日期选择器;控件对应不上时标"待确认"
- 必填/默认值/校验规则:原型未明确显示时,一律标"待确认",不得凭空臆想
- 模糊字段归入
ambiguous_fields:标签后无对应控件文本,或类型完全无法推断;必须先与用户确认后再写入 PRD/数据字典 - 英文字段名(name):不臆想,留空待用户/后端确认
后台管理页面若有筛选区域,识别并输出筛选字段说明:
has_filter:是否存在筛选区(含筛选关键词且同时存在下拉/输入/日期控件,或含筛选操作按钮)filter_fields:筛选条件列表,每项含label(筛选条件名称)/control_type(控件类型,待确认时不臆想)/required/default_value/notefilter_actions:筛选操作按钮列表(查询/搜索/重置/清空等)
筛选字段的控件类型/必填/默认值若原型未明确显示,标"待确认",需对照原型或与用户确认后再补充。
技能已支持解析原型中的便签和矩形内备注说明:
- Axure 便签:以
id后缀_ann的 div 标识,文本在<span>内 - 矩形内备注说明:以"备注"字样开头的矩形/文本段落
解析后归入每页的 notes 字段。所有 7 类交付物都应纳入 notes 字段,具体纳入方式见各 reference 文件的"便签/备注说明的纳入"章节:
| 交付物 | 纳入方式 |
|---|---|
| PRD | 补入功能需求的"备注说明"项和附录的便签汇总 |
| 功能清单 | 补为独立功能条目或备注列 |
| 测试用例 | 补为业务规则用例或前置条件 |
| 数据字典 | 优先填入"说明"和"备注"列 |
| 页面跳转关系图 | 补入跳转条件与备注列 |
| 用户故事 | 补为独立故事、验收标准或角色识别依据 |
| 开发计划 | 影响工时估算与风险评估 |
每份交付物末尾的"数据来源说明"章节会标注:便签/矩形内备注说明已纳入。
# 完整目录解析,输出可读摘要(自动识别工具类型)
python3 scripts/parse_axure.py <原型目录路径>
# 输出 JSON 摘要(推荐,便于后续程序化处理)
python3 scripts/parse_axure.py <原型目录路径> --json-summary
# 输出完整 JSON(含所有文本/控件/交互/便签)
python3 scripts/parse_axure.py <原型目录路径> --json
# 单个 HTML 文件
python3 scripts/parse_axure.py <页面.html>脚本按以下顺序识别工具类型,第一个匹配成功即返回:
- Axure:
data/document.js或resources/scripts/axure/ - 墨刀:
index.html含mockplus/mp-,或含mockplus.js/mp.js - MasterGo:
index.html含mastergo,或 JS 含PAGED_FRAMES/FILE_DATA - 蓝湖:含
lanhu/lanhuapp、.schema.json文件,或 JS 含lanhutext/lanhuimage - 未知:退化为通用 HTML 扫描
| 工具 | 数据源 | 页面树 | 文本 | 控件类型 | 交互事件 | 便签/备注 |
|---|---|---|---|---|---|---|
| Axure | document.js + HTML + data.js |
✓ 树形 | ✓ span | ✓ friendlyType | ✓ onClick | ✓ _ann div + 矩形备注 |
| 墨刀 | HTML + index.html 链接 |
✗ 扁平 | ✓ span | ✓ 注释 | ✗ | ✓ 矩形备注 |
| MasterGo | PAGED_FRAMES JS |
✗ 画板列表 | ✗ | ✗ | ✗ | ✗ |
| 蓝湖 | .schema.json 图层树 |
✗ 每画板独立 | ✓ lanhutext | ✓ 图层类型 | ✗ | ✗ |
| 未知 | HTML 扫描 | ✗ 扁平 | ✓ span | ✓ 注释 | ✗ | ✓ 矩形备注 |
document.js:用"pageName"/"url"/"children"标识页面层级- 每页
data.js:用friendlyType/label/interactionMap/style描述控件 - HTML 中:
<span>装载可见文本、<!-- Unnamed (类型) -->标识控件、table_cell类标识表格、<img>引用images/
任一工具缺数据源时退化为通用 HTML 扫描,输出中标注"降级版本"。
出现异常按以下 fallback 处理,不静默失败。原则:即使原型不完整,也要交付一份降级版文档,而非直接报错退出。
| 异常场景 | 处理动作 |
|---|---|
| 路径不存在 | 报告用户 + glob 父目录搜候选让用户选 + 不自行假设路径 |
| parse_axure.py 报错 | 单独跑一次捕获 stderr 展示 + 降级为直接 read_file HTML 提取 <span> 文本和控件注释(标注"降级输出,未含交互/树结构")+ 降级也失败则终止告知 |
files/<页面名>/data.js 缺失 |
仅 HTML 解析,标注"本页无 data.js,交互事件未提取" |
页面 HTML 无 <span> 文本 |
标注"本页无可见文本,可能为纯图片/流程图页面",保留条目功能描述写"(待补充)" |
document.js 解析后页面数为 0 或树构建失败 |
降级扁平扫描 glob *.html(排除 index/start),标注"层级关系待补充" |
output/ 不可写 |
尝试用户指定路径 → CWD → /tmp/,告知实际保存路径 |
输入:
我这边有一个 Axure 原型导出的目录,在 /Users/wikky/Net Scaler 下面,是一个服务管理后台的原型。
请帮我解析这个原型,然后生成一份 PRD(产品需求文档),输出 Markdown 格式。
执行过程:
- 脚本识别为 Axure(存在
data/document.js) - 解析得到 17 个页面 + 5 根节点树结构 + 每页文本/控件/交互/便签
- 展示解析摘要,等待用户确认范围
- 读取
references/PRD-template.md - 生成
output/PRD.md,含 7 章节,便签说明纳入功能需求和附录
输出:/Users/wikky/Net Scaler/output/PRD.md
输入:
请帮我分析 /Users/wikky/Net Scaler 这个 Axure 原型,生成一份功能清单(Excel xlsx 格式)
和一份测试用例文档(xlsx 格式)。功能清单需要包含模块、功能名称、功能描述、优先级这些列。
测试用例需要包含模块、功能点、测试场景、前置条件、测试步骤、预期结果。
执行过程:
- 脚本识别为 Axure,解析 17 页面
- 展示解析摘要
- 读取
references/功能清单.md和references/测试用例.md - 用 openpyxl 生成两个独立 xlsx,各含主表 + 副表「说明」
- 功能清单按页面分组,测试用例按模块分组,便签说明补入
输出:
/Users/wikky/Net Scaler/output/功能清单.xlsx/Users/wikky/Net Scaler/output/测试用例.xlsx
输入:
我这里有一个 Axure 原型导出的单个 HTML 页面,是 /Users/wikky/Net Scaler/实例管理.html,
请帮我解析这个页面,然后生成一份页面分析报告,包括页面名称、核心功能、页面上的所有控件和交互、
以及数据字段定义。
执行过程:
- 脚本识别为单文件模式
- 解析 HTML 提取文本/控件注释/便签;查找同级 data.js(若有)
- 生成页面分析报告(含数据字段定义,参考
数据字典.md规范)
输出:/Users/wikky/Net Scaler/output/页面分析报告.md
输入:
我有一个墨刀导出的离线 HTML 演示包,解压后放在 ~/Downloads/订单管理原型/ 下面,
是一个电商后台订单管理的原型。请帮我解析这个墨刀原型,识别里面的页面,
生成一份 PRD(Markdown 格式)和一份功能清单(xlsx 格式)。
执行过程:
- 脚本识别为 mockplus(
index.html含 mockplus 字样) - 扫描所有 HTML 文件提取页面文本和控件注释
- 标注"不支持交互提取"(墨刀离线包格式不固定)
- 生成 PRD.md(含页面清单、功能描述)和功能清单.xlsx
输出:
~/Downloads/订单管理原型/output/PRD.md~/Downloads/订单管理原型/output/功能清单.xlsx
输入:
我从 MasterGo 离线标注插件导出了一个设计稿,文件夹在 ./mastergo_export/ 下,
里面有一个含 PAGED_FRAMES 的 js 数据文件和 index.html。
请帮我分析这个导出,列出所有画板名称,生成一份页面清单和测试用例文档。
执行过程:
- 脚本识别为 mastergo(JS 含
PAGED_FRAMES) - 定位数据 JS 文件,提取画板名称和 ID 列表
- 标注"不含图层文本"(画板级数据不含图层文本)
- 生成页面清单.md 和测试用例.md
输出:
./mastergo_export/output/页面清单.md./mastergo_export/output/测试用例.md
输入:
蓝湖导出的设计稿 schema JSON 文件在 ./lanhu_schema/ 目录下,有几个 .schema.json 文件,
每个对应一个画板。请帮我解析这些 schema,提取每个画板的文本内容和图层类型,
生成一份页面分析报告和数据字典。
执行过程:
- 脚本识别为 lanhu(存在
.schema.json文件) - 递归遍历图层树提取
lanhutext文本和图层类型 - 生成页面分析报告.md 和数据字典.md
输出:
./lanhu_schema/output/页面分析报告.md./lanhu_schema/output/数据字典.md
输入:
我这边有一个原型导出的 HTML 文件夹,但我不确定是什么工具导出的,
在 ./unknown_prototype/ 下面,有十几个 html 文件和一些图片资源。
请帮我分析这个原型,生成一份 PRD。
执行过程:
- 脚本识别为 unknown(退化 fallback)
- 扫描所有 HTML 提取文本和控件注释
- 标注"工具类型未识别,输出为降级版本"
- 生成 PRD.md
输出:./unknown_prototype/output/PRD.md
prototypes-spec/
├── SKILL.md # 主技能文档(257 行,触发词 + 工作流 + 边界条件)
├── scripts/
│ └ parse_axure.py # 多工具解析引擎(1000+ 行)
├── references/ # 各交付物的格式规范(渐进披露,按需加载)
│ ├── PRD-template.md # PRD 7 章节结构规范
│ ├── 功能清单.md # 功能清单 8 列 xlsx 规范 + 生成代码模板
│ ├── 测试用例.md # 测试用例 8 列 xlsx 规范 + 生成代码模板
│ ├── 数据字典.md # 数据字典 9 列字段定义规范 + 生成代码模板
│ ├── 开发计划.md # 开发计划模块拆分 + 里程碑规范 + 生成代码模板
│ ├── 页面跳转关系图.md # Mermaid 流程图 + 跳转详表规范 + 生成代码模板
│ └ 用户故事.md # 角色定义 + 故事地图规范 + 生成代码模板
├── evals/
│ └ evals.json # 3 个测试用例(用于技能评估)
├── test-prompts.json # 7 个测试 prompt(覆盖 5 工具 + 边界场景)
├── results.tsv # Darwin Skill 优化日志
├── result-card.html # 成果卡片 HTML(优化前后对比可视化)
├── result-card.png # 成果卡片截图
前 readme.md # 本文件
技能采用三层加载系统:
- 元数据(name + description)— 始终在上下文中(~100 词),用于触发判断
- SKILL.md 正文(257 行)— 技能触发时加载,含工作流 + 边界条件
- reference 文件(按需加载)— 只在生成对应交付物时读取,含详细列定义 + 生成代码模板
这样设计的原因:每种交付物的列定义、生成代码模板、便签纳入规则都较复杂,全塞进 SKILL.md 会超过 500 行上限。拆分到 reference 后,只在真正生成某交付物时加载对应规范,节省上下文。
本技能经 Darwin Skill 自主优化循环持续改进,完整优化日志见 results.tsv。
| 阶段 | 分数 | 改进维度 | 改进内容 |
|---|---|---|---|
| 初始基线 | 71.1 | — | axure-prototypes-prd 命名,初始版本 |
| Round 1 | 74.1 | 边界条件 | 补充 5 条 fallback 路径 |
| Round 2 | 76.2 | 检查点设计 | 补充跳过询问规则 |
| Round 3 | 79.2 | 指令具体性 | 补充 parse_axure.py 调用命令 |
| 重基线 | 84.5 | — | 改名 prototypes-spec + 新增 6 reference + 便签解析 + PRD 精简 |
| Round 1' | 86.0 | 指令具体性 | 询问环节补列速查 + 输出管理补 xlsx 多 sheet 规则 |
| Round 2' | 87.5 | 整体架构 | 解析引擎说明精简为对比表 |
| Round 3' | 88.2 | 检查点设计 | 询问环节补"展示后暂停等待确认"指令 |
当前分数:88.2/100
| # | 维度 | 权重 | 当前分 | 加权 |
|---|---|---|---|---|
| 1 | Frontmatter 质量 | 8 | 9 | 7.2 |
| 2 | 工作流清晰度 | 15 | 9 | 13.5 |
| 3 | 边界条件覆盖 | 10 | 9 | 9.0 |
| 4 | 检查点设计 | 7 | 10 | 7.0 |
| 5 | 指令具体性 | 15 | 9 | 13.5 |
| 6 | 资源整合度 | 5 | 9 | 4.5 |
| 7 | 整体架构 | 15 | 9 | 13.5 |
| 8 | 实测表现 | 25 | 8 | 20.0 |
| 总分 | 100 | 88.2 |