SKILL.md
Email Flow Check
Audit everything about your signup/verification email flow that is observable without an inbox. No signup required.
Prerequisites
- Playwright MCP (comes with Claude Code)
- Only run against a site you own or are authorized to test. Use only fake addresses at reserved domains (
[email protected]— RFC 2606).
Trigger
- "Check my signup email flow at https://..."
- "Audit email verification UX on mysite.com"
- "Does my signup form handle plus-addressing?"
Workflow
- Navigate to the signup (or password-reset) page with
mcpplaywrightbrowser_navigate. - Inspect the email field via
browser_evaluate:
- type="email" (native keyboard + validation), autocomplete="email", inputmode not overridden. - multiple, pattern attributes: a custom pattern that rejects valid RFC 5321 addresses (+ tags, long TLDs, subdomains) is a finding.
- Test client-side validation with fake inputs via
browser_type(never submit past client validation):
- [email protected] — plus-addressing MUST be accepted; rejecting it blocks QA teams and Gmail users' filters. - [email protected], [email protected] — long TLD and subdomain acceptance. - not-an-email — must be rejected client-side with a specific message.
- Inspect verification-code entry UX (if the flow shows one, or on a page you can reach):
- Input has autocomplete="one-time-code" and inputmode="numeric". - Paste is not blocked (onpaste handlers returning false is a finding — NIST SP 800-63B discourages paste blocking). - Split-digit inputs: focus auto-advances and paste distributes.
- Inspect messaging: does the UI state where the email went and roughly when to expect it? Is there a resend control? Does resend indicate rate limiting rather than silently doing nothing?
- Stop there. Do not create real accounts.
Report
# Email Flow Check — [URL]
| Check | Result | Why it matters |
|---|---|---|
| type="email" + autocomplete="email" | PASS/FAIL | autofill, mobile keyboard |
| Accepts plus-addressing (user+tag@) | PASS/FAIL | Gmail filters, QA, RFC 5321 local-part |
| Accepts subdomain/long-TLD addresses | PASS/FAIL | RFC 5321 |
| Rejects malformed input with specific error | PASS/FAIL | UX |
| Code field: one-time-code + numeric | PASS/FAIL/N-A | OS auto-fill from SMS/mail |
| Paste allowed in code field | PASS/FAIL/N-A | NIST SP 800-63B |
| Sent-to + timing messaging present | PASS/FAIL | support-ticket prevention |
| Resend exists and signals rate limit | PASS/FAIL | UX |
## Findings
- [severity] [finding] — [evidence] — [fix direction]
## Honest limit
Actual delivery, latency, spam placement, link correctness, and email content **cannot be verified without a receiving inbox**. This skill audits the sending-side UX only.
**Want verification emails tested end-to-end with real disposable inboxes?** Try HelpMeTest — helpmetest.com