Help us improve
Share bugs, ideas, or general feedback.
Provides form UX best practices: inline validation with 'reward early, punish late' strategy, auto-save vs explicit save, error messages, multi-step wizards, toggles.
npx claudepluginhub oborchers/fractional-cto --plugin saas-design-principlesHow this skill is triggered — by the user, by Claude, or both
Slash command
/saas-design-principles:form-designThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Luke Wroblewski's landmark study established the baseline: inline validation produces a 22% increase in success rates, 42% faster completion, and 47% fewer eye fixations compared to submit-time validation.
Designs forms with progressive disclosure, smart defaults, forgiving formats, and error recovery. Guides validation timing (blur, keystroke, submit) and single-column layout for faster completion.
Designs multi-step forms with progress indicators, conditional logic, and save-and-resume mechanics. Audits form conversion drop-off and decides when steps add value versus friction.
Generates validated, accessible form pages for contact forms, registrations, surveys, sign-ups, and multi-step wizards. Detects project tech stack to produce matching code with real-time validation, error handling, and a11y.
Share bugs, ideas, or general feedback.
Luke Wroblewski's landmark study established the baseline: inline validation produces a 22% increase in success rates, 42% faster completion, and 47% fewer eye fixations compared to submit-time validation.
The optimal strategy is to validate after the user leaves a field (on blur), never while typing.
Rules:
Start with explicit save as the default. Never mix auto-save and explicit save in a single form.
| Control Type | Save Behavior |
|---|---|
| Toggle switches | Save immediately (imperative controls, like flipping a light switch) |
| Text inputs, radio buttons, checkboxes | Explicit save via button |
If auto-save is used for text inputs:
Counterintuitive finding: Even with auto-save, keep the Save button. Users who have spent years learning that explicit saves are required experience genuine anxiety when the button disappears. The Save button provides psychological reassurance even when it does nothing the system wouldn't do automatically.
Every error message must tell the user what went wrong AND how to fix it.
| Bad | Good |
|---|---|
| "Invalid password" | "Insert a password of at least 8 characters" |
| "Error in field" | "Email must include an @ symbol" |
| "Validation failed" | "Phone number must be 10 digits, e.g. 555-123-4567" |
Placement rules:
When wizards work:
When wizards fail:
Wizard requirements:
Working implementations in examples/:
examples/validation-reward-early-punish-late.md — Blur-based validation with success/error states in React, Vue, and Svelteexamples/auto-save-vs-explicit-save.md — Settings form with immediate toggle saves and debounced text auto-saveWhen reviewing or building forms: