skills/two-factor/SKILL.md
Use when implementing two-factor authentication setup and verification.
npx skillsauth add thedaviddias/ux-patterns-for-developers two-factorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Two-factor authentication setup and verification
Two-Factor Authentication (2FA) adds a second verification step after the user enters their password, requiring proof of something they have (a phone, security key, or authenticator app) in addition to something they know (their password). This dramatically reduces the risk of unauthorized access from stolen credentials. The 2FA pattern covers both the setup flow (enrolling a second factor) and the verification flow (entering a code or using a device during login).
Use Two-Factor Authentication to protect accounts with an additional verification layer beyond username and password. Common scenarios include:
references/pattern.md, then choose the smallest viable variation.Do's ✅
inputmode="numeric" on the code input for the numeric keyboard on mobileautocomplete="one-time-code" so browsers and password managers can autofill SMS codesalt text for the QR code image describing its purposerole="alert" when an invalid code is enteredClient-Side QR Code Generation
const qrDataUrl = await QRCode.toDataURL(totpUri);
The Problem: Users who lose their authenticator device have no way to access their account.
How to Fix It: Generate 8-10 one-time backup codes during 2FA setup. Clearly prompt users to save them. Provide a backup code entry option on the verification screen.
The Problem: SMS codes are vulnerable to SIM swapping, SS7 interception, and delivery delays.
How to Fix It: Offer TOTP (authenticator app) as the primary method. Use SMS only as a fallback. Consider supporting security keys for high-security accounts.
The Problem: TOTP codes are rejected because the user's device clock is slightly out of sync with the server.
How to Fix It: Accept codes from the current time window plus one window before and after (±30 seconds). This is standard TOTP tolerance.
For full implementation detail, examples, and testing notes, see references/pattern.md.
Pattern page: https://uxpatterns.dev/patterns/authentication/two-factor
tools
Use when implementing help users understand their current location.
tools
Use when implementing multi-step forms and processes.
content-media
Use when implementing video playback with controls.
development
Use when choosing, comparing, or implementing UX patterns across the UX Patterns for Developers corpus.