Run this gate after completing any user-facing work. Do not deliver work to the user until this gate passes.
Before examining UX, verify the feature actually works end-to-end:
Walk through each of Nielsen's 10 heuristics against the work just completed.
Load references/heuristics-checklist.md and evaluate each applicable item.
Not every heuristic applies to every change — skip items that are clearly irrelevant
to the scope of work, but err on the side of checking.
Check these states exist and are handled for every data-driven view:
StateWhat to verifyEmptyNo data yet — helpful message, not blank screenLoadingSpinner, skeleton, or indicator while fetchingErrorClear message with recovery path (retry, go back)SuccessConfirmation after actions (toast, redirect, message)PartialSome data missing — graceful degradation, not crashOverflowLong text, many items, large images handledAuthProtected routes redirect or show appropriate state
For each issue found:
SeverityMeaningAction🔴 BlockerUser cannot complete the taskFix before delivering🟠 MajorUser struggles significantlyFix before delivering🟡 MinorUser notices but can work aroundNote to user, fix if quick🔵 EnhancementPolish or improvementNote to user for backlog
When reporting to the user, keep it brief:
text
✅ QA Gate passed — [summary of what was checked]
Or if issues were found and fixed:
text
🔧 QA Gate — found and fixed [N] issues:
- [brief description of each fix]
Or if minor issues remain:
text
⚠️ QA Gate — [N] minor items noted:
- [brief description + severity]
Do not produce a full heuristic evaluation report unless the user asks for one. The gate is a self-check, not a deliverable.