Install
openclaw skills install @fize/interaction-design-sopFrontend interaction resilience & defense SOP for engineering implementation. Covers 7-step pre-coding interaction checklist: user intent & task friction reduction, P0/P1/P2 information hierarchy triage, 4-state resilience (empty, loading, error, destructive confirmation), perceived performance (optimistic UI, skeletons), power user shortcuts, and layout resilience trade-offs. Use when: implementing UI views/forms/dashboards in code, designing component interaction logic, handling edge cases and states, or conducting frontend UX resilience reviews. Keywords: 交互细节, 状态设计, 边界情况, 异常处理, 交互审查, 骨架屏, 乐观更新, 防错设计, interaction design, edge cases, error state, empty state, loading state, UI review, UI resilience.
openclaw skills install @fize/interaction-design-sopA rigorous pre-coding interaction resilience & defense SOP for frontend engineers and interaction designers. Focuses on interface completeness, error resilience, and edge-case handling before writing code.
[!NOTE] System Collaboration Guidelines:
- Product UX Lifecycle: For end-to-end product design (user scenarios, business metrics, journey maps, and wireframe prototypes), refer to
product-ux-workflow.- Component Implementation: For code implementations, consult
custom-ui-spec(for headless components like shadcn/ui and Radix) orui-framework-spec(for pre-built libraries like Ant Design and Element Plus).
When designing a UI, work through these 7 steps before writing code. Each step constrains the next — decisions compound, so get the early steps right.
Define who is using this and what they're trying to accomplish. If you can't state the primary goal in one sentence, you don't understand the task yet.
Output: a clear user scenario and the one primary goal. Reject feature creep at this stage — secondary goals come later.
Map the happy path from entry to completion. Then cut it.
Target: the minimum number of actions to complete the primary goal. Each remaining step must justify its existence.
Triage every piece of information into three tiers:
P0 — Vital. The content users spend 80% of their time on. Gets the best screen real estate, largest visual weight, and appears without any user action. If you had only one screenful to show, this is what stays.
P1 — Secondary. Supporting context and actions. Available without hunting, but never competes with P0 for attention. Smaller, lower contrast, positioned around P0.
P2 — Progressive. Edge-case settings, advanced options, low-frequency data. Hidden behind disclosure: collapsible sections, hover tooltips, "advanced" toggles, or secondary tabs. Default: hidden.
For each piece of data on the screen, assign a tier. If you can't decide, it's P2.
Design for three states every view must handle:
Empty state. What shows when there's no data? A blank screen is a dead end. Show a clear next action — a create button, sample data, or an inline prompt. The user should know exactly what to do next.
Error state. What shows when the network drops or the API fails? Never show a raw error. Provide a human-readable message, a retry action, and preserve any user input so they don't lose work. Consider offline fallback.
Loading state. What shows while data fetches? Skeleton screens for content areas, spinner for short actions, progress bar for uploads. Never flash a blank screen then suddenly populate — that feels broken.
Destructive actions. Identify every action that can't be undone (delete, overwrite, bulk operations). Each needs at minimum a confirmation step. For truly catastrophic actions, require the user to type the entity name to confirm.
Speed is a feature, not a metric. Optimize for perceived speed even when actual latency exists:
For power users, add keyboard shortcuts for the top 3-5 actions. Consider whether a Cmd+K command palette is warranted for discoverability.
Before writing code, stress-test the design against three perspectives:
Then make a deliberate trade-off: what did you sacrifice and why? Document it. "It's simple because we dropped bulk-edit" is a decision; "it's complex because we added everything" is an abdication.
Produce the actual UI implementation. The format depends on the task:
Whatever the format, it must handle the empty, loading, error, and destructive-action states defined in Step 4.