mcpField
T
touch-ipad-review

touch-ipad-review

github.com/fixmyberlinDesign & UI043 installsUpdated 1d ago
Repository

About touch-ipad-review

touch-ipad-review is a skill for auditing touch and iPad interactions in React + Tailwind apps. It focuses on non-obvious interaction gaps and produces findings with locations, issues, and concrete fixes.

Key features

  1. 01Scan interactive controls and custom click targets
  2. 02Classify Headless UI / Radix and custom lists
  3. 03Check Split View, hover, and touch highlighting
  4. 04Report prioritized findings with specific fixes

Use cases

  1. 01Review iPad behavior in a React + Tailwind app
  2. 02Investigate touch highlighting in menus and sidebars
  3. 03Find small targets or mis-tap risks
  4. 04Check hover styles affecting touch interaction

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/fixmyberlin/fixmyskills --skill touch-ipad-review

After installing, type/touch-ipad-reviewin Claude Code to confirm it loaded.

Bundled filesreferences/tailwind-touch-checklist.md

Details

From the project README

Touch & iPad review

Audit React + Tailwind apps for finger-first interaction on iPad and touch screens. Skip generic advice (use semantic HTML, be responsive, etc.) — only flag non-obvious gaps.

Checklist: references/tailwind-touch-checklist.md

When to run

User prompt like: "review app for touch/iPad usage" or "review app for this use case" with touch/tablet context.

Review workflow

  1. Scan interactive UI — buttons, links, icon buttons, tabs, map controls, dropdowns / menus / Listbox, inline selectable sidebar rows, drag handles, form controls, custom click targets (onClick on non-button elements).
  2. Walk the checklist — classify lists as Bucket A (Headless UI / Radix) vs Bucket B (custom <button> rows); grep helps (hover:, data-focus:, focus &&, MenuItem, ListboxOption, onClick, cursor-, group-hover).
  3. Test mentally for iPad — Split View width changes, sticky hover, touch-over highlight (press-drag-release in open menus and inline lists), double-tap zoom, keyboard covering inputs, thumb reach for primary actions.
  4. Emit the report using the template below — every finding must have location, issue, and concrete Tailwind/React fix.

Do not list passing generic practices. Group duplicates (e.g. "12 icon buttons missing min size") into one finding with representative files.

Report template

Copy this structure into the response:

# Touch / iPad review — [app or scope]

## Summary

[2–3 sentences: overall risk, top themes]

## Findings

### Critical

| #   | File / component | Issue | Suggested fix                   |
| --- | ---------------- | ----- | ------------------------------- |
| 1   | `path:line`      | …     | Tailwind classes or code change |

### Warning

| #   | File / component | Issue | Suggested fix |
| --- | ---------------- | ----- | ------------- |

### Nice to have

| #   | File / component | Issue | Suggested fix |
| --- | ---------------- | ----- | ------------- |

## FMC conventions verified

- [ ] All `<a>` and `<button>` (and tappable custom controls) use `cursor-pointer` on desktop
- [ ] Interactive controls use `select-none` where text selection would flash on iPad
- [ ] Hover-only affordances gated with fine-pointer media (see checklist)
- [ ] Menu/list rows: touch-over via `data-focus:` / `focus` (Headless UI) or `data-[highlighted]:` (Radix) — not `hover:` alone
- [ ] Inline sidebar pickers flagged if hover-only (Bucket B)

## Passed (non-obvious)

[Only items you explicitly checked and that are correct — keep short]

Severity

LevelWhen
CriticalBroken on touch, inaccessible tap, hidden functionality, mis-tap risk on primary flows
WarningSubstandard but usable; sticky hover; targets slightly small; missing feedback
Nice to haveConsistency, thumb-zone polish, haptics N/A on web

FMC defaults (always check)

Apply on every review:

RuleTailwind / code
Desktop pointer on links & buttonscursor-pointer on <a>, <button>, and tappable custom controls
No iOS text-selection flash on controlsselect-none on buttons, icon buttons, tabs, chips used as controls
Fine-pointer-only hoverDo not use bare hover: for essential UI; use [@media(hover:hover)_and_(pointer:fine)]:hover:… (or project variant — see checklist)

Quick grep hints

# Hover without fine-pointer guard (manual triage)
rg 'hover:' --glob '*.{tsx,jsx}'

# Small tap targets
rg '<(button|a)[^>]*(size-[0-9]|h-[0-9]|w-[0-9])' --glob '*.tsx'

# Div click traps
rg 'onClick' --glob '*.tsx' | rg -v '<button|<a '

# Missing cursor on interactives (heuristic)
rg '<(button|a) ' --glob '*.tsx' | rg -v 'cursor-pointer'

# Headless UI menus: hover without touch-over styling
rg 'MenuItem|ListboxOption|menuItemClasses' --glob '*.tsx'
rg 'hover:bg' --glob '*Menu*.tsx' --glob '*Listbox*.tsx' --glob '*Dropdown*.tsx'

# Inline sidebar rows: hover-only selection feedback
rg "hover:bg.*onClick|onClick.*hover:bg" --glob '*.tsx'

External references

Comments

Markdown supported