关于 unhappy
unhappy 是 ui-craft 的设计子技能,面向需要完善界面异常状态的开发者。它盘点交互界面的状态,补齐缺失状态,并检查乐观更新、离线处理和错误恢复。
主要功能
- 01盘点数据源与界面状态
- 02补充加载、空内容和错误等状态
- 03检查资源缺失防护与状态处理
- 04为离线操作设计乐观更新和协调
- 05按状态覆盖要求迭代并报告变更
适用场景
- 01检查页面是否缺少加载或错误反馈
- 02为数据为空时补充说明和后续操作
- 03处理断网时的编辑、保存与重连协调
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ educlopez/ ui-craft --skill unhappy安装后在 Claude Code 中输入/unhappy确认已加载。
详细介绍
背景: 这个子技能是更广泛的 ui-craft 技能的一个视角。如果也安装了 ui-craft 技能,请先阅读其 SKILL.md,了解发现 + 反套路 + 工艺测试,然后应用以下特定视角。
为 $ARGUMENTS 处的 UI 设计每一种非理想状态。加载 ui-craft 技能并阅读 references/state-design.md。
步骤 1 — 清点。 列出目标中的每个数据源和交互界面。对每个界面,枚举其状态:
| 界面 | 空闲 | 加载中 | 空状态 | 错误 | 部分 | 冲突 | 离线 |
|---|
将每个单元格标记为 已设计(代码中已存在)、缺失(必须添加)或 不适用(不适用,例如只读视图没有冲突状态)。
步骤 2 — 补齐缺失状态。 对每个缺失状态,可直接内联添加占位实现,或添加后续任务注释。使用 references/state-design.md 了解:
- 骨架屏尺寸(与最终布局一致,延迟 200ms,上限 5s)
- 空状态文案(为空的原因 + 下一步操作 + 视觉元素)
- 错误状态约定(具体原因 + 单击即可恢复 + 支持 ID)
- 离线处理(排队写入 + 重新连接后协调)
步骤 3 — 审核理想路径。 标记所有假定资源存在、却未进行检查的理想路径位置。通过提前返回、状态保护或判别联合状态处理来修复。允许不可能状态的布尔表达式(例如 isLoading && !error && data)都属于问题,应重构为合适的状态机或 reducer。
步骤 4 — 乐观 UI + 协调。 对可能离线的操作(保存、发送、编辑、切换),实现乐观 UI,并在重新连接后进行协调。在本地排队写入。显示任何被拒绝的写入结果,绝不能将其吞掉。
旋钮门控(CRAFT_LEVEL):
| CRAFT_LEVEL | 必须添加占位实现的状态 |
|---|---|
| ≤ 4 | 空闲、加载中、错误 |
| 5-7 | 空闲、加载中、空状态、错误、成功 |
| 8+ | 全部六种——添加部分、冲突、离线 |
如果 CRAFT_LEVEL 未知,默认使用 7。
收敛说明: 要反复迭代,直到所有必需状态都已具备,请加载 skills/ui-craft/references/loops.md 并运行预设 state-coverage(预算 = loops.md 中定义的默认循环预算):添加优先级最高的缺失必需状态后,重新清点,直到所有旋钮要求的状态都已具备或预算耗尽。在第 1 次迭代前输出预检成本提示。
输出: 直接编辑代码。每个文件编辑完成后,打印 SKILL.md 中的审查格式表格:
| 修改前 | 修改后 | 原因 |
|---|---|---|
<ProjectList> 没有加载状态 | 与最终布局匹配的骨架行,延迟 200ms | 避免用户认为“是不是坏了”;避免 CLS |
| 通用“错误”提示 | 内联错误,包含具体原因 + 重试 + 支持 ID | 可恢复性(启发式 9) |
每添加一种状态占一行。不要提供完整 diff。
下一步: /harden — 实现刚刚设计的状态(第 1 阶段)。