原型图转PRD

SKILL开发
开发 未标注权限 许可证不明确
安装这个技能

资深产品经理 + 文档工程师技能:把一个已完成的可交互原型(单文件 HTML 原型 / Figma 导出页 / 截图组 / 线上页面)反向梳理成结构完整、可开发、可测试的功能需求文档(PRD),输出为带左侧栏目录、滚动高亮的单文件 HTML;并支持把 PRD 的需求点反向标注到原型图对应的功能位置上(编号锚点 + 侧边需求面板 + 点击查看详情)。以原型为唯一事实来源,逐页对账,保证原型里每个页面、每个交互动作、每条上限校验、每句文案在 PRD 中都有对应条目。当用户说'把原型生成PRD'、'按原型重新梳理需求文档'、'原型转需求文档'、'根据这个原型写PRD'、'原型图生成PRD'、'把 HTML 原型整理成需求文档'、'把PRD需求点标注到原型上'、'给原型加需求标注'时触发。

一句话选型结论

按资料字段整理

原型图转PRD是开发类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类开发 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_4352adfb/yxzprd
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

开发
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_4352adfb仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791727859
正文体量20.5 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写代码与改 bug

按需求补代码、定位并修掉报错。

读仓库与生成改动

让模型读懂项目结构,再给出可落地的改动。

跑测试与排查故障

按现象排查问题,补测试用例并复跑。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在开发场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
原型图转PRD当前 未标注权限 未标注 未标注 未标注 有
技能审查员 浏览器控制 ClawHub 市场 877.9 万 OpenClaw 有
Vercel React 最佳实践 浏览器控制 GitHub 仓库 849.1 万 Codex、Claude、Cursor 有
GitHub 代码协作 联网访问 ClawHub 市场 763.3 万 OpenClaw 有
网页设计指南 联网访问 GitHub 仓库 668.6 万 Codex、Claude、Cursor 有
本体论 只读 ClawHub 市场 663.7 万 OpenClaw 有

SKILL.md 全文

20.5 KB
模型实际读到的说明书原文,来自技能仓库

原型图转 PRD

概述

本技能解决「原型已经改了很多轮,PRD 落后于原型」的问题:以已完成的交互原型为唯一事实来源,反向生成一份可开发、可测试的功能需求文档。

与「思维导图转 PRD」的区别:思维导图转 PRD 是从抽象到具体(补全规则);本技能是从具体到文档(复述并固化原型里已经成立的一切)——原型是标准答案,PRD 的职责是把原型里"看得见但读不出"的规则写成文字。

核心纪律:不发明功能。原型里没有的,不写进正文(只能进「待确认事项」);原型里有的,一条都不能漏。

触发条件

  • 用户提供原型(HTML 文件、Figma 链接/截图、线上页面)并要求生成 PRD / 需求文档
  • 用户说"按现有的原型图重新梳理需求文档"、"把原型生成PRD"、"原型转需求文档"
  • 原型已迭代多轮,旧 PRD 与原型不一致,需要重新对齐
  • 需要给研发/测试交付一份与原型逐条对得上的开发基线文档
  • 用户要求把 PRD 的需求点标注到原型图对应的功能位置(反向标注,见第八步)

输入要求

输入 处理方式
单文件 HTML 原型(首选) 直接解析源码,抽取页面、动作、弹层、上限、常量 → 精度最高
多文件 HTML / 前端工程 按路由或页面组件逐个解析,忽略构建产物细节
Figma / 设计稿截图 逐屏读图,按「一屏一节」组织,标注为"依据设计稿,未经交互验证"
线上页面 抓取页面结构与文案,标注为"依据线上版本,可能与最新设计稿有差"
原型不存在 拒绝进入本流程,改用「思维导图转 PRD」或先做原型

若原型页面超过 30 页:先输出模块分组与页面清单,暂停等待用户确认分组,再逐模块展开,不要一次性硬写。

工作流程

第一步:抽取原型事实清单(禁止跳过)

运行技能自带脚本,把原型的客观事实先落到纸面。脚本位于技能根目录(本机为 C:\Users\李舟\.workbuddy\skills\原型图转PRD\scripts\,实际调用时用绝对路径,不要假设当前工作目录):

python <技能根>/scripts/extract_prototype.py <原型.html> --out 原型清单.md

产出:页面清单(定义顺序)、弹层清单、交互动作与按钮文案、数值上限与校验片段、演示与占位统计、常量与枚举表。
这份清单是后续 PRD 的写作依据,也是最终对账的基准。

第二步:读懂原型架构

重点读四类信息,它们决定 PRD 的写法:

  1. 页面容器:SCREENS / 路由表 / .screen 节 → PRD 第四章的页面编排顺序
  2. 状态对象:S / state → PRD「数据字典 - 状态树」
  3. 动作表:A / handlers + data-act → PRD 每个页面的「交互与规则」
  4. 常量表:PRESET_* / *_SEED / 枚举 → PRD「数据字典 - 枚举值总表」

同时记录:每个页面的进入路径(从哪个 Tab / 哪个按钮进来)、上限与门槛(会员锁定、试用上限、数量上限)、提示文案原文。

第三步:输出 PRD 结构方案(暂停确认)

在写正文前,先给用户一份 3 分钟可读完的方案:

  • 页面总数 → 模块分组结果(例:47 页 → 5 大模块:启动与登录 3 / 首页 1 / 训练 17 / 饮食与身体目标 9 / 我的与档案 17)
  • 章节骨架(01 文档信息 → 09 附录)
  • 页面编号方案(P01…P47,编号顺序 = 原型定义顺序)
  • 全局规范要抽哪几类(信息架构、会员门槛、通用组件、占位与演示规范、全局限制汇总)

用户确认后再进入正文写作。若用户已明确"直接写",可跳过暂停。

第四步:写正文片段

正文写成独立的 content.html 片段(只含 <section> 与 <div class="fp-head">,不含 html/head/body),随后由脚本套骨架。不要手写侧边栏——目录由脚本从正文自动推导,避免断链。

第五步:组装

python <技能根>/scripts/build_prd.py --content content.html --out <产品名>-功能清单-PRD.html \
  --title "力刻App 用户端" --version "V2.0" \
  --vertags "V2.0,按原型全量重组,2026-09-18"

脚本自动注入 assets/prd-style.css、套 assets/prd-shell.html 骨架、生成侧边栏三级目录与滚动高亮。

第六步:自检与对账

python <技能根>/scripts/build_prd.py --check --out <同一文件>

必须 0 错误(重复 id、侧边栏断链、标签不配平、章节/页码不连续、占位符残留均会报出)。

再做一次覆盖对账,逐条确认原型事实都在 PRD 里落了位置:

原型里的事实 必须落在 PRD 的哪里
每个页面 第四章一个页面节(编号 Pnn)
每个 Tab / 入口 3.1 信息架构 + 3.1.3 页面进入路径对照
每个按钮 / 动作 对应页面节的「交互与规则」或按钮表
每个弹窗 / 弹层 作为独立页面节或该页面节下的弹窗条目
每条数量上限 / 数值区间 3.5 全局限制与校验汇总(并回写所在页面节)
每个常量 / 枚举 6.2 核心实体字段 + 6.3 枚举值总表
状态对象 6.1 客户端状态树总览
占位图 / 演示数据 3.4 演示与占位规范
会员门槛 / 锁定 3.2 会员状态与功能门槛
关键链路(同步、状态机) 第五章 关键流程与状态机

第七步:交付

用 present_files 打开 PRD 文件,附一段(不超过 6 行)说明:页面数、模块分组、本版相对上一版的变化。

第八步(可选):把 PRD 需求点标注到原型对应位置

用户说"把需求标注到原型上"、"给原型加需求标注"时进入本步。产出一份追加了标注系统的原型副本(不改原文件),实现"编号锚点定位到功能位置 → 点击查看需求详情 → 侧边面板浏览全部需求"。

① 生成映射草稿(脚本自动做,防漏页防错位):

python <技能根>/scripts/annotate_prototype.py --proto <原型.html> --prd <PRD.html> \
  --draft annotations.json --product "<产品名>" --version "<PRD版本>"

脚本自动完成四件事:
1. PRD 页面节 ↔ 原型 SCREENS 页面匹配(全局贪心名称匹配 + 驼峰 key 中英反译 + 邻近锚定推断)
2. 锚点多候选(targets 数组):独有 data-act > 页内静态标题 > 页内独有静态文本 > __PAGE__ 兜底,运行时依次尝试取第一个可见的——独有动作写在弹窗/条件分支里时自动降级,不会整页标注失效
3. 页面探针(probes,降级路径用):独有 data-act + 页内静态标题 + 页内独有静态文本(去 ${} 表达式后仍在的"无条件渲染"文本,跨页统计唯一性)
4. 编号重排:按「原型页面出现顺序 + 页内锚点位置」重排为 1..N——编号从原型第一个页面(注册/登录)的 1 号开始逐页递增,同一界面上编号连续且与页面内上下位置一致。原 PRD 编号保留在 prd 字段不受影响

输出一张对账表,标出哪些是精确匹配、哪些需要核对。

② 修正映射(模型职责,脚本无法判断的部分):

  • 核对"邻近推断/待指定"条目:弹窗、浮层不是独立页面,把 page 指向承载它的页面,targets 首选指向触发按钮或弹窗容器
  • 想把锚点钉到更精确的功能位置(某个按钮、某张卡片),把该条 targets[0] 改为具体选择器(其余候选保留作兜底)
  • 精修 detail:从 PRD 页面节中挑最关键的规则(脚本已预填规则要点,通常够用)

③ 注入标注系统:

python <技能根>/scripts/annotate_prototype.py --proto <原型.html> --map annotations.json \
  --out <原型名>-已标注.html

脚本要求自检 0 错误 再交付。重复运行会先移除旧注入块(幂等);注入时同样会重排编号(--no-renumber 可关闭),并自动兼容旧格式映射(单字符串 target/probes 会升级为多候选)。

④ 真机验证(必须):用 Chrome 无头截图或 CDP 驱动,至少验证:锚点显示、切页后锚点跟随当前页面、面板打开、点击卡片高亮目标;重点检查面板定位标签——除当前页外应全部显示灰色「其他界面」,绝不允许出现批量「未定位」(出现即说明面板渲染早于定位计算,或标签逻辑把"其他界面"误判为"未定位")。

锚点定位与页面判定规则

锚点 targets 是候选数组(运行时按序取第一个可见的),生成时的优先级:

优先级 候选写法 适用场景 示例
1 [data-act="动作名"] 按钮/交互元素,原型里最稳定的钩子 [data-act="newTpl"]
2 __T__:页内静态文本 无独有动作的页面,锚点挂在标题/独有文案元素上 __T__:怎么吃
3 __PAGE__ 最终兜底,定位到当前界面第一个内容块 __PAGE__
任意 普通 CSS 选择器 任何稳定元素 .navbar .title

防跨页误显靠双层机制:

  1. 首选:宿主渲染状态直读(零误判)。脚本会自动探测原型的当前页面变量(render() 里给 CURRENT 赋值 / STACK 栈顶 / S.page),生成 pageExprs 候选表达式;运行时直接读"当前页面 key"与标注的 page 精确比对。单文件原型把状态声明在顶层 const/let 时跨 <script> 可见,此路径最可靠。
  2. 降级:页面探针(probes)。探测不到宿主状态时,检查该页探针(独有 data-act / 页内静态文本,多候选任一命中)在当前 DOM 是否可见,不可见则锚点自动隐藏、卡片标记「未定位」。探针文本必须严格匹配叶子元素文本(去空白后相等),避免"用户协议""训练日志"这类跨页复用文案造成的误显。

自检会对"未探测到宿主状态"和"页面无探针"给出警告——出现时优先排查,不要带病交付。

标注系统交互规格

  • 编号规则:全局 1..N,按原型页面顺序编排(从注册/登录页的 1 号开始),同一界面的编号连续成段、与页面内上下位置一致;PRD 引用(Pnn)单独显示不受影响
  • 顶部工具栏(44px,深色):产品名 + PRD 版本 + 「标注 N 条 · 本页 M 条」+ 标注列表 + 显示开关(快捷键 Alt+A)
  • 锚点:24px 圆形编号,默认钉在目标元素右上角;四边界防出界 + 防重叠偏移(最多 8 次)
  • 侧边面板(380px 右滑):按页面分组的卡片列表(分组头 = 起始编号 + 页面名 + 原型 key;当前界面的分组高亮并带「当前」标记),卡片含编号、标题、优先级(P0 红/P1 橙/P2 蓝)、PRD 章节引用(可点击跳转到 PRD 对应锚点)、所属模块、需求详情;筛选:全部 / P0 / P1 / P2 / 当前界面
  • 定位状态标签三态(切页自动刷新):本页且找到元素 → 绿色「本页」;本页但找不到元素 → 橙色「未定位」(真异常,需检查锚点候选);不属于本页 → 灰色「其他界面」(正常,卡片淡化)。绝不能把"其他界面"显示成"未定位"——那会让用户误以为标注全坏了
  • 点击「其他界面」的卡片自动跳页:脚本探测宿主切页函数(go/navTo 等,写入 goExprs),点卡片先切到那一页再高亮锚点;探测不到切页函数则不跳
  • 点击锚点 ⇄ 点击卡片双向联动,高亮目标元素(橙色描边);Esc 关闭面板
  • 动态适配:MutationObserver 监听换页重绘 + scroll/resize + 800ms 兜底轮询,切页后锚点与面板标签自动重排

PRD 结构契约

一级章节固定九章(编号与侧边栏徽标对应):

章节 内容 要点
01 文档信息 文档名称/版本/日期/状态/适用范围/对照原型/上版本 必须写明"以原型为唯一事实来源,不一致时以原型为准"
02 产品概述 背景、目标用户、痛点、业务价值、名词解释、产品结构与页面地图 页面地图用模块 → 页面的树表
03 全局规范 信息架构与导航、会员状态与门槛、通用组件与交互、演示与占位规范、全局限制与校验汇总 全局限制汇总表是全文档性价比最高的一节
04 功能详情 按模块分组的页面节,一节一页 见下文页面节写法
05 关键流程与状态机 状态机 + 跨页同步链 + 生命周期 跨页面联动必须在此闭环
06 数据字典 状态树、核心实体字段、枚举值总表 字段类型 + 取值 + 默认值
07 非功能性需求 性能、兼容与适配、安全与隐私、可用性与容错 带具体数值
08 接口依赖 依赖总览 + 逐个接口(入参/出参/异常) 第三方数据源写清失败降级
09 附录 原型页面清单、演示数据、待确认事项、修订记录 未验证的推断一律进「待确认事项」

页面节写法(核心模板)

每个页面节由 头部 + 目标 + 元素表 + 规则列表(+ 提示块) 组成,顺序固定:

<div class="fp-head" id="pg-home"><span class="num">P04</span><h3>首页</h3>
  <span class="tag t-p0">P0</span><span class="tag t-p2">Tab 首页</span></div>
<p><strong>目标:</strong>一屏回答「今天练什么 / 本周练了多少 / 还差什么没记」。</p>

<h4 class="sub">页面元素(自上而下)</h4>
<table>
  <thead><tr><th style="width:170px">区块</th><th>内容与规则</th></tr></thead>
  <tbody>
    <tr><td class="hl">会员提醒条</td><td>试用期展示「试用剩余 N 天 …」;点击跳会员中心。买断用户不展示</td></tr>
  </tbody>
</table>

<h4 class="sub">交互与规则</h4>
<ul class="check">
  <li>数据来自「日历」中<strong>挂载到今天</strong>的模板,未挂载显示空态。</li>
</ul>
<div class="callout info">需要强调的口径写在这里。</div>

写作要求:

  1. 页面元素表按自上而下顺序列区块,每行说清"展示什么 + 什么条件下不展示 + 点击去哪一页(写 Pnn)"。
  2. 交互与规则用列表,每条一个判断,覆盖:数据来源、上限与门槛、状态切换、跳转去向、文案原文。
  3. 文案用「」原文引用,不要转述。
  4. 跨页跳转一律写目标页编号(如"→ P22"),保证可点击对账。
  5. 优先级标签:P0 核心主流程 / P1 重要体验 / P2 次要或后续迭代。
  6. 页面节头部必须带 id="pg-关键英文名",编号 Pnn 与侧边栏索引一致,且全局连续。

增量修订规范(原型改了之后再更新 PRD)

原型迭代是本流程的常态,按以下纪律避免改坏:

  1. 版本步进:每次修订升版本号,并在「01 文档信息」的"上一版本"里写明变更摘要;附录 9.5 修订记录追加一行。
  2. 编号只增不改:页面编号 Pnn 一旦发布不再重排,新增页面接在末尾或插入后顺延并同步更新侧边栏与所有"N 页"计数;历史修订记录中的旧编号不动。
  3. 批量替换用脚本 + 断言:用 Python 脚本做正文替换,每个替换 assert 命中数 == 1,全部断言通过后再一次性写盘(写盘放在脚本末尾)。中途失败时文件保持原样,可安全重跑。
  4. 锚点选取要唯一:避免用会被其它替换提前消耗的短子串(例如"我的 → 设置、协议与政策"这类跨字段串),改用更完整的上下文锚点,或按依赖顺序排列替换。
  5. 删整块用行级删除:跨多行的模板字符串不要用行内正则删,按行范围整块移除。
  6. 改完必跑 build_prd.py --check,再做一次变更点的定点验证。
  7. 同步清理:删除的交互动作,要连带清理旧版 PRD 中引用它的条目(否则文档自相矛盾)。

质量检查清单

  • [ ] 原型页面数 = PRD 页面节数(脚本已校验编号连续)
  • [ ] 每个 Tab / 入口在 3.1.3 都能查到进入路径
  • [ ] 每个按钮点击后的行为都在该页面「交互与规则」里有交代,且跨页跳转写了目标编号
  • [ ] 所有数量上限、数值区间、字符长度集中在 3.5,且与该页面节描述一致
  • [ ] 所有提示文案是原型原文,不是改写
  • [ ] 弹窗(含二次确认、成功提示)都有条目,并写明"是否阻断""点遮罩是否关闭"
  • [ ] 会员/试用门槛在 3.2 与各页面节双重交代,且口径一致
  • [ ] 跨页同步链路(如"目标 → 菜谱 → 记录")在第五章闭环
  • [ ] build_prd.py --check 输出 0 错误
  • [ ] 无"优化/提升/适当/合理"等模糊词
  • [ ] 推断内容全部进入 9.4 待确认事项

反向标注(若执行了第八步)追加检查:

  • [ ] annotate_prototype.py 注入自检 0 错误
  • [ ] 真机验证:登录页/任一功能页/弹窗三类界面锚点数量正确,无跨页误显
  • [ ] 切页后锚点跟随(换 2–3 个页面抽查)
  • [ ] 面板打开、卡片与锚点双向高亮、「未定位」标记正确
  • [ ] 原型原有功能不受影响(点几个按钮抽查)、无 JS 控制台报错

输出规范

  1. 交付为单文件 HTML:内联全部 CSS 与 JS,零外部请求、零 CDN、离线可打开。
  2. 样式与骨架只用技能自带资产(assets/prd-style.css、assets/prd-shell.html),保证多份 PRD 视觉一致;需要微调时改资产文件,不在产物里另起一套样式。
  3. 左侧固定侧边栏:一级章节(带 01–09 编号徽标)+ 第四章模块子目录(可折叠)+ 页面索引(P01…Pnn),滚动自动高亮,移动端可收起。
  4. 正文不设封面大标题,章节直接以卡片区块呈现。
  5. 善用表格(元素、规则、字段、上限)与列表(交互规则),少用长段落;需要强调的口径用 callout。
  6. 所有内容用简体中文;技术术语可保留英文并在名词解释中给出对照。
  7. 生成后必须用 present_files 打开给用户。

禁止项

  • 禁止添加原型中不存在的功能(需要补的只能写进「待确认事项」并标注"原型未实现,待确认")
  • 禁止凭记忆写页面清单——必须来自脚本抽取结果
  • 禁止手写侧边栏目录(由脚本生成)
  • 禁止在 PRD 中描述原型的内部实现(变量名、函数名、CSS 类名只作为附录索引线索,不作为需求正文)
  • 禁止使用模糊词:"优化""提升""适当""合理""一定程度""尽快""等"

与其他技能的衔接

思维导图  →[思维导图转PRD]→  PRD  →[PRD转HTML交互原型]→  原型
                                  ↑                        │
                                  └──[原型图转PRD]─────────┘   ← 本技能(原型定稿后回写文档)
                                        │ 第八步
                                        └──→ 需求点反向标注到原型(内建能力)

当原型已经定稿、需要"文档与原型逐条对得上"时,用本技能;当只有需求描述、还没有原型时,用「思维导图转 PRD」。

本技能第八步与独立技能「PRD需求标注到原型图」能力同源:本技能的标注面向按页面组织的 PRD(Pnn ↔ SCREENS 页面映射,脚本可自动生成映射草稿);「PRD需求标注到原型图」面向按 6 维度功能点组织的 PRD(人工建立功能点 → CSS 选择器映射)。已用本技能生成 PRD 的,优先用第八步。

常见问题

5 问
答案由本站依据条目字段整理
原型图转PRD怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_4352adfb/yxzprd。安装方式为未标注。装完刷新技能列表或重开客户端。

原型图转PRD支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

原型图转PRD权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

原型图转PRD收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

原型图转PRD用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。