Form UX Optimizer — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Form UX Optimizer (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill reviews the code and design of web forms to identify usability and accessibility issues. It checks for poor field ordering, confusing labels, missing or unhelpful error messages, incorrect input types, broken keyboard navigation, and accessibility violations. The output is a prioritized list of specific improvements with code examples for each fix.
Use this before shipping a registration, checkout, contact, or any data-entry form — especially when your form has a high abandonment rate or you're getting support requests about users not knowing what to enter.
Copy this file to .agents/skills/form-ux-optimizer/SKILL.md in your project root.
Then ask:
Provide the form component code and, if available, any validation logic.
Add the instructions below to your .cursorrules or paste them into the Cursor AI pane. Provide the form code to review.
Paste the form HTML/JSX and validation code. Ask Codex to follow the instructions below.
When asked to review a form for UX, follow this checklist systematically:
Labels
<label> element (not just placeholder text)for/htmlFor or wrappingField order
Input types
type="tel" (shows numeric keyboard on mobile)type="email" (enables autocomplete and basic validation)type="number" where appropriatetype="date" or a proper date picker, not three separate text inputstype="password"type="search"Autocomplete
autocomplete attributes set: autocomplete="email", autocomplete="given-name", autocomplete="tel", autocomplete="current-password", autocomplete="new-password", etc.Error messages
aria-describedby or aria-errormessageValidation timing
blur (when the user leaves a field) for format errorsInline validation
Error state styling
<form> element (not just <div>)<button type="submit"> or <input type="submit"> — not a <div> with an onClickoutline: none without a replacementaria-required="true" should be present on required fields in addition to HTML requiredaria-invalid="true" should be set on fields with validation errorsaria-live="polite" region should announce error messages to screen readers when they appear<fieldset> and <legend>## Form UX Review — [Form Name]
### Critical Issues (accessibility violations or blocking UX problems)
#### 1. [Issue title]
- **Field / Location**: [Field name or line number]
- **Problem**: [What's wrong and why it matters]
- **Fix**: [Specific code change with example]
### High-Priority Issues (significant UX degradation)
[Same format]
### Warnings (minor issues or best practice gaps)
[Same format]
### What's Already Good
[Brief acknowledgment of things done well]Input to Agent:
"Use the Form UX Optimizer skill on this form: ``jsx <div> <input placeholder="Email" onChange={...} /> <input placeholder="Password" type="password" onChange={...} /> <div onClick={handleSubmit} className="btn">Go</div> </div> ``"Output from Agent:
## Form UX Review — Login Form
>
### Critical Issues
>
#### 1. No<label>elements — placeholders used as labels - Problem: When the user starts typing, the placeholder disappears and they lose the field context. Screen readers also cannot reliably read placeholders as labels. - Fix: ``jsx <label htmlFor="email">Email</label> <input id="email" type="email" placeholder="[email protected]" autocomplete="email" />``
>
#### 2. Submit is a<div>, not a<button>- Problem: A<div>is not keyboard-accessible by default, is not announced as a button by screen readers, and doesn't submit the form on Enter. - Fix:<button type="submit">Sign in</button>— rename "Go" to something descriptive.
>
#### 3. No<form>wrapper - Problem: Without a<form>element, the browser's built-in form submission, validation, and Enter-to-submit behavior is lost. - Fix: Wrap in<form onSubmit={handleSubmit}>and remove theonClickfrom the button.
>
### High-Priority Issues
>
#### 4. Email input missingtype="email"- Problem: Withouttype="email", mobile devices show a standard keyboard instead of the optimized email keyboard. Browser-level email validation is also disabled. - Fix:<input type="email" ... />
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.