Design a form that finishes one job — only the fields you will use, labels that survive typing, and errors the user can still fix. Use when adding a form, rewriting a signup, or when a flow asks for data it does not act on.
--- name: design-a-form category: design description: >- Design a form that finishes one job — only the fields you will use, labels that survive typing, and errors the user can still fix. Use when adding a form, rewriting a signup, or when a flow asks for data it does not act on. --- # Design a Form A form is a conversation with a deadline. Every extra field is a chance to quit, a lie waiting to happen, and a row you will not use. The method is: **one job, the smallest honest questions, errors at the point of fix.** Pretty alignment will not save a form that asks for a fax number. ## One job, then the fields that job needs Write the job in one sentence: "Create an account I can sign back into" or "Send this invoice." If you have two sentences, you have two forms, or a wizard with a reason for each step. Then list fields. For each, one of: - **We act on this immediately** (we will email this address). - **We need it by law or for money** (and we can say so). - **Cut it.** "Might be useful for marketing" is the third one. Optional fields that exist "in case" train people to skip everything, including the ones you needed. Ask for **data in the shape you store**, not a theatre of extra boxes. One name field if you only ever display one name. Split given/family when you have a real reason (passports, not aesthetics). If a field is only for a subset of users, do not show it until you know they are in that subset. Progressive disclosure is not a "Advanced ▾" dump; it is a question whose answer reveals the next question.
You are reading the opening of this skill.
The rest is open to any signed-in account — free included. Reading the library costs nothing.
Shared publicly by the author and open for any use. See the Terms.