agentleFS
TacunsTacuns/vibe-aegis/skills/ui-ux-bug-finder/SKILL.md

ui-ux-bug-finder

Skill1 starsChanged 15 days agoMITView on GitHub

Comprehensive UI/UX design, interaction flow, responsive layout, and WCAG 2.2 AA accessibility bug finder for vibe-coded apps. Detects dead buttons, missing loading/empty/error states, mobile overflow traps, z-index collisions, and live DOM layout defects.

We split this skill into the rules it gives an agent

12 rules. About 0 are common, 1 is distinctive, and 11 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 11

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Do not flag a <div> that already carries role, tabIndex and a key handler - that is a correct retrofit.

    line 27
  2. Very specific:

    Verify every modal, drawer, and dialog has a working close button, Escape key dismissal, and cleans up body scroll locks on unmount.

    line 28
  3. Distinctive:

    Verify that every component performing an async fetch or mutation explicitly implements all 4 states:

    line 32
  4. Very specific:

    Empty State: When a list or query returns 0 items, render a helpful empty state with a clear call-to-action instead of a blank void.

    line 34
  5. Very specific:

    Error State: When a fetch or mutation fails, catch the error and display a user-friendly alert, toast, or inline field error with a retry …

    line 35
  6. Very specific:

    Check layout behavior at Mobile (375x812), Tablet (768x1024), and Desktop (1440x900).

    line 40
  7. Very specific:

    Ensure touch targets (buttons, nav links, close icons) are at least 44x44px on mobile screens and do not overlap with fixed bottom bars or …

    line 42
  8. Very specific:

    Verify every <input>, <select>, and <textarea> is linked to a visible <label> or aria-label.

    line 46
  9. Very specific:

    Verify every icon-only <button> has an aria-label and every <img /> has an alt attribute.

    line 47
  10. Very specific:

    Check color contrast pairings (avoid low-contrast muted text like text-gray-300 on bg-white or text-gray-600 on bg-gray-900).

    line 48
  11. Very specific:

    Ensure keyboard Tab order is logical and focus indicators (focus-visible:ring-2) are never stripped without replacement.

    line 49
  12. Very specific:

    If the app is running locally and agent-browser or Playwright is installed:

    line 53

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

UI/UX Design & Browser QA Bug Finder

Audit frontend code and live rendered pages to catch the visual, interaction, state-management, and accessibility bugs frequently introduced during vibe coding.

5-Point UI/UX Inspection Protocol

1. Interactive Wiring & Dead Control Detection (HIGH)

  • Scan all <button>, <a>, <form>, dropdowns, and action cards across every page/route.
  • Flag any control with href="#", missing onClick / type="submit", or stubbed handlers (() => {} or console.log).

Separate three distinct bugs - they have three different fixes:

PatternRuleWhy it is wrongFix
<a href="#">Terms</a>UX-01Goes nowhereGive it a real destination
<a href="#" onClick={del}>UX-11Announced as "link" so the user expects navigation; Space does not activate it; # jumps to top and pollutes history<button type="button" onClick={del}>
<div onClick={go}>UX-12Not focusable, not keyboard operable, announced as plain text<button type="button">

The principle: if it performs an action it is a button; if it navigates it is a link with a real href. Choose the right element and the browser gives you focus, Tab order, Enter and Space, and the correct role for free. Retrofitting a <div> requires role="button" and tabIndex={0} and an onKeyDown handling both Enter and Space - three things to get right instead of zero, which is why the real button is the better answer.

Do not flag a <div> that already carries role, tabIndex and a key handler - that is a correct retrofit.

  • Verify every modal, drawer, and dialog has a working close button, Escape key dismissal, and cleans up body scroll locks on unmount.

2. Async State Matrix Completeness (HIGH / MEDIUM)

Verify that every component performing an async fetch or mutation explicitly implements all 4 states:

  • Loading State: Skeleton loader or spinner shown; submit/action buttons set disabled={isLoading} to prevent duplicate submissions.
  • Empty State: When a list or query returns 0 items, render a helpful empty state with a clear call-to-action instead of a blank void.
  • Error State: When a fetch or mutation fails, catch the error and display a user-friendly alert, toast, or inline field error with a retry option (never swallow errors in an empty catch {}).
  • Success Feedback: Confirm mutations give clear visual confirmation (toast, redirect, or optimistic UI update).

3. Responsive Layout & Mobile Viewport Audit (MEDIUM)

  • Check layout behavior at Mobile (375x812), Tablet (768x1024), and Desktop (1440x900).
  • Flag hardcoded pixel widths (w-[600px], min-w-[500px], width: 800px), un-wrapped wide tables (overflow-x-auto missing), or 100vw containers that cause horizontal scrolling on mobile.
  • Ensure touch targets (buttons, nav links, close icons) are at least 44x44px on mobile screens and do not overlap with fixed bottom bars or floating action buttons.

4. Accessibility & Keyboard Ergonomics — WCAG 2.2 AA (MEDIUM / LOW)

  • Verify every <input>, <select>, and <textarea> is linked to a visible <label> or aria-label.
  • Verify every icon-only <button> has an aria-label and every <img /> has an alt attribute.
  • Check color contrast pairings (avoid low-contrast muted text like text-gray-300 on bg-white or text-gray-600 on bg-gray-900).
  • Ensure keyboard Tab order is logical and focus indicators (focus-visible:ring-2) are never stripped without replacement.

5. Live Browser DOM Inspection (When Dev Server + Browser Tool Available)

If the app is running locally and agent-browser or Playwright is installed:

agent-browser open http://localhost:3000
agent-browser set viewport 375 812
agent-browser snapshot
agent-browser screenshot --annotate .aegis/mobile-audit.png
agent-browser set viewport 1440 900
agent-browser screenshot --annotate .aegis/desktop-audit.png
agent-browser close

Inspect the accessibility tree and screenshots to verify zero overlapping elements, zero console errors, and clean visual alignment.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.