Communitygithub.com

gtarpenning/ui-critic

以特定人物的审美标准评审UI截图、原型和故事板,在多个设计方案中选出最佳方案,并用框线标注需要修改的部分。

ui-critic 是什么?

ui-critic 是一个专为 AI 代理设计的技能,能够模拟特定人物的设计品味来评审 UI 界面。它通过分析该人物过去的设计决策作为证据,而非依赖通用设计原则,从而做出更符合其个人偏好的判断。该技能支持多种平台,如 Claude Code 和 Cursor,并能执行比较、评审、记录决策和微调等核心任务。其工作流程包括:通过案例检索获取相关证据、使用盲评机制避免偏见、精确输出包含边界框的 JSON 文件,并支持通过脚本持续学习新决策。评估显示,该技能在预测该人物设计选择方面的准确率约为 60%,远超通用模型的 44-50%。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add gtarpenning/ui-critic

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

ui-critic 是做什么的?

像特定人物那样评判屏幕,以他们过去的决策为依据。普通 Claude 在预测此人真实设计选择时的准确率为 44-50%,而本流程的准确率约为 60%(基于其没有相同主题证据的决策,结果)。它是一个强有力的第二意见,而非万能神谕。

提问操作
哪个设计更好?比较
这个屏幕或流程上应该改什么?评审
教它、调优它,它弄错了调优
此人在设计之间做出了选择记录决策

脚本位于此文件旁边。使用 python3 运行它们;prepare.py 和 annotate.py 需要 Pillow (pip install pillow)。

始终

  • 先搞清楚任务。 如果你不知道屏幕的用途和受众,问一次。否则,陈述你的假设。
  • 过去的决策优先于这些规则和通用设计观点。 较新的决策优于较旧的。
  • 不要仅凭“最佳实践”进行推理。 针对此人决策,谨慎的通用推理得分低于随机水平,因为它倾向于要求更多信息、标签和计数。应依据他们实际选择的内容进行论证。
  • 不要将偏好泛化到其证据之外。 列表中的“少”并不意味处处“少”。他们曾在地图图片和较短的文本芯片之间选择了前者,并在比较步骤中添加了照片和笔记,因为这样能让人们更快地识别事物。
  • 先给出结论。 先下判决,再提供细节。你的报告遵循与你所评判内容相同的渐进式披露原则。

比较

  1. 准备。 python3 scripts/prepare.py --out <tmp> <images...>,然后使用处理后的副本。对于流程,每个设计都是一个有序的屏幕列表。

  2. 获取证据。 阅读 taste/taste.md。运行 python3 scripts/cases.py --context "<此屏幕的用途>" --k 4。

  3. 盲评两次。 生成两个没有共享上下文的子代理,使用 references/judge.md 中的提示。一个代理看到顺序为 X、Y 并标记为 A、B 的设计;另一个看到 Y、X。使用 Sonnet:Opus 成本高出数倍但得分并未更好。给予每个代理案例图像路径,并告知它读取每张图像。不要告诉它们你倾向于哪个设计、谁设计的或哪个更新。

    超过两个设计:先比较看起来最强的两个,然后将胜者与下一个比较。不要一次性要求排序。

  4. 决定。

    • 两者选择了相同设计:那就是判决。
    • 它们产生分歧:表述为难分伯仲,用一句话给出各方的最佳论点,并指明需要此人裁定的关键问题。不要自己打破平局。
  5. 跳出选项看问题。 如果两个设计存在共同缺陷,或者失败方有一个值得保留的想法,用一两句话提出合并版本。过去的胜者常常正是这样产生的。

  6. 报告。

    **B.** <一句话:决定胜负的差异。>
    置信度:两个顺序一致(非证据证明:不同的模型或证据仍可能推翻) / 难分伯仲
    - 原因:<决定性的差异,引用它们所呼应过往决策>
    - 值得从 A 保留的部分:<如果有>
    - 比两者都好:<如果有>
    

    仅在有人要求时,才添加胜者剩余问题的框线叠加图。

评审

  1. 准备 如上所述的屏幕,并记下每个屏幕的像素尺寸。坐标仅在处理后的副本上对齐。
  2. 获取证据。 阅读 taste/taste.md 并运行 cases.py --k 4,然后在查看新屏幕之前读取每个案例的两张图像。以下得分假设你已经看过它们。
  3. 审查,按以下顺序:
    • 用户来到这个屏幕最想做的一件事是什么?他们一眼必须掌握什么?
    • 逐元素检查:这个元素值得放在这里,还是可以放在一层之下?是否有信息被重复表述?同类型的事物是否在本屏幕或应用其他位置以两种不同方式呈现?是否有次要操作与主要操作竞争?用图片是否比用文字理解更快?
    • 对于流程,还要问:打开的页面看起来像你点击的入口吗?是否有任何步骤是死胡同?
  4. 精简。 最多 3 个发现,按重要性排序。去掉无障碍模板、通用润色以及你无法明确指出位置的内容。如果设计优秀,就直接说出来,不报告任何问题。用次要问题来填充是失败。在完成前,检查每个发现不会撤销过去的决策。
  5. 绘制。 在处理后的屏幕旁边编写 findings.json,框线使用处理副本上严格的绝对像素 [x1, y1, x2, y2]:
    {"verdict": "一句话。",
     "screens": [{"path": "/abs/prepared.png", "label": "主页"}],
     "findings": [{"screen": 0, "box": [40, 120, 300, 180], "severity": "high", "title": "...", "why": "...", "fix": "..."}]}
    
    运行 python3 scripts/annotate.py findings.json --out <tmp>。读取每个 .annotated.png,检查每个框是否准确位于其发现所描述的位置。如果偏移,修正数值并重新运行。当发现涉及整个卡片时,框住整张卡片是可以的。
  6. 报告 判决、发现以及 report.html 和带注释图像的路径。

记录决策

当此人在设计之间做出选择或在查看屏幕时陈述偏好时,提供记录:python3 scripts/record.py --context "..." --winner a.png --loser b.png --reason "他们的话" --topic <短标识符>。使用他们自己的话作为理由。这是本技能改进的方式,一句“为什么”比几个未经解释的选择更有价值。

调优

启动 python3 scripts/tune.py,在后台运行,并将 URL 提供给此人。它有四个标签页:

  • 挑选:使用方向键在设计之间进行选择。大约 5 分钟。
  • 遗漏:评判者与此人意见不合的地方及其论据。他们保留自己的选择或承认评判者正确。
  • 规则:编辑 taste/taste.md。
  • 分数:重新评分,包括其自身选择的一致性。

在选择或编辑之后,运行 python3 scripts/distill.py 以根据所有决策重建 taste/taste.md。有关数字以及如何将本技能用于他人的品味,请参阅 references/tuning.md。

相关技能