OneKeyHQ

ui-copy

编写、精简或审查中英文界面文案:按钮、标题、表单、报错、空状态、toast、确认弹窗、设置项和 i18n 源文案,以及给产品内 AI 生成文案写约束。用于“改下文案”“这个报错怎么写”“界面字太多”“去 AI slop”“审一下这些 key”。长段落的 Slack、文档和文章交给 chinese-writing;翻译交给 gemini-translate。

OneKeyHQ 2,474 540 Updated 3d ago

Resources

2
GitHub

Install

npx skillscat add onekeyhq/app-monorepo/ui-copy

Install via the SkillsCat registry.

SKILL.md

中英文 UI 文案

界面上只留用户此刻做决定需要的字。能不写就不写;需要一段说明才能看懂,先考虑改界面(换控件、加默认值、拆步骤),再考虑加字。

主要防的是 AI slop:模型会把标题、说明、空状态、报错都写成一段解释,客套、态度、背景全在,信息很少,每张卡同一个句式。交稿前按下面的规则删一轮。

先看项目已有约定

动手前抽样看项目里同类组件的现有文案(英文源文件、设计稿、术语表)。大小写、人称、动词、标点以项目现状为准,本 skill 只在项目没有约定时提供默认值。不要为了“符合规范”批量改动无关文案。

删什么

  • 副词和形容词:easily、quickly、simply、just、really、very;轻松、快速、简单、一键、立即。只有它说明了功能本身时保留(Feed your pets automatically)。
  • 客套和感叹:please、thank you、sorry、Oops、Uh oh、Hooray;请、请您、您可以、温馨提示、请注意、哦、~、!。例外见下文:服务故障可以道歉,问候和祝贺可以用感叹号。
  • 自我说明:We're having trouble…、为了给你更好的体验、我们已经……。主语换成事情本身:Unable to load content / 无法加载内容。
  • 重复:标题说过的,正文不再说。标题是「没有项目」,下面不解释什么是项目。
  • 冗余主语和铺垫:This is the total cost → Total cost;You have entered the wrong password → Wrong password;您已成功保存更改!→ 已保存。
  • 没有下一步的说明句。

删完大声读一遍,听着像客服话术就还没删完。

不能删的

简洁不等于删掉后果。以下信息留在主画面,不收进 tooltip:

  • 不可撤销的后果:资产转出、删除、覆盖、助记词/私钥泄露风险。
  • 金额、手续费、网络、地址等用户要核对的值。
  • 会改变用户选择的限制条件(最低额度、锁定期、地区限制)。

这类句子也只写事实和后果,不写恐吓和形容词。

按组件

按钮:动词开头,写具体动作。默认中文 2–4 字、英文 1–3 词;破坏性操作单独出现时把对象写进去,最多 6 字(删除钱包 / Delete Wallet);确认弹窗标题已写明对象时,按钮可以只写动词。不用「确定」「OK」兜底。不加句号和感叹号。有具体动作时写动作(保存 API Key / Save API Key);只是在多步流程里前进时,固定用 开始 → 继续 → 完成 / Get Started → Continue → Done。打开后续输入的菜单项和加载态用单字符省略号 …:重命名… / Rename…;加载中保留原动作:保存中… / Saving…。不写态度:发送 / Send,不写 来吧 / Let's do it。

标题和标签:名词或动词短语,不加句号,少用「你的 / Your」(收藏 / Favorites)。

报错:两截——出了什么事,怎么办。原因只在影响下一步时写。贴在出错位置旁边。

  • 写要求,不写指责:至少 8 位 / Use at least 8 characters,不写 密码太短 / Password too short。
  • 写允许什么,不写禁止什么:只能包含字母,不写 不能包含数字或符号。
  • 不用 invalid、illegal、forbidden、非法、错误操作。
  • 校验错误不道歉;服务故障可以道歉一次。
  • 「出错了,稍后重试 / Something went wrong. Try again.」只在确实不知道原因时用,能说清的要说清。

空状态:一句原因 + 一个主动作(按钮或链接)。不写气氛(这里空空如也~ / Nothing here yet!)。搜索无结果给改条件的出口,不写成庆祝或卖萌。

表单:标签始终可见;placeholder 只放格式示例(name@example.com、+1 (123) 456-7890),不放说明,不写「请输入邮箱」。不在空字段失焦时报错。

确认弹窗:标题写要执行的动作和对象(删除这个钱包?/ Delete this wallet?),正文只写后果,主按钮重复这个动作(删除 / Delete),不用「确定 / OK」;次按钮用「取消 / Cancel」。

Toast / 成功提示:中文用「已 + 动词」,英文用过去分词:已保存 / Saved、已复制 / Copied。不写「成功!」。

设置项:写开启后发生什么,用户能推断关闭的含义。需要跳转时直接给链接,不描述「前往 设置 > 安全 > …」。

说明句:能不出现就不出现。必须有时,中文一句、20 字左右,英文 12 词左右;目的放前面(To get reservation updates, enter your phone number)。背景放展开或 tooltip。

链接:链接文字本身说明去向(了解手续费 / Learn about fees),不用「点击这里 / Click here」。

人称和词汇

  • 用「你」,不用「您」;英文用 you,不写 the user。避免「我们 / we」,除非确实是服务方在做一件具体的事。
  • 一个概念一个词,建一张词表(推荐词 / 避免词 / 定义)。删除就是删除,不和移除、清除混用;确认就是确认,不和提交、完成混用。
  • 不用比喻动词和营销词:Unleash、seamless、赋能、开启全新体验。

中英文格式

  • 中文和英文、数字之间加空格:在 Apple 上买了 2 个。全角标点前后不加空格。% 和 ° 前不加空格。
  • 中文:标签、标题、按钮、单句提示不加句号;两句以上或后接链接时用全角句号。感叹号只用于问候和祝贺。引号全产品统一一种。
  • 英文:大小写按项目约定。没有约定时,按钮和标题用 Title Case(Vercel 对产品界面的要求),设置说明、表单帮助文字用 sentence case;同一类组件只用一种。用弯引号和 …。
  • 数字用阿拉伯数字:8 个部署 / 8 deployments。数字和单位之间用不断行空格:10 MB。同一上下文金额小数位一致。日期、金额、千分位走 locale 格式化,不手拼。
  • 专有名词按官方写法:GitHub、OneKey、USDT。品牌名、代码 token、合约地址加 translate="no" 或等价处理。

变量和翻译单元

  • 带变量的句子整句作为一个 key,用具名参数:已选 {count} 项。不拼「前缀 + 变量 + 后缀」。
  • 复数走 ICU plural;0、1、多各看一遍。中文写完整句,不写 item(s)。
  • 绝对时间和相对时间分两个模板:开始于 {date} 和 {relative}开始 不共用(relative 由 locale 格式化,自带「前」)。
  • 渲染前检查:界面上不能出现 {、%s、undefined、null、NaN、lorem。缺值时回退到不带变量的短句。
  • 布局按英文 2 倍宽度留余量;按钮不截断,写短。截断时英文按词、中文按字,不切在变量或标点中间。

给产品内 AI 生成文案写约束

模型默认会多写。限制写在 prompt 和后处理里,不靠人工事后删:

  • 按槽位给长度上限和语气:标题 ≤ N 字、按钮 ≤ 4 字/3 词、说明 1 句;报错冷静,空状态中性。
  • 注入词表和禁用词(上面「删什么」的列表),要求同一界面动词不换词。
  • 要求结构而不是文风:现在是什么情况、能做什么。没有可执行动作的句子删掉。
  • 输出用结构化字段(title / body / action),不收自由段落;超长或含占位符的结果回退到固定文案。
  • 抽样检查多张卡片是否同一个句式开头。

在 OneKey app-monorepo 里

  • 只写英文源文案和建议的中文,说明 key 和使用位置。翻译用 gemini-translate;生成的 locale 文件不手改,走 Lokalise / yarn i18n:*。
  • 先搜现有 key 能否复用,避免同义新 key。

交付

  • 改写:直接给改后文案;改动多时用「原文 → 改后」表格,每条原因一句。
  • 审查:按组件列问题,标出违反的是哪条规则,给替换文案。
  • 例子和反例见 examples.md,规则出处和取舍见 sources.md。只在需要核对出处或遇到冲突时读后者。