产品与设计
跨参考应用对比 UX 模式:把多份 pattern…
当你已有多份由 ux-extract 生成的 pattern-library.md,需要比较多个参考应用在某类 UX 模式上的惯例、差异与缺失,以便为新功能做设计决策时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
跨参考应用对比 UX 模式:把多份 pa特定
解决思路
- 先发现可用的 pattern library:在 `docs/ux-extracts/<app-name>/pattern-library.md` 和 `.jez/artifacts/ux-extracts/<app-name>/pattern-library.md` 两个路径下查找,列出找到的全部库。
- 把库清单连同每个库的提取日期展示给用户,让用户能一眼看出哪些库已经过期(例如标注 `← 3 months old`)。
- 如果只存在 1 个库,停止比较,建议用户先对更多应用运行 `ux-extract`——单库的『比较』只是那份库本身。
- 向用户确认比较范围,或从请求中推断:整库(全面但冗长)、单一类别(如只看 empty states、keyboard、modals)、某个功能领域(如 settings,跨多个类别但保持聚焦)、或一个具体问题(如『哪些应用支持离线』,此时也要搜索 Notable Absences 章节)。范围越窄,建议越锐利;默认直接问:『What feature or pattern do you want to compare?』
- 默认纳入用户提到的所有库;用户没指定就纳入全部;允许用户排除,例如『all except notion — their library is too stale』。
- 对范围内的每个库,完整读取其 `pattern-library.md`,并记录:提取日期、提取范围(整个应用还是部分)、以及 Notable Absences 章节(往往是比较中最有意思的数据)。
- 按类别逐个走查:遍历任何库中出现过的每个模式类别。
- 在每个类别里,列出每个应用的做法——每个应用一条 bullet,尽量具体,并在可能时逐字引用原文。
- 在每个类别里识别 convergence:多数或全部应用一致的做法,这就是低风险默认值。
- 在每个类别里识别 divergence:真正存在差异的地方,这是需要做的设计决策。
- 在每个类别里标注 unique 做法:只有一个应用这么做——无论它是创新还是怪癖,都要点出来。
- 在每个类别里标注 coverage gaps:如果某个库没有覆盖该类别,明确说明,不要把『库中缺失』默默当成『应用中缺失』。
- 走完所有类别后,交叉引用整个集合中缺失的东西:例如 5 个应用中有 4 个对破坏性操作没有 undo,那就是一个模式;5 个中有 3 个没有新建记录的键盘快捷键,那是有人反复做出的一个决策。
- 综合出有观点的建议,分为四类:safe default(收敛模式,跟随它用户会觉得熟悉顺手)。
- deliberate choices:列出分歧模式及各自的权衡,让用户自己选。
- avoid:只属于某一个应用的独特模式,除非有明确理由解释那个应用为何不同。
- gaps worth filling:那些令人意外、或对用户有益的缺失项。建议部分是跑这次比较的真正理由——没有它,文档只是一堆 bullet;有了它,文档才是一个决策。
- 把结果写到 `docs/ux-comparisons/<topic>-YYYY-MM-DD.md`;如果 `.jez/artifacts/ux-comparisons/` 路径存在,则写到那里。topic slug 取自比较范围,例如 `empty-states`、`keyboard-shortcuts`、`onboarding`、`destructive-actions`。
- 写文档前阅读 `references/comparison-template.md` 获取完整输出格式;短版结构为:标题 `# UX Comparison: <Topic>`、Compared 列表、Date、Scope、`## At a glance`(2-3 句话说明什么收敛、什么分歧、集合中缺什么)、`## Pattern-by-pattern`(每个类别下逐应用列出做法,并给出 Convergence / Divergence / Unique / Coverage gap)、`## Recommendations`、`## Source libraries`(每个库带日期,过期的标注 `stale, re-extract recommended`)。
- 自主执行(Just do it):自行发现可用库、读取它们、写出比较文档,并引用源库中的具体截图或文案。
- 先问再做(Ask first):用户没有指定范围时,问一个聚焦的问题——这比产出一份漫无边际的比较更省成本。
- 停下确认(Stop and confirm):可用的库少于 2 个时,比较不可能进行,建议先跑 `ux-extract`。
- 不要重新罗列每个库的全部内容:比较的价值在于增值综合;如果只是把 5 个库的 bullet 复制过来,那不叫比较。
- 收敛通常是最安全的选择,但不一定是最有意思的;要指出哪些收敛可能是照抄而非好设计。
- 引用源库中的截图而不是复制它们,例如『See claude.ai pattern library § Empty States, screenshot 502』,以保持 extract 作为唯一事实来源。
- 过期的库仍然有用,只需注明日期——12 个月前的库是那一刻的快照,而不是没有价值。
- 建议必须有观点:『It depends』是最弱的输出;明确表态,用户可以不同意。
- 比较本身也会过时:当底层 extract 刷新、或有新的参考进入集合时,重新跑一次比较。
- 如果要比较超过 5 个库,先分桶:Tier 1(最接近自己应用的)给详细 bullet,Tier 2(参考类)给摘要 bullet,Tier 3(离群、新颖做法)只按例外提及;或者做多个更窄的比较,而不是一个巨型比较。
适用边界 · 注意事项
- 可用 pattern library 少于 2 个时——单库比较没有意义,应先运行 `ux-extract` 补齐参考。
- 只需要单一应用的参考点、不需要跨应用做设计决策时。
- 某个库没有覆盖目标类别时,不能把该库的缺失当作该应用的缺失来下结论(只应标注为 coverage gap)。