# Interaction

> How a screen responds decides whether a person feels in control or ambushed. Show the core path first; make every action easy to undo.

- **Progressive disclosure is the default pattern.** Show the core path; reveal complexity on demand.
- **Prefer inline validation over modal errors.** Catch problems where they happen; on submit, focus the first error.
- **Lead with the user's next action** in empty states, errors, and onboarding. No dead ends: every screen offers a next step or recovery path.
- **Sensible defaults over decisions.** Every choice you remove is a gift of time.
- **Forgiveness by design.** Undo over confirm where reversible; confirm with plain consequences where not (CMP-2). Warn before navigation when unsaved data could be lost.
- **Quiet feedback.** Non-intrusive confirmation; reserve interruptions for genuinely blocking moments. Complex multi-section tasks get a page, not a modal (SLP-10).
- **All states designed.** Empty, sparse, dense, loading, and error states for every view (CMP-3). Skeletons mirror final content to avoid layout shift.
- **Respect the seasonal rhythm.** Workflows spike at predictable times, such as deadlines and reporting periods. Design for the stressed week, not the average one.

## Related

### Agent skill

- `/dx-harness:dx-design-flow`: Reviews multi-step flows: traversal, async states, escapability, and draft safety. Proposes ranked fixes.

[All skills](/harness/skills)

### In the catalogue

- [CMP-2](/standards/catalog/cmp-2) (L0): Destructive actions show consequences before executing and offer undo or explicit confirmation
- [CMP-3](/standards/catalog/cmp-3) (L1): Every async transaction has visible loading, success, and error states
- [CMP-8](/standards/catalog/cmp-8) (L1): A multi-step or data-entry task offers a non-destructive exit at every step, and in-progress work is preserved or explicitly discarded on interruption — never silently lost
