Skip to content

Repository files navigation

prototypes-spec · 原型→开发交付物生成器

从原型工具导出的 HTML 目录(或单个 HTML 文件)中自动识别页面结构、页面内容、控件和交互,生成 PRD、功能清单、测试用例、数据字典、页面跳转关系图、用户故事、开发计划等开发交付物。

支持 Axure RP、墨刀 Mockplus、MasterGo、蓝湖 Lanhu 及未知工具的 HTML 导出(退化为通用解析)。


目录


安装

方式 1:通过 .skill 文件安装

  1. 获取 prototypes-spec.skill 包文件
  2. 在 Claude Code 或 Claude.ai 中导入该 .skill 文件
  3. 安装后技能会出现在 ~/.claude/skills/prototypes-spec/

方式 2:手动放置源文件

将 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 会自动:

  1. 识别原型类型 — 调用 parse_axure.py 脚本自动识别工具类型
  2. 解析原型结构 — 提取页面树、文本内容、控件类型、交互事件、便签/备注
  3. 询问交付物(若未明确指定) — 展示解析摘要,等待你确认范围
  4. 生成交付物 — 按对应 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 里程碑 + 风险项

各交付物详细说明

📄 PRD(产品需求文档)

  • 格式: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
  • 每个 xlsx 含主表 + 副表「说明」共 2 张 sheet
  • 主表冻结首行,列宽固定,模块标题行合并单元格

md 输出规则

  • 每份 md 交付物独立单文件,不合并
  • 末尾含"数据来源说明"章节,标注便签/备注说明是否已纳入

页面分类与截图拼接识别

解析时每页新增以下字段,所有交付物都应基于这些字段生成:

字段 类型 说明
page_category string 页面分类标签
is_screenshot_composite bool 页面是否由多张截图拼出来
screenshot_evidence string 截图拼接判定的证据描述
strict_fields list 严格基于页面出现内容提取的字段说明(禁止臆想)
ambiguous_fields list 模糊字段,需先与用户确认再写入 PRD/数据字典
filter_area dict 筛选区域识别(管理后台常见)

页面分类(page_category)

分类 含义
admin_console 管理后台页面
config_page 配置页
mobile_page 移动端页面
flow_diagram 流程图 / 拓扑图
login_page 登录 / 注册 / 验证码页
list_page 列表页
detail_page 详情页
form_page 表单页
modal_dialog 弹窗 / 对话框
dashboard 仪表盘 / 数据看板
image_composite 截图拼接页
unknown 无法判定

识别优先级:关键词匹配(页面名+文本)> 控件组合推断 > 截图拼接 > unknown。

截图拼接识别(is_screenshot_composite)

满足以下任一条件即判定为截图拼接:

  1. 多张大图:≥2 张宽度 ≥600px 的 <img>
  2. 多张 background-image 切片:≥2 个不同 url 的 background-image
  3. 文本极少 + 图片多:文本 ≤5 条且 <img> ≥3 张
  4. 单张超大图 + 几乎无文本:一张宽度 ≥800px 的图且文本 ≤5 条

判定为截图拼接的页面,PRD 上必须有明确标识(见 references/PRD-template.md 的"截图拼接页标识"章节)。

严格字段提取(禁止臆想)

字段说明严格基于页面出现的内容输出:

  1. 字段标签必须出现在页面 texts 中——以":"或":"结尾,或匹配常见字段后缀(名称/编号/状态/时间/日期/类型/分类/部门/创建时间/更新时间/手机/邮箱/地区/标签/级别 等)
  2. 字段类型从对应控件推断:标签后紧跟"请选择"则下拉,"请输入"则输入框,"请选择日期"则日期选择器;控件对应不上时标"待确认"
  3. 必填/默认值/校验规则:原型未明确显示时,一律标"待确认",不得凭空臆想
  4. 模糊字段归入 ambiguous_fields:标签后无对应控件文本,或类型完全无法推断;必须先与用户确认后再写入 PRD/数据字典
  5. 英文字段名(name):不臆想,留空待用户/后端确认

筛选区域识别(filter_area,管理后台常见)

后台管理页面若有筛选区域,识别并输出筛选字段说明:

  • has_filter:是否存在筛选区(含筛选关键词且同时存在下拉/输入/日期控件,或含筛选操作按钮)
  • filter_fields:筛选条件列表,每项含 label(筛选条件名称)/control_type(控件类型,待确认时不臆想)/required/default_value/note
  • filter_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>

工具识别顺序

脚本按以下顺序识别工具类型,第一个匹配成功即返回:

  1. Axure:data/document.js 或 resources/scripts/axure/
  2. 墨刀:index.html 含 mockplus/mp-,或含 mockplus.js/mp.js
  3. MasterGo:index.html 含 mastergo,或 JS 含 PAGED_FRAMES/FILE_DATA
  4. 蓝湖:含 lanhu/lanhuapp、.schema.json 文件,或 JS 含 lanhutext/lanhuimage
  5. 未知:退化为通用 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 ✓ 注释 ✗ ✓ 矩形备注

Axure 数据键说明

  • 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/,告知实际保存路径

示例

示例 1:Axure 完整目录 → PRD

输入:

我这边有一个 Axure 原型导出的目录,在 /Users/wikky/Net Scaler 下面,是一个服务管理后台的原型。
请帮我解析这个原型,然后生成一份 PRD(产品需求文档),输出 Markdown 格式。

执行过程:

  1. 脚本识别为 Axure(存在 data/document.js)
  2. 解析得到 17 个页面 + 5 根节点树结构 + 每页文本/控件/交互/便签
  3. 展示解析摘要,等待用户确认范围
  4. 读取 references/PRD-template.md
  5. 生成 output/PRD.md,含 7 章节,便签说明纳入功能需求和附录

输出:/Users/wikky/Net Scaler/output/PRD.md

示例 2:Axure → 功能清单 + 测试用例

输入:

请帮我分析 /Users/wikky/Net Scaler 这个 Axure 原型,生成一份功能清单(Excel xlsx 格式)
和一份测试用例文档(xlsx 格式)。功能清单需要包含模块、功能名称、功能描述、优先级这些列。
测试用例需要包含模块、功能点、测试场景、前置条件、测试步骤、预期结果。

执行过程:

  1. 脚本识别为 Axure,解析 17 页面
  2. 展示解析摘要
  3. 读取 references/功能清单.md 和 references/测试用例.md
  4. 用 openpyxl 生成两个独立 xlsx,各含主表 + 副表「说明」
  5. 功能清单按页面分组,测试用例按模块分组,便签说明补入

输出:

  • /Users/wikky/Net Scaler/output/功能清单.xlsx
  • /Users/wikky/Net Scaler/output/测试用例.xlsx

示例 3:单个 HTML 文件 → 页面分析报告

输入:

我这里有一个 Axure 原型导出的单个 HTML 页面,是 /Users/wikky/Net Scaler/实例管理.html,
请帮我解析这个页面,然后生成一份页面分析报告,包括页面名称、核心功能、页面上的所有控件和交互、
以及数据字段定义。

执行过程:

  1. 脚本识别为单文件模式
  2. 解析 HTML 提取文本/控件注释/便签;查找同级 data.js(若有)
  3. 生成页面分析报告(含数据字段定义,参考 数据字典.md 规范)

输出:/Users/wikky/Net Scaler/output/页面分析报告.md

示例 4:墨刀离线包 → PRD + 功能清单

输入:

我有一个墨刀导出的离线 HTML 演示包,解压后放在 ~/Downloads/订单管理原型/ 下面,
是一个电商后台订单管理的原型。请帮我解析这个墨刀原型,识别里面的页面,
生成一份 PRD(Markdown 格式)和一份功能清单(xlsx 格式)。

执行过程:

  1. 脚本识别为 mockplus(index.html 含 mockplus 字样)
  2. 扫描所有 HTML 文件提取页面文本和控件注释
  3. 标注"不支持交互提取"(墨刀离线包格式不固定)
  4. 生成 PRD.md(含页面清单、功能描述)和功能清单.xlsx

输出:

  • ~/Downloads/订单管理原型/output/PRD.md
  • ~/Downloads/订单管理原型/output/功能清单.xlsx

示例 5:MasterGo 离线标注 → 页面清单 + 测试用例

输入:

我从 MasterGo 离线标注插件导出了一个设计稿,文件夹在 ./mastergo_export/ 下,
里面有一个含 PAGED_FRAMES 的 js 数据文件和 index.html。
请帮我分析这个导出,列出所有画板名称,生成一份页面清单和测试用例文档。

执行过程:

  1. 脚本识别为 mastergo(JS 含 PAGED_FRAMES)
  2. 定位数据 JS 文件,提取画板名称和 ID 列表
  3. 标注"不含图层文本"(画板级数据不含图层文本)
  4. 生成页面清单.md 和测试用例.md

输出:

  • ./mastergo_export/output/页面清单.md
  • ./mastergo_export/output/测试用例.md

示例 6:蓝湖 Schema JSON → 页面分析报告 + 数据字典

输入:

蓝湖导出的设计稿 schema JSON 文件在 ./lanhu_schema/ 目录下,有几个 .schema.json 文件,
每个对应一个画板。请帮我解析这些 schema,提取每个画板的文本内容和图层类型,
生成一份页面分析报告和数据字典。

执行过程:

  1. 脚本识别为 lanhu(存在 .schema.json 文件)
  2. 递归遍历图层树提取 lanhutext 文本和图层类型
  3. 生成页面分析报告.md 和数据字典.md

输出:

  • ./lanhu_schema/output/页面分析报告.md
  • ./lanhu_schema/output/数据字典.md

示例 7:未知工具 → PRD(降级)

输入:

我这边有一个原型导出的 HTML 文件夹,但我不确定是什么工具导出的,
在 ./unknown_prototype/ 下面,有十几个 html 文件和一些图片资源。
请帮我分析这个原型,生成一份 PRD。

执行过程:

  1. 脚本识别为 unknown(退化 fallback)
  2. 扫描所有 HTML 提取文本和控件注释
  3. 标注"工具类型未识别,输出为降级版本"
  4. 生成 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                  # 本文件

渐进披露设计

技能采用三层加载系统:

  1. 元数据(name + description)— 始终在上下文中(~100 词),用于触发判断
  2. SKILL.md 正文(257 行)— 技能触发时加载,含工作流 + 边界条件
  3. 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

8 维度评分明细

# 维度 权重 当前分 加权
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

About

No description, website, or topics provided.

Resources

Stars

15 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages