Communitygithub.com

Ringophilia/think-like-the-user

設計或修改程式交互時,站在第一次使用的用戶角度走一遍主要任務,確保按鈕位置、操作流程、表單對話框等直覺好用,遵循平台慣例,並在交付前實際驗證。

think-like-the-user 是什麼?

此技能(SKILL.md)旨在指導開發者或 AI 代理在設計或修改使用者介面(UI)及交互流程時,始終從「第一次使用的用戶」視角出發。它提供一套系統化的思考框架,從定義使用者目標、優化按鈕與功能入口的擺放位置、減少不必要的操作步驟、避免添加未經需求的功能,到確保即時反饋與清晰的錯誤提示,層層遞進。此技能特別適用於 Claude Code、Cursor、Codex 等 AI 代理,在編寫或修改 UI、新增功能入口、設計多步驟流程、撰寫表單與彈跳視窗時使用。其核心價值在於透過具體原則(如「操作靠近操作對象」、「一個界一個主操作」、「用動詞+物件命名按鈕」)和可操作的檢查清單,將模糊的「用戶體驗良好」轉化為可執行、可驗證的行動步驟。最終要求在交付前必須以用戶身份實際走過流程並計算操作步數,確保交互直覺、高效且符合用戶預期。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Ringophilia/agent-rules-of-thumb/tree/HEAD/skills/think-like-the-user

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

站在用户角度想交互

问题

AI 写交互时,常常是按照实现的顺序而不是用户的顺序来组织界面:先有数据结构,就摆什么控件;代码里哪个函数先写好,按钮就放在哪里。结果:

  • 长表单的"保存"按钮在页面顶部,用户填到底部还得滚回去找
  • "删除"紧挨着"保存",同样的颜色、同样的大小
  • 最常用的功能藏在"更多 ⋯"菜单的第二层,不常用的设置却占着工具栏最显眼的位置
  • 只有一个选项也要先选中它,才能点"下一步"
  • 改个名字要:点"编辑模式" → 改 → 点"应用" → 点"保存" → 确认弹窗"确定要保存吗?"
  • 新建一个东西走了三步向导,其实只需要填一个名字
  • 按钮写着"提交"、"执行"、"确定",用户不知道点了会发生什么
  • 出错时弹一句"操作失败",输入的内容全清空了

每一条单看都不致命,加起来就是"这东西怎么这么别扭"。

第一步:先说清楚用户来干什么

动手前写下来(哪怕只在心里):

  1. 谁在用:第一次用的新人,还是每天用的老手?
  2. 最常做的 1~3 件事是什么:这几件事必须最快、最显眼。
  3. 每件事的理想路径:从打开程序到完成,最少需要几步?

界面的布局按这个排序,而不是按功能列表、数据库字段或代码模块排序。

第二步:按钮和入口放哪

原则做法反例
操作靠近它作用的对象行内的编辑/删除放在那一行;卡片的操作在卡片上先勾选一行,再去页面顶部找"编辑"
按完成流程的位置放表单的提交按钮在表单末尾;对话框的按钮在底部长表单的保存在最顶部
频率决定显眼程度最常用的直接露出;偶尔用的放菜单;极少用的放设置常用功能藏在二级菜单
一个界面一个主操作主操作用强调样式,其他用次级样式五个同样醒目的蓝色按钮
危险操作隔开删除用不同颜色、放在远一点的位置,或放进菜单删除和保存并排、长得一样
遵循平台惯例Windows 对话框按钮右下角,"确定"在"取消"左边;macOS"取消"在左、主按钮在最右;网页弹窗右上角有关闭自创一套顺序
同一种操作,位置始终一致每个页面的"新建"都在同一个地方每页位置不一样
入口在用户会找的地方用户会想"我要导出"时看的地方(工具栏、文件菜单、列表上方)导出藏在设置页里

第三步:砍掉多余的步骤

把主要任务的每一步列出来,逐步问:

  • 能不能删掉? 这一步用户必须做决定吗?没有就删。
  • 能不能给默认值? 90% 的人会选同一个,就默认选中它。记住用户上次的选择。
  • 能不能合并? "编辑 → 应用 → 保存"能不能变成直接编辑、自动保存或一个保存?
  • 能不能推迟? 注册、详细设置、可选字段,能不能等用户真正需要时再问?
  • 能不能自动推断? 能从文件名、上下文、已有数据推断出来的,就不要让用户填。

常见的多余步骤:

多余的改成
可撤销的操作还弹"确定吗?"直接执行,给"撤销"(Gmail 式的 toast);只有不可逆、影响大的操作才确认
确认弹窗写"确定吗?[确定][取消]"写清后果和对象:"删除 3 个文件?此操作无法撤销。[删除][取消]"
只有一个选项也要选自动选中,或直接跳过这一步
单独的"编辑模式"开关直接可编辑
一个字段的事走多步向导一个输入框 + 一个按钮,或者行内创建
改完设置还要点"应用"再点"保存"一个动作,或即时生效
操作完跳到别的页面,用户还得导航回来留在原处,就地更新
每次都要重新填同样的信息记住,或预填

第四步:不要加用户没要的东西

AI 很容易"顺手"多做:用户要一个导出按钮,结果多了导出格式下拉框、导出历史、导出设置页;用户要一个小工具,结果多了侧边栏、设置菜单、主题切换、关于页、帮助中心、"即将推出"的占位入口。

每多一个功能、菜单、入口,用户就多一样要看懂、要跳过的东西,主要任务的入口就更难找。界面上的每一样东西都在争夺用户的注意力。

加东西之前问:

  • 用户要了吗? 没要、也不是完成主要任务所必需的,就不加。
  • 没有它,用户会卡住吗? 不会,就不加。
  • 它只有一个选项、或者几乎没人会改吗? 那就不需要设置项、不需要下拉框,直接用合理的默认值。
  • 它是空的、没实现的、"以后可能用到"的吗? 不要放占位入口、灰掉的"敬请期待"、点了没反应的菜单。

常见的多余:

多余的改成
只有一两个功能的工具,却有侧边栏 + 顶部导航 + 设置菜单一个界面直接把功能摆出来
没人要求的主题切换、语言切换、个性化设置不做;需要时再加
一个页面就够的,拆成"首页 / 仪表盘 / 关于 / 帮助"一个页面
同一个功能有三个入口(工具栏、右键菜单、设置页)一个用户最会去找的入口;快捷键可以另加
占位的"即将推出"、"高级功能"、空的统计卡片删掉
每个值都做成可配置项给好默认值,只暴露用户真正会改的

觉得某个附加功能确实有用时,做完主要需求后提一句建议,让用户决定要不要,而不是直接做进去。

第五步:让用户随时知道发生了什么

  • 按钮文案 = 动词 + 对象:"导出 CSV"、"删除项目"、"发送邀请",而不是"提交"、"执行"、"确定"。用用户的词,不用实现的词(不写"同步 payload"、"触发 job")。
  • 点了要有反应:100ms 内要有视觉反馈;超过 1 秒显示进度或加载状态,并禁用按钮防止重复提交。
  • 完成了要告诉用户:轻量的成功提示,或者界面直接显示结果。
  • 出错要说怎么办:说清哪里错了、怎么改;错误显示在出错的字段旁边;保留用户已经输入的内容。
  • 空状态要引导下一步:列表为空时,告诉用户这里会出现什么,并直接给出"新建第一个"的按钮。
  • 键盘:打开对话框时焦点在第一个输入框;Enter 提交、Esc 关闭;Tab 顺序和视觉顺序一致。
  • 不要突然变:不要在用户操作时移动按钮位置、弹出东西挡住正在点的地方。

CLI 也一样:常用参数有短选项和合理默认值;危险操作要确认但提供 --yes;出错信息说明怎么修;长任务显示进度。

第六步:实际走一遍

写完不等于好用。交付前必须真的以用户身份走一遍主要任务(截图方式见 background-friendly):

  1. 假装第一次打开:不看代码,只看界面,能不能在 5 秒内找到要做的事的入口?
  2. 数步数:完成主要任务需要几次点击/输入?和第一步写下的理想路径比,多出来的每一步都要有理由。
  3. 只用键盘走一遍。
  4. 故意做错一次:输入错误、中途取消、网络断开,看会发生什么,输入会不会丢。
  5. 窗口缩小、内容很多或为空时,按钮还在合理的位置吗?

走不了(没有运行环境)时,明确告诉用户"交互流程未实际验证",并把你设计的步骤列出来让用户检查。

边界

  • 用户指定了布局或流程时按用户的来;你觉得有问题,说出来,让用户决定。
  • 专业工具的老手用户可能更看重效率而不是易学:快捷键、批量操作、高密度比新手引导更重要。先判断用户是谁。
  • 不可逆、高风险的操作(付款、删除生产数据、群发消息),多一步确认是对的,不要为了"少步骤"把它删掉。
  • 改现有程序时,不要为了"更合理"大改用户已经习惯的位置;确实要改就说明原因。

检查清单

  • 最常做的 1~3 件事是什么?它们是不是最快、最显眼的?
  • 每个按钮都在它作用的对象旁边、在用户完成流程的位置吗?
  • 每个界面只有一个主操作?危险操作和主操作隔开了吗?
  • 符合平台惯例(按钮顺序、位置、快捷键)吗?
  • 主要任务的每一步都问过"能不能删、能不能默认、能不能合并"吗?
  • 每个功能、菜单、入口都是用户要的或必需的?没有占位入口、没人要的设置项?
  • 确认弹窗只用在不可逆操作上?可撤销的操作给了撤销?
  • 按钮文案是"动词 + 对象"?用的是用户的词?
  • 加载、成功、出错、空状态都处理了?出错时输入保留了吗?
  • 真的以新用户身份走过一遍、数过步数了吗?没走就说"未验证"

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能