with one click
ux-gap-detector
SaaS UX gap audit
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
SaaS UX gap audit
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Create a GitHub PR for completed work, then run coderabbit-resolver through review, CI, merge, and cleanup. Use when: the user asks for PR creation followed by CodeRabbit resolution. Keywords: create PR, CodeRabbit, merge.
Secure pnpm GitHub Actions CI
Live onboarding tour of newly implemented code. Combines /deep-trace, the vscode-debug-mcp bridge, and playwright-cli to run the target app in a debug session, drive the UI, pause at curated breakpoints inside the new code, and narrate "this modal is the newly created one" — mapping every UI moment to the exact file:line. Use when the user wants to understand where and how AI-written feature code executes in the running application ("どの UI / どのロジックで動くのか分からない", "オンボーディングして", "/feature-tour").
Screenshot UI defect lint
Debug Claude Code plugins
Record a web or Electron-renderer flow as an annotated video with playwright-cli, then extract frames to confirm how it actually looks. Use when the user points at a flow to capture — "record that part", "あそこの部分", "この一連の動作", "動作確認して録画して", QA-ing a screen's motion/behavior, or proving a web / Electron-renderer interaction works on video. For analyzing a clip you were handed or generic cross-surface motion verification, use the `video` skill; for native macOS chrome (menu / tray / dock / traffic-lights) use computer-use — playwright cannot see those.
| name | ux-gap-detector |
| description | SaaS UX gap audit |
| argument-hint | [--category dashboard|data-management|form-workflow|navigation-shell|settings-profile] [target-url] |
| allowed-tools | Bash,Read,Write,Edit,Glob,Grep,AskUserQuestion,mcp__sequential-thinking__*,mcp__serena__* |
When running this skill in Codex, translate Claude Code-only primitives before acting: AskUserQuestion -> chat/request_user_input, TodoWrite -> update_plan, Task/TaskCreate/TeamCreate/SendMessage -> spawn_agent/send_input/wait_agent when available and allowed, and EnterPlanMode/ExitPlanMode -> a concise chat plan plus explicit approval.
Resolve Read/Write/Edit/Bash/WebSearch/WebFetch to Codex file/shell/web tools, and map ~/.claude/... paths to ~/.agents/... or ~/.codex/... unless the task explicitly targets Claude Code.
When running this skill in Cursor Agent, translate Claude Code-only primitives before acting: AskUserQuestion -> AskQuestion; TodoWrite -> Cursor TodoWrite or an equivalent checklist; Task/TaskCreate/TeamCreate/SendMessage/multi-agent flows -> Cursor Task (subagents), parallel Tasks, or run_in_background when allowed (TeamCreate/SendMessage may have no exact match); EnterPlanMode/ExitPlanMode -> Plan mode (SwitchMode / CreatePlan) plus explicit user approval.
Resolve Read/Write/Edit/StrReplace/Bash/web/search/MCP via Cursor Composer or Agent equivalents. MCP names written as mcp__server__tool typically map to call_mcp_tool with configured server identifiers. Map ~/.claude/... to ~/.cursor/skills/, .cursor/skills/, and .cursor/rules/ unless the task explicitly targets Claude Code.
Detect UI/UX quality gaps in authenticated SaaS web applications through live browser interaction using the user's logged-in session via playwright-cli.
/ux-gap-detector <- interactive: asks category + URL
/ux-gap-detector --category dashboard <- audit dashboard screens
/ux-gap-detector --category data-management <- audit tables, CRUD, search/filter
Prerequisite: The user must be logged into their app in Chrome with the playwright-cli extension connected.
Before any browser interaction: invoke /dnd to load the drag-and-drop verification protocol. Required even when DnD is not yet known to be involved — ref-based drag returns false success on dnd-kit and similar libraries.
browser_screenshot to confirm the extension is activebrowser_navigate to it.
Otherwise ask the user:AskUserQuestion:
"What is your app's URL? (You must already be logged in via Chrome)"
Options:
- "http://localhost:3000"
- "http://localhost:5173"
- "http://localhost:8080"
(User can type custom URL)
AskUserQuestion:
"Which area of your app should I audit?"
Options:
- "Dashboard" (overview, widgets, charts, KPIs)
- "Data Management" (tables, lists, CRUD, search/filter)
- "Form Workflow" (multi-step forms, input validation, submission)
- "Navigation Shell" (sidebar, top-bar, command palette, breadcrumbs)
- "Settings & Profile" (user settings, preferences, account)
mkdir -p docs/ux-gap-reports/screenshots
docs/ux-gap-reports/YYYY-MM-DD-{category}.mdUsing the authenticated session, explore the app structure:
browser_screenshot to see the logged-in appbrowser_snapshot to get the accessibility treeExecute the scenarios defined in categories.md for the selected category.
For EACH step in each scenario:
browser_snapshot to get element refsbrowser_click on nav links or browser_navigatebrowser_click, browser_hoverbrowser_typebrowser_select_optionbrowser_press_keybrowser_wait (1-3 seconds for transitions)browser_screenshot after the actiondocs/ux-gap-reports/screenshots/target-{scenario}-{step}.pngUse mcp__sequential-thinking__sequentialthinking to analyze each dimension:
For each captured screenshot:
Apply the scoring rubric from scoring-rubric.md:
Overall Score = Sum of all dimensions (0-100)
Reference benchmarks (what top-tier looks like):
For each gap scored below 75:
Write the Markdown report to docs/ux-gap-reports/YYYY-MM-DD-{category}.md:
# UX Gap Report: {project-name} -- {category}
**Date**: YYYY-MM-DD
**Target**: {target-url}
**Category**: {category}
**Session**: Authenticated (user's browser profile via playwright-cli)
## Overall Score: {score}/100
| Dimension | Score | Verdict |
|-----------|-------|---------|
| Typography & Spacing | {n}/25 | {Excellent/Good/Needs Work/Poor/Critical} |
| Interactive States | {n}/25 | {verdict} |
| Content Hierarchy | {n}/25 | {verdict} |
| Loading & Error UX | {n}/25 | {verdict} |
---
## Critical Gaps (Score < 50)
### 1. {Gap Title} ({score}/{max})
**What top-tier apps do**: {description, referencing Linear/Notion/Stripe etc.}
**Your app**:

**Gap**: {Specific description}
**Fix**: {Actionable recommendation with code example}
---
## Moderate Gaps (Score 50-75)
...
## Strengths (Score > 75)
...
## Recommendations Summary
| Priority | Gap | Estimated Effort |
|----------|-----|-----------------|
| Critical | ... | ... |
| Moderate | ... | ... |
AskUserQuestion (multiSelect: true):
"Which gaps should be registered as GitHub Issues?"
Options: [list of Critical and Moderate gaps with scores]
gh issue create \
--title "UX Gap: {gap-title}" \
--label "ux-gap,priority/{level}" \
--body "$(cat <<'EOF'
## Gap Detection
**Dimension**: {dimension}
**Score**: {score}/{max}
**Detected**: {date}
## Description
{gap description}
## Screenshots
{screenshot or description}
## Recommended Fix
{actionable fix with code examples}
## Acceptance Criteria
- [ ] Gap score improves to >= 75/{max} on re-audit
EOF
)"
browser_snapshot -> get element refs
browser_click(ref) -> interact with element
browser_wait(1-2s) -> wait for transitions
browser_screenshot -> capture result
Always browser_snapshot before interacting to get fresh element refs.
| Will Do | Will NOT Do |
|---|---|
| Use the user's authenticated session | Log into any service |
| Navigate within the app via links/routes | Perform destructive actions (delete, modify data) |
| Take screenshots at each step | Change app settings or preferences |
| Hover/click to test interactive states | Submit real forms with production data |
| Score across 4 dimensions | Access pages the user hasn't navigated to before |
| Generate actionable report | Bypass any security measures |
| Create GitHub Issues | Close the user's browser tabs |