skills/ux-audit/SKILL.md
Run a full UX audit on any website: Nielsen heuristics, conversion, content, technical quality, information architecture. Produces a prioritized report with evidence-based findings and actionable recommendations. Use when asked to review a site, check a landing page, find UX problems, evaluate usability, assess conversion, or anything like "what's wrong with this site", "review the website", "audit UX", "check the forms", "why isn't the site converting".
npx skillsauth add alenazaharovaux/share ux-auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You run an expert UX audit. Your job is not just to list problems — it's to explain why each one hurts the business and what exactly to do about it. The audit client is usually a business owner or marketer, not a UX specialist. Argue in business terms (conversion, trust, lost customers), not design patterns.
Language: Communicate in the same language the user speaks. Write the report in that language too.
This skill needs a way to fetch website content. The author tested it with Exa MCP server (web_search_exa with livecrawl: "preferred"), which gives the best results for page content extraction.
If you don't have Exa, you can use:
Note: alternatives have not been tested by the author. Crawl depth and content quality may vary.
If no context is given — determine it from the site content in Step 1.
Ask the user (if not specified): main conversion goal, target audience, special focus. If the user doesn't want to clarify — determine these yourself in the next step.
Crawl the site (using whichever web tool is available):
For each page, record: structure, all forms and CTAs, contact information, meta tags.
Save intermediate data to a working file — only show a summary in chat.
Web crawling returns incomplete page text. Burger menus, popups, elements hidden behind JS interaction (quizzes, chat widgets, messenger links in footer), iframe content — all of this may not appear in the crawl.
Iron rule: never claim "the site has no X" (no messengers, no menu, no form) if X could have been in a part of the page not captured by the crawl. Instead write: "X was not found in the crawl data — manual verification recommended." The difference between "absent" and "not found" is the difference between a false finding and an honest limitation.
For navigation this is especially critical: one visible item in the header does not mean the menu has only one item — the full menu is often in a burger or dropdown.
Read the checklist from references/checklist.md (50 items across 5 blocks). Go through each item:
Important: do not invent problems to pad the report. An audit is valued for accuracy. If an item is OK, say so. If the data is insufficient for verification — it's better to mark "could not verify via crawl" than to guess.
| Priority | When to assign | Example | |----------|---------------|---------| | CRITICAL | Blocks conversion or kills trust. Visitor leaves | Form broken, phone missing, no HTTPS | | MAJOR | Noticeably reduces conversion or causes friction | CTA not visible, 8 form fields, no reviews | | MINOR | Small things that don't block but could be improved | No favicon, typo in footer |
Homepage problems weigh more than internal pages. Form problems weigh more than "About us" text. Mobile problems weigh more than desktop (because more than half of traffic is mobile).
Before writing the report, go through each finding and ask three questions:
Is this a fact from the crawl or an assumption? If you wrote "the site has no X", check: did you see all pages? The crawl may have missed burger menus, popups, footer. If unsure — replace "absent" with "not found in crawl data."
Is the statistic real? If you cite specific percentages "according to X" — are you certain this is a real study with these numbers? If not — remove the percentages, keep the principle.
Is CRITICAL justified? Does the problem actually block conversion? Or is it just an inconvenience? Inflated priority undermines trust in the entire report.
Read the template from references/report-template.md and write the report. Save to a file (agree on the path with the user). Write the report in the same language the user speaks.
Show in chat:
Ask: "Want to dig deeper into any block? Compare with competitors? Prepare a fix spec?"
Each problem is a mini-argument. A bad finding names a symptom. A good one explains the cause, the impact, and the solution.
Bad:
Button is hard to see
Good:
The "Submit inquiry" CTA button doesn't stand out from the page background. For conversion elements, a contrast ratio of at least 4.5:1 is recommended (WCAG AA). When a CTA blends into the background, users don't recognize it as an interactive element. Recommendation: make the button contrast with the background — verify using any contrast checker. Note: exact contrast cannot be measured without visual access to the page.
Bad:
Form is too long
Good:
The inquiry form has 9 fields. Common practice is to limit first-contact forms to 3-5 fields, keeping only what's critical. Here the essentials are: name, phone, project type. The rest (email, budget, area, comment, preferred contact method, call time) can be removed or moved to a second step.
Do not cite specific percentages "according to X Institute" unless you are 100% certain this is a real study with these exact numbers. Fabricated statistics undermine trust in the entire report. Instead:
Not all rules are universal. Urgency elements ("only 3 spots left!") work in e-commerce but look manipulative on a law firm's site. Certificates are critical for medical sites but optional for a coffee shop. "Show prices" matters in B2B services (lowers the barrier) but may be wrong for the luxury segment.
Before recording a problem — ask yourself: is this actually a problem for this business and its audience?
"Compare with competitors" — find 2-3 competitors via web search, run a quick audit on key parameters, add a comparison table.
"Prepare a fix spec" — write a technical specification for a developer/designer with requirements for each fix, grouped by priority.
"Check mobile in detail" — extended check: touch targets (min 44x44px), font size (min 16px), sticky elements, 3G speed.
"Check accessibility" — additional block: contrast, alt texts, focus indicators, ARIA labels, keyboard navigation.
development
Full product-market fit cycle for one product — from initial hypothesis to post-launch metrics. 10 stages: setup → hypothesis (7 dimensions) → market research → risk synthesis → DVF validation → interview prep → field → interview synthesis → MVP → metrics (Sean Ellis + retention + Levels of PMF) → iterate. Resumes between sessions based on the project folder state. Bilingual (English + Russian) — picks the language during first-run setup. TRIGGER on ANY: - "do PMF for [product]" / "I need product market fit for X" / "PMF [name]" - "start PMF cycle" / "I want to go through PMF" / "help me validate [idea]" - "continue PMF" / "continue PMF [name]" - "check PMF" / "what stage is my PMF at" / "show my PMF projects" - "is my product ready to launch" - "сделай PMF для [продукта]" / "нужен product market fit для X" / "PMF [имя]" - "запусти PMF цикл" / "хочу пройти PMF" / "помоги валидировать [идею]" - "продолжаем PMF" / "продолжай PMF [имя]" - "проверь PMF" / "на каком этапе у меня PMF" / "покажи мои PMF проекты" - "готов ли мой продукт к запуску" - User mentions a product and wants to validate it systematically
testing
Use when choosing a narrative strategy before writing any text — articles, pitches, essays, reports, personal posts. Also use mid-writing to check tone, get next-block guidance, or shift narrative. Triggers: «writing guru», «подбери нарратив», «какой нарратив выбрать», «нарративная стратегия», «narrative strategy», «guru, проверь фрагмент», «guru, что дальше», «guru, хочу сменить тональность».
development
Generate self-contained HTML pages that visually explain systems, data stories, investigations, editorial workflows, and code changes. Use when the user asks for diagrams, architecture views, visual diffs, data tables, timelines, source maps, or any structured visualization that would be painful to read as terminal output. Also activates for tables with 4+ rows or 3+ columns. Adapted from nicobailon/visual-explainer with journalism, newsroom, and academic design sensibilities.
development
Triages findings from Telegram, articles, posts, YouTube videos — explains the gist in plain language, maps to user's current projects, and recommends an action. Use this skill when the user shares a post, link (GitHub, website, YouTube), screenshot, or file (.md, .txt) and wants to understand if it's useful. Also activate when the user pastes a link or text without an explicit request — if it looks like an external finding (not part of the current task), offer to triage it. Triggers: "look what I found", "triage this", "check this out", "what should I do with this", "is this useful", "triage the link", "what do you think about this", as well as a bare link or pasted post text without instructions. Second mode: "review my ideas", "what's in the ideas folder" — review saved ideas.