La interfaz está localizada; las descripciones y documentos de las Skills se traducen automáticamente con IA a su idioma. El código, los comandos, rutas y términos técnicos se mantienen en el original, y prevalece el documento del autor.
Explorar Skills
Desarrollo · SKILL.md

audit-ux

audit-ux

Per-page UX audit with NN/g heuristics, microcopy review, and Google HEART. Use when evaluating usability, auditing microcopy, or assessing cognitive load. Cross-page flows/IA → audit-ux-journeys.

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentación de la Skill

GitHub

name: audit-ux description: > Per-page UX audit with NN/g heuristics, microcopy review, and Google HEART. Use when evaluating usability, auditing microcopy, or assessing cognitive load. Cross-page flows/IA → audit-ux-journeys. license: MIT effort: high

UX Audit Skill

Degree of freedom: MIXED — Steps 0, 2–5 [HIGH freedom]; Step 1 research JSON and every playwright step [LOW freedom — run exactly]. Read protocol-browser-anti-stall before any browser interaction.

How to reason

  1. Observe — quote the screenshot, copy, or code line
  2. Interpret — what does this do to the human in this moment of the pipeline?
  3. Classify — heuristic fail / law violation / microcopy / correct-as-is
  4. Severity — blocks the success moment = P0; recoverable friction = P1; nit = P2

Worked example

Observe: invoice Submit stays enabled; no toast; POST /invoices in-flight 4s. Interpret: a second click creates a duplicate invoice (H1 + H5, money path). Classify: heuristic fail on a trust-sensitive write. Severity: P0 — double-submit on money. Finding: /invoices/new | H1/H5 | P0 | no pending state | disable + toast.

Self-critique before reporting [LOW freedom — do not skip]

  1. Evidenced — screenshot or quoted copy, not "feels confusing"
  2. Per-page — cross-page IA/stories → audit-ux-journeys
  3. Severity justified — P0 blocks the recorded success moment
  4. Right owner — breakpoints → audit-responsive; empty/error → audit-ui-states
  5. Context first — no finding without Step 0 human + pipeline

Context-First

Before scoring a heuristic: who is the human (state, not "users"), where this page sits in the journey, how data moves input → API → DB → screen, and the emotional arc. Step 0 is mandatory.


Step 0: Deep Product and Pipeline Understanding

0a. Understand the Business and Human Context

Read README, landing page, marketing copy, and any onboarding flows to answer:

  • What problem does this solve? (Not features — the human pain it alleviates)
  • Who is the primary human? (Demographics, technical skill, emotional state when using)
  • What's the alternative? (What do people do without this product? Spreadsheets? Phone calls? Nothing?)
  • What's the success moment? (The "aha" — when the human gets what they came for)
  • What's the trust model? (Does the user trust this product with money? Health data? Business data?)

0b. Map pipeline, routes, and emotional arc

For each core task, trace how data moves from the human's input through client validation, the API call, server processing, the database, the response, and the client update to the feedback the human sees (api/, actions/, hooks/use*, lib/, and fetch|axios|ky|useSWR|useQuery|trpc call sites locate the integration points). Mark the latency-sensitive, error-prone, and trust-sensitive points — H1, H5, and H9 findings come from there. Discover routes by framework (app/**/page.tsx, pages/**/*.tsx, src/routes/, router.*) and note nav shape (flat / hierarchical / hub-and-spoke), depth, cross-links, and dead ends for the pages in scope; cross-page IA belongs to audit-ux-journeys. For each core flow, note the entry emotion, where confusion or anxiety spikes, where the product earns trust, the peak moment (best or worst), and how the flow ends.

0c. Record discovery

One short block in whatever shape fits: product type, the human problem, the primary human and their emotional context, the top core tasks, the success moment, trust level (money / data / time / reputation), page count, auth pattern, locale/i18n, and known latency or error-prone points.


Step 1: Research Current UX Standards

1a. NN/g — Usability Heuristics and Methods

firecrawl:firecrawl_search
{
 "query": "site:nngroup.com heuristic evaluation checklist [current year]",
 "limit": 5,
 "sources": [{ "type": "web" }]
}

1b. Intuit Content Design — Microcopy Principles

firecrawl:firecrawl_search
{
 "query": "site:contentdesign.intuit.com UX writing principles",
 "limit": 5,
 "sources": [{ "type": "web" }]
}

Scrape the most relevant result for detailed writing guidelines.

1c. Laws of UX — Interaction Psychology

firecrawl:firecrawl_scrape
{
 "url": "https://lawsofux.com",
 "formats": ["markdown"],
 "onlyMainContent": true
}

1d. Domain-Specific UX Research

firecrawl:firecrawl_search
{
 "query": "<PRODUCT_TYPE> UX best practices usability patterns [current year]",
 "limit": 5,
 "sources": [{ "type": "web" }]
}

Scrape the best result for domain-specific UX patterns.


Step 2: Nielsen's 10 Usability Heuristics (Deep Evaluation)

For each heuristic: code analysis and live browser verification.

H1: Visibility of System Status

What to find in code:

Search *.tsx for feedback patterns: loading|isLoading|isPending|skeleton|Skeleton|spinner|Spinner (loading states); progress|Progress|step.*of|currentStep (multi-step progress); toast|Toast|notification|Notification|snackbar (user notifications).

What to verify in browser:

SignalPassFail
Loading statesSkeleton/spinner visible during data fetchBlank screen or frozen UI
Form submissionButton shows loading, success/error feedbackNo feedback, user clicks again
Progress indicationMulti-step flows show step countUser doesn't know where they are
Active navigationCurrent page/section highlightedNo indication of current location
Real-time updatesOptimistic UI or polling feedbackStale data, no refresh indication

H2: Match Between System and Real World

What to find in code:

Search *.tsx for copy-quality TODOs: TODO.*wording|TODO.*copy|TODO.*label|TODO.*text (case-insensitive).

What to verify in browser:

SignalPassFail
Labels and terminologyDomain-appropriate language users expectTechnical jargon, internal codenames
IconsUniversally recognized or labeledAmbiguous icons without text labels
Data formatDates, currency, numbers in user's localeISO dates, raw numbers, wrong currency
Logical groupingInformation organized by user mental modelOrganized by database schema or dev convenience
MetaphorsReal-world analogies aid understandingForced metaphors that confuse

H3: User Control and Freedom

What to find in code:

Search *.tsx for emergency-exit patterns: onCancel|handleCancel|onClose|handleClose|onDismiss (cancel/close handlers); undo|Undo|revert|Revert (undo actions); confirm.*delete|confirm.*remove|AlertDialog|ConfirmDialog (destructive-action guards).

What to verify in browser:

SignalPassFail
Modal escapeClose button + Escape key + backdrop clickNo way to close, trapped
Form abandonmentBack button works, drafts savedData lost on navigation
Destructive actionsConfirmation dialog with clear consequencesOne-click delete, no undo
Multi-step flowsBack/previous step without data lossCan only go forward
UndoUndo available after significant actionsIrreversible changes without warning

H4: Consistency and Standards

What to verify in browser:

SignalPassFail
Button hierarchyPrimary/secondary/ghost used consistentlyRandom button styles
TerminologySame action = same label everywhere"Save" / "Submit" / "Confirm" / "Apply" for same action
Layout patternsConsistent page structure across viewsEach page has different layout logic
Interaction patternsSame gesture = same resultClick sometimes navigates, sometimes opens modal
Platform conventionsFollows web conventions (links underlined, form patterns)Custom patterns that break expectations

H5: Error Prevention

What to find in code:

Search *.tsx for prevention patterns: disabled.*(!|=.*false)|isDisabled|isInvalid (disabled/invalid states); required|min.*length|max.*length|pattern= (input constraints). Check package.json for validation libraries: zod|yup|joi|superstruct|valibot.

What to verify in browser:

SignalPassFail
Input constraintsDate pickers (not free text), dropdowns for known optionsFree text for structured data
Inline validationValidation on blur/change, before submitOnly validates on submit
Destructive guardsRequires confirmation, type-to-confirm for critical actionsOne-click irreversible actions
DefaultsSmart defaults reduce input neededAll fields blank, user guesses
Disabled statesButtons disabled when form invalid, with explanationEnabled but silently fails

H6: Recognition Over Recall

What to verify in browser:

SignalPassFail
NavigationAll major sections visible in navFeatures hidden in deep menus
SearchSearch available for large data setsUser must scroll/browse to find
BreadcrumbsBreadcrumbs in hierarchical contentUser loses context in deep pages
Recent itemsRecently accessed items surfacedMust remember and navigate from scratch
Contextual helpTooltips, placeholders explain fieldsLabels without context

H7: Flexibility and Efficiency of Use

What to find in code:

Search *.tsx for efficiency patterns: keyboard|shortcut|hotkey|useHotkeys|Cmd\+|Ctrl\+ (keyboard accelerators); bulk|batch|selectAll|multiSelect (bulk operations).

What to verify in browser:

SignalPassFail
Keyboard shortcutsPower-user shortcuts availableMouse-only interaction
Bulk actionsMulti-select, batch operationsOne-at-a-time only
Filters and sortFilter/sort on data-heavy pagesMust scan manually
CustomizationUsers can configure views/preferencesOne-size-fits-all
Quick actionsCommon tasks reachable in 1-2 clicksCore tasks buried in menus

H8: Aesthetic and Minimalist Design

What to verify in browser:

SignalPassFail
Information densityProgressive disclosure, expand-on-demandEverything visible at once
Visual hierarchyClear primary/secondary/tertiary contentEverything same visual weight
WhitespaceBreathing room between sectionsCramped, dense layout
CTAs1 primary action per view, clearly distinguishedMultiple competing CTAs
Content priorityMost important content first/prominentCritical info buried below fold

H9: Help Users Recognize, Diagnose, and Recover from Errors

What to find in code:

Search *.tsx for error-handling patterns: error.*message|errorMessage|Error.*:.*' (error message strings); try.*catch|\.catch\(|onError (catch sites); fallback|ErrorBoundary|error\.tsx (fallback components — list files with matches, not just count).

What to verify in browser:

SignalPassFail
Error languagePlain language, no codes"Error 500", "ECONNREFUSED", raw stack trace
SpecificitySays exactly what went wrong"Something went wrong"
Recovery actionSuggests what user can do nextDead end, user must guess
Inline errorsField-level errors near the inputSingle error at top of form
Empty statesHelpful empty states with next actionBlank page, "No data"

H10: Help and Documentation

What to find in code:

Search *.tsx for in-app help: Tooltip|tooltip|HelpCircle|InfoIcon|help.*text|aria-describedby (contextual help); onboarding|tour|walkthrough|guide|Onboarding (guided flows).

What to verify in browser:

SignalPassFail
Contextual helpTooltips on complex fields/featuresNo explanation, user must guess
OnboardingFirst-time user guidance availableDropped into complex UI cold
DocumentationHelp accessible from within the appMust search external docs
Input guidancePlaceholders, hint text, format examplesBare input fields

Step 3: Laws of UX Evaluation

LawPrincipleWhat to CheckHow to Fix Violations
Jakob's LawUsers expect your site to work like other sitesNavigation, form patterns, checkout flows follow platform conventionsResearch 3 competitors via Firecrawl, adopt their common patterns
Fitts's LawLarger, closer targets are faster to clickPrimary CTAs large enough, not in corners. Touch targets ≥44pxIncrease CTA size, move primary actions to natural thumb zones on mobile
Hick's LawMore options to weigh = longer decisionsChoice sets the user must evaluate (plans, actions, filters) are grouped, staged, or have a default. Not known-item lookups (countries, prefectures): that is searchGroup options, preselect one with a true reason, hide the long tail behind "More", typeahead for lookups
Miller's LawWorking memory holds ~4–7 chunksNothing must be carried in memory between screens; codes shown grouped with Copy; fields keep visible labels. Not a cap on visible menu items: a visible menu is read, not memorisedPersistent labels, summaries of earlier choices, chunked codes, labelled field groups
Von RestorffThe item that differs is noticedOne filled accent action per viewDemote competing CTAs to outline/ghost variants
Goal-Gradient / ZeigarnikVisible progress and unfinished work pull users to finishMulti-step flows show honest position and total; input survives reload and Back"Step 2 of 3" from real state, autosave drafts (never card numbers or codes)
Cognitive LoadMinimize mental effortNo unnecessary fields, no memory burden between stepsRemove optional fields from default view, show only what's needed now
Aesthetic-UsabilityBeautiful = perceived as easierFirst impression inspires confidenceVisual polish on landing + key flows. Personality, not just correctness
Tesler's LawComplexity can't be eliminated, only movedComplex tasks simplified for the user, not pushed to themSmart defaults, auto-detection, progressive disclosure of complexity
Doherty ThresholdProductivity rises when response <400msDo interactions feel instant?Optimistic UI, skeleton screens, prefetching, perceived performance tricks
Postel's LawBe liberal in what you acceptFlexible input parsing (phone, date, case)Accept multiple input formats, auto-format, don't reject valid variations
Peak-End RulePeople judge by peaks and endingsSuccess moment satisfying? Error moments handled gracefully?Celebrate completions (confetti, clear confirmation). Soften errors

On a native mobile app also score: primary action in the thumb zone, targets ≥ 44pt / 48dp, 3–5 tab destinations, press feedback on every tappable, haptics on confirm only, body ≥ 16sp. The fix pass for those is enhance-mobile-native-feel.


Step 4: Content and Microcopy Audit (Intuit Content Design Principles)

4a. Voice and Tone

PrinciplePassFail
ConversationalReads like talking to a friendReads like a legal document or robot
Active voice"We saved your changes""Your changes have been saved by the system"
Second person"You" for the user, "We" for the productThird person, passive constructions
ContractionsNatural contractions used ("don't", "we'll")Stilted formal language ("do not", "we will")

4b. Clarity and Precision

PrinciplePassFail
Specific language"We can't connect to Square right now""Something went wrong. Try again later"
Consistent termsSame word for same concept throughout"Save" / "Submit" / "Confirm" / "Apply" used interchangeably
Simple verbsPresent/past/future simple tenseProgressive, perfect, complex tenses
Short sentences≤20 words per sentenceRun-on sentences with multiple clauses

4c. Microcopy Quality

Check these locations in the browser:

LocationWhat to Evaluate
Button labelsAction-oriented, specific ("Save invoice" not just "Submit")
Error messagesPlain language, specific cause, recovery action
Empty statesHelpful, guides next action, not just "No data"
ConfirmationsClear consequence ("Delete this invoice? This can't be undone")
TooltipsConcise, answers one question, not paragraphs
PlaceholdersFormat hints ("e.g., john@example.com"), not labels
Loading textInformative when possible ("Loading your invoices...")
Success messagesConfirms what happened ("Invoice sent to John")

4d. Internationalization Readiness

CheckPassFail
Hardcoded stringsAll strings in i18n filesStrings inline in components
Cultural idiomsNeutral metaphorsCulture-specific slang or humor
Text expansionUI handles 40% longer translated textLayout breaks with longer strings
RTL readinessLogical properties (margin-inline-start)Physical properties (margin-left)

Find violations: search *.tsx for >([\w\s]{3,})< to surface hardcoded visible text strings that may be i18n misses.


Step 5: Emotional Design and Human-Centric Evaluation

5a. First Impression Test (5-Second Test)

Navigate to the landing/home page. In the first 5 seconds of the screenshot:

QuestionEvidence
Can you tell what this product does?[yes/no — what's communicated]
Do you trust it?[visual polish, credibility signals, brand presence]
Do you know what to do first?[clear CTA, obvious starting point]
Does it feel like a real product or a template?[personality, craft, vs generic bootstrap]

Further reading

Skills guardadas