Design or review forms with UX best practices for usability, accessibility, and conversion optimization
Designs or reviews forms with UX best practices for usability, accessibility, and conversion optimization
/plugin marketplace add standardbeagle/standardbeagle-tools/plugin install ux-developer@standardbeagle-toolsDesign new forms or review existing ones for optimal user experience.
Gather context:
<label> with for attributearia-describedby pointing to help text<legend>type attribute (email, tel, url, number, date)autocomplete attributes for common fieldsinputmode for mobile keyboard optimizationpattern with title for format requirementsaria-describedbyaria-invalid="true" on fields with errorsaria-live region for dynamic error messages## [Form Name] Specification
### Purpose
[What data we're collecting and why]
### User Context
- When do they encounter this form?
- What's their motivation level?
- What information do they have available?
### Fields
| Field | Type | Required | Validation | Autofill | Notes |
|-------|------|----------|------------|----------|-------|
| Email | email | Yes | Valid format | email | Primary identifier |
| Phone | tel | No | 10+ digits | tel | For account recovery |
### Field Details
#### [Field Name]
- **Label**: [Exact label text]
- **Placeholder**: [Placeholder if any]
- **Help text**: [Instructional text]
- **Error messages**:
- Required: "[Field] is required"
- Invalid: "[Specific format guidance]"
- **Autofill**: `autocomplete="[value]"`
### Validation Strategy
- **When**: On blur for individual fields, on submit for form
- **How**: Inline errors below fields
- **Error summary**: Yes, at top, with anchor links
### Submit Behavior
- **Button text**: [Active verb, e.g., "Create Account"]
- **Loading state**: Button disabled with spinner
- **Success**: [Redirect/message/next step]
- **Error**: [Error handling approach]
### Multi-step (if applicable)
- Step 1: [Fields and purpose]
- Step 2: [Fields and purpose]
- Progress indicator: [Style]
- Save progress: [Yes/No, how]
Using agnt proxy:
// Capture form structure
__devtool.inspect('form')
// Check accessibility
__devtool.auditAccessibility()
// Test form submission
// (interact with form through proxy)
Evaluate:
<form>
<label for="email">Email</label>
<input type="email" id="email" autocomplete="username" required>
<label for="password">Password</label>
<input type="password" id="password" autocomplete="current-password" required>
<button type="submit">Sign In</button>
</form>
<form>
<label for="email">Email</label>
<input type="email" id="email" autocomplete="email" required>
<label for="new-password">Create Password</label>
<input type="password" id="new-password" autocomplete="new-password"
aria-describedby="password-requirements" required>
<p id="password-requirements">At least 8 characters with a number</p>
<button type="submit">Create Account</button>
</form>
<fieldset>
<legend>Shipping Address</legend>
<label for="street">Street Address</label>
<input type="text" id="street" autocomplete="street-address" required>
<label for="city">City</label>
<input type="text" id="city" autocomplete="address-level2" required>
<label for="state">State</label>
<select id="state" autocomplete="address-level1" required>...</select>
<label for="zip">ZIP Code</label>
<input type="text" id="zip" autocomplete="postal-code"
inputmode="numeric" pattern="[0-9]{5}" required>
</fieldset>
Before shipping:
After review, suggest: