Agent skill

UX Extract

by jezweb in jezweb/claude-skills

Exhaustively extract UX patterns from a reference web app. An agent skill from jezweb/claude-skills.

MITAuto-check passed

Install UX Extract

skills CLI
$ npx skills add jezweb/claude-skills --skill ux-extract -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jezweb/claude-skills ux-extract --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jezweb/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/dev-tools/skills/ux-extract .claude/skills/ux-extract && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
ux-extract
GitHub stars
1.1k
Token cost
~3.1k tokens
SKILL.md length
1,490 words
Files
3 (incl. references)
Skills in repo
52
Repo updated
First seen
Licence
MIT

At a glance

Exhaustively extract UX patterns from a reference web app. An agent skill from jezweb/claude-skills.

  • Works in 4 steps: Browser tool → Viewport → Scope → …
  • With learn from X
  • SKILL.md covers When to use, Scope and ethics, Setup and Discovery, plus 7 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

UX Extract is an agent skill from jezweb/claude-skills. Exhaustively extract UX patterns from a reference web app. Walks every screen, captures screenshots of every state, records interaction patterns, copy verbatim, keyboard shortcuts, responsive treatments, motion, and empty/error/loading states. Produces a reusable pattern library that other audits can compare against. The inverse of ux-audit — asks 'what is the bar?' rather than 'does this match the bar?'. Trigger with 'learn from X', 'extract patterns from X', 'study X's UX', 'reverse engineer the UX of X'…

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/capture-checklist.md` and `references/pattern-library-template.md`). Compatibility notes: claude-code-only

The repository describes itself as: Skills for Claude Code CLI such as full stack dev Cloudflare, React, Tailwind v4, and AI integrations. The licence is MIT.

When your agent uses it

  • With learn from X
  • Extract patterns from X
  • Reverse engineer the UX of X
  • Build a pattern library from X

Example prompts

  • “what is the bar?”
  • “does this match the bar?”
  • “learn from X”
  • “/ux-extract”

Requirements

  • Compatibility (from SKILL.md): claude-code-only

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Browser tool
  2. Viewport
  3. Scope
  4. Focus lens (optional)

What it can do on your machine

Read from SKILL.md and the folder at commit 64965d9. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    claude-code-only

    From compatibility in the SKILL.md frontmatter.

Context cost

UX Extract loads about 3.1k tokens when it runs, and up to ~8.5k if it reads all its reference files. Until then it costs about 139 tokens; SKILL.md has 1,490 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~139
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jezweb/claude-skills at commit 64965d9, republished under its MIT licence (© jezweb). 1,490 words, ~3,118 tokens.

Download SKILL.mdSave it as .claude/skills/ux-extract/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
ux-extract
description
Exhaustively extract UX patterns from a reference web app. Walks every screen, captures screenshots of every state, records interaction patterns, copy verbatim, keyboard shortcuts, responsive treatments, motion, and empty/error/loading states. Produces a reusable pattern library that other audits can compare against. The inverse of ux-audit — asks 'what is the bar?' rather than 'does this match the bar?'. Trigger with 'learn from X', 'extract patterns from X', 'study X's UX', 'reverse engineer the UX of X', 'build a pattern library from X'.
compatibility
claude-code-only

UX Extract

Exhaustively study a reference web app and produce a reusable pattern library. Goes everywhere, captures everything, then organises it into a document another audit or build can reference.

The inverse of ux-audit:

  • Audit asks: does this match a bar?
  • Extract asks: what is the bar?

Audits without extracts implicitly compare to "my memory of other apps" — fragile and inconsistent. Extracts turn that memory into a concrete, navigable artifact. An audit can then say: "Empty state on /app/clients shows no CTA. Reference (claude.ai) shows 3 keyboard shortcuts plus 'New chat' in the same position" instead of "feels a bit sparse".

When to use

  • Before building a new feature — study how best-in-class apps handle it
  • Benchmarking a build — extract the reference, then audit against it
  • Onboarding designers or engineers — here's what good looks like, concretely
  • Competitor research — document the competitor's UX so you can meaningfully differentiate
  • Refreshing an old app — extract patterns from modern equivalents to guide the update

Scope and ethics

Before starting, confirm the target is fair game:

  1. Use your own account — don't scrape anything that requires credentials you don't legitimately hold
  2. Respect robots.txt for unauthenticated crawling
  3. Rate-limit — act like a human user, not a crawler. Pause between pages.
  4. Check ToS — most SaaS Terms of Service permit individual inspection but prohibit automated scraping
  5. Don't redistribute screenshots of a live competitor's app publicly — pattern libraries are internal references

If the target is behind a paywall or requires a trial account, ask the user whether they have legitimate access before proceeding.

Setup

1. Browser tool
TargetToolNotes
Authenticated reference (you have an account)Chrome MCPUses your logged-in session
Public reference (marketing pages, docs, public demos)Playwright MCPNo login needed

See ../ux-audit/references/browser-tools.md for commands.

2. Viewport

Pin 1440×900 as baseline (MacBook standard). Also capture 768 and 375 for responsive patterns. Don't exceed 2000px wide.

2b. Screenshot post-processing

On Retina Macs, Chrome captures at 2× the logical viewport — a 1440-wide window produces a 2880-wide PNG. Post-process after each batch so the library isn't full of oversized files:

bash
img-process batch ./screenshots --action optimise --max-width 1440

Idempotent — no-op on already-small files. Run at the end of each route's capture, or across the whole screenshots/ folder at the end of the extract. Playwright MCP users can set deviceScaleFactor: 1 in the context options and skip this step.

3. Scope

Decide before starting:

  • Whole app — traverse everything reachable (can take hours, produces a comprehensive library)
  • Feature area — one section ("the settings flow", "the dashboard", "the billing flow")
  • Pattern class — just empty states, just error handling, just onboarding

Narrower scope produces tighter, more useful libraries. "Whole app" is only worth it for apps you'll be building a direct analogue of.

4. Focus lens (optional)

Optional bias for capture. Examples:

  • "Focus on patterns for data-heavy lists" — prioritise table, filter, search, virtualisation screenshots
  • "Focus on onboarding and empty states" — prioritise first-run flows and zero-data views
  • "Focus on permission boundaries" — log in as multiple roles, document the differences

If no focus is given, capture broadly.

Discovery

Sitemap crawl

Build the full route inventory:

  1. Public sitemap — check /sitemap.xml, /robots.txt for discoverability
  2. Nav crawl — click through every section visible in the top nav, sidebar, footer
  3. In-app discovery — once inside, note every link that appears (breadcrumbs, tabs, contextual menus)
  4. URL inspection — some apps have useful patterns in /settings, /preferences, /admin that aren't in the main nav

Record each route with its purpose: /settings/billing — subscription plan, payment method, invoice history.

Pattern inventory

Before deep-capture, scan the app once and list pattern types you'll document. Typical categories:

  • Wayfinding (nav, breadcrumbs, current-location, back)
  • Lists & tables (row, hover, action reveal, selection, sort, filter, paginate, empty)
  • Forms (label, validation, error, required, inline help)
  • Modals & dialogs (trigger, focus, escape, scroll, confirm)
  • Feedback (toast, inline, progress, loading, saved)
  • Onboarding & empty states (first-run, zero-data CTA, guided tour)
  • Permissions & roles (restricted views, denied-access, role indicators)
  • Copy & microcopy (buttons, headings, errors, placeholders, tooltips)
  • Keyboard (shortcut sheet, focus, tab order, command palette)
  • Motion (transition, reveal, loading, gesture)
  • Responsive (breakpoints, mobile-specific: bottom sheet, tabs, swipe)

Not every app uses every category. Mark which apply.

Capture Phase

For each route, capture exhaustively. Screenshots are cheap — err toward more.

Screenshot all states

Per meaningful element, capture:

StateTrigger
Defaultpage loaded, nothing interacted with
Hovermouse over a button, row, nav item
Focuskeyboard-focused via Tab
Activebutton mid-click, input being typed into
Opendropdown open, menu expanded
Closeddropdown closed, menu collapsed
Expandedaccordion open, detail panel expanded
Collapsedaccordion closed
Selectedcheckbox ticked, row selected, tab active
Loadingskeleton, spinner, pending state
Emptylist with no items
Populatedlist with many items
Errorinline, toast, or full-page error
Successpost-action confirmation

See references/capture-checklist.md for the full per-pattern checklist.

Capture copy verbatim

Copy the text exactly, including punctuation, ellipses, and tone:

  • Button labels: "Start chat", "Upgrade plan", "Delete forever"
  • Empty states: "No conversations yet. Start one to see it here."
  • Error messages: "We couldn't save that change. Try again, or contact support if it keeps happening."
  • Confirmation dialogs: "Delete this project? All 14 tasks and 3 members will be removed. This cannot be undone."
  • Placeholder text: "e.g. smith@company.com"
  • Tooltips: "Pressing Cmd+K opens this from anywhere"

Raw copy is gold for writers and informs your app's voice.

Capture interactions

For each interactive element, note:

  • Trigger: click / hover / keyboard / long-press / drag
  • Target: what it affects (opens modal, filters list, navigates)
  • Feedback: immediate visual response? delayed confirmation?
  • Reversibility: undoable? destructive?
Show full SKILL.md (594 more words)Show less
Capture keyboard patterns
  • Shortcut sheet: is there a ? or Cmd+/ that reveals the shortcut list? Capture it.
  • Command palette: Cmd+K or similar? Capture the palette open, searching, a result selected, and an action executed.
  • Focus indicators: tab through the page, note the ring style, colour, thickness
  • Tab order: is it logical? Any unexpected jumps?
Capture responsive treatments

For each route, screenshot at 1440, 768, 375. Note what changes, not just "it works":

  • Navigation moves from sidebar to hamburger at [breakpoint]
  • Table collapses to stacked cards at [breakpoint]
  • Modal becomes full-screen at [breakpoint]
  • Multi-column form becomes single-column at [breakpoint]
Capture motion

Record a GIF (Chrome MCP's gif_creator) of any animation worth documenting:

  • Page transitions
  • Modal enter/exit
  • List item enter/exit
  • Loading → loaded
  • Success animations (confetti, checkmarks)
  • Drag-and-drop feedback

One 3-second GIF is worth a paragraph of description.

Dedup Phase

After capture, many patterns will appear on multiple pages. Deduplicate:

  • Same row pattern on 5 list pages → one "list row" entry with a note "used on: /clients, /projects, /invoices, /reports, /team"
  • Same empty state layout with different copy → one "empty state" entry with copy variants listed
  • Same modal chrome → one "modal" entry; specific modals listed as usages

Keep two counts per pattern:

  • Occurrences — how many times this pattern appears
  • Variants — meaningful differences (icon vs no icon, small vs large, with CTA vs without)

A pattern that appears once is rarely worth documenting unless it's unique and notable.

Output

Write to docs/ux-extracts/<app-name>/ (or .jez/artifacts/ux-extracts/<app-name>/ if that directory exists):

docs/ux-extracts/claude-ai/
├── pattern-library.md      ← main document
├── copy-corpus.md          ← optional, raw copy by page (for writers)
└── screenshots/
    ├── 001-home-default.png
    ├── 002-home-hover-cta.png
    ├── 003-new-chat-empty.png
    └── ...

See references/pattern-library-template.md for the output structure.

The pattern library should be:

  • Navigable — table of contents at the top, jump links to every section
  • Cross-referenced — "see also: Modal Chrome"
  • Screenshot-dense — every claim backed by a referenced screenshot
  • Copy-accurate — verbatim text in code blocks or blockquotes, not paraphrased
  • Honest — note what's missing or weak as well as what's good. A reference library isn't gospel.

How ux-audit consumes this

ux-audit checks for pattern libraries at .jez/artifacts/ux-extracts/<ref>/pattern-library.md or docs/ux-extracts/<ref>/pattern-library.md. If found, it uses them as the bar for comparison. Audit findings can then cite specific patterns:

"Empty state on /app/clients has no explanatory copy and no CTA. Reference library [claude.ai § Empty States] shows CTA + 2 example prompts in the same position."

No integration is required beyond producing the library in the expected path.

Autonomy

  • Just do it: Navigate, screenshot, copy text, inject JavaScript to read computed styles, download static assets (logo, icons) for reference
  • Ask first: Any login that requires credentials the user hasn't authorised you to use, any scraping of a site where ToS or rate limiting is ambiguous
  • Stop and confirm: If the target has a login wall and you don't have clear authorisation, stop and confirm before proceeding

Reference files

WhenRead
Building the pattern-library.md outputreferences/pattern-library-template.md
Per-pattern capture checklist (what to screenshot, what to note)references/capture-checklist.md
Browser tool commands../ux-audit/references/browser-tools.md

Tips

  • Screenshots are cheap — capture generously. Easier to drop a screenshot from the library than to rerun the extract to get one.
  • Capture copy the moment you see it — don't plan to come back; come back and it'll be behind a different state.
  • Note what's absent — if an app has no keyboard shortcut sheet, that's a pattern decision worth documenting too.
  • Separate observation from evaluation — extract records what exists, not whether it's good. Opinions belong in an audit, not an extract.
  • Extracts decay — apps change. Timestamp the library, link to the date on archive.org if possible, plan to re-extract every 6–12 months for apps you compare against often.
  • Build incrementally — open the library file at the start, append as you go. Don't try to structure it all at the end.

© jezweb, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (references) in plugins/dev-tools/skills/ux-extract of jezweb/claude-skills.

  • SKILL.md
  • references/capture-checklist.md
  • references/pattern-library-template.md

Open the folder on GitHubat commit 64965d9

Compare with similar skills

UX Extract next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

UX Extract compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
UX Extract this skilljezweb/claude-skills1.1k—~3.1kAutomated safety check: PassMIT
Extractalirezarezvani/claude-skills28k—~1.4kAutomated safety check: PassMIT
Brand Extractnexu-io/open-design100k—~3.1kAutomated safety check: PassApache-2.0
Design Extractnexu-io/open-design100k—~549Automated safety check: PassApache-2.0
Kg Extractruvnet/ruflo74k—~751Automated safety check: NotesMIT
Browser Extractruvnet/ruflo74k—~888Automated safety check: NotesMIT

Similar skills

  • Extract

    alirezarezvani/claude-skills

    Turn a proven pattern or debugging solution into a standalone reusable skill with SKILL.md, reference docs, and examples.

    28k GitHub stars~1.4k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Brand Extract

    nexu-io/open-design

    Extract a complete Brand Kit from a live website by driving the in-app browser.

    100k GitHub stars~3.1k tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Design Extract

    nexu-io/open-design

    Extract design tokens (color / typography / spacing) from imported source code, screenshots, or Figma exports into the canonical token bag token-map consumes.

    100k GitHub stars~549 tokensUpdated today
    Frontend & DesignAuto-check passed
  • Kg Extract

    ruvnet/ruflo

    Extract entities and relations from source files to build a knowledge graph

    74k GitHub stars~751 tokensUpdated today
    Knowledge ManagementAuto-check: notes
  • Browser Extract

    ruvnet/ruflo

    Extract structured data via stored browser-templates or one-shot DOM queries, with mandatory AIDefence PII + prompt-injection gates before content reaches the model

    74k GitHub stars~888 tokensUpdated today
    SecurityAuto-check: notes
  • Extract

    actionbook/actionbook

    Extract structured data from websites and produce an executable Playwright script plus extracted data.

    1.6k GitHub starsUsed in 2 repos~3.4k tokens
    Sales & SupportAuto-check passed

More from jezweb/claude-skills

All 52 skills in this repo
  • Favicon Gen

    jezweb/claude-skills

    Generate custom favicons from logos, text, or brand colours.

    1.1k GitHub starsUsed in 1 repo~1k tokens
    Auto-check passed
  • Tailwind Theme Builder

    jezweb/claude-skills

    Set up Tailwind v4 + shadcn/ui themed UI with dark mode. An agent skill from jezweb/claude-skills.

    1.1k GitHub starsUsed in 1 repo~3.2k tokens
    Auto-check passed
  • Elevenlabs Agents

    jezweb/claude-skills

    Build conversational AI voice agents on the ElevenLabs platform.

    1.1k GitHub stars~3.3k tokensUpdated 3 days ago
    Auto-check passed
  • Responsiveness Check

    jezweb/claude-skills

    Test website responsiveness across viewport widths using browser automation.

    1.1k GitHub starsUsed in 1 repo~1.7k tokens
    Auto-check passed
  • MCP Builder

    jezweb/claude-skills

    Build MCP servers in Python with FastMCP. An agent skill from jezweb/claude-skills.

    1.1k GitHub stars~3.1k tokensUpdated 3 days ago
    Auto-check: notes
  • GitHub Release

    jezweb/claude-skills

    Prepare and publish GitHub releases. An agent skill from jezweb/claude-skills.

    1.1k GitHub stars~944 tokensUpdated 3 days ago
    Auto-check: notes

Questions about UX Extract

What does UX Extract do?

Exhaustively extract UX patterns from a reference web app. An agent skill from jezweb/claude-skills. UX Extract is an agent skill from jezweb/claude-skills. Exhaustively extract UX patterns from a reference web app.

When should I use UX Extract?

UX Extract fits situations like: with learn from X; extract patterns from X; reverse engineer the UX of X; build a pattern library from X.

How do I install UX Extract in Claude Code?

Run `npx skills add jezweb/claude-skills --skill ux-extract -a claude-code`. Or copy the skill folder (plugins/dev-tools/skills/ux-extract in jezweb/claude-skills) into .claude/skills/ux-extract in your project. Claude Code loads it when a task matches its description.

How do I install UX Extract in Codex?

Run `npx skills add jezweb/claude-skills --skill ux-extract -a codex`. Or copy the skill folder (plugins/dev-tools/skills/ux-extract in jezweb/claude-skills) into .agents/skills/ux-extract in your project. Codex loads it when a task matches its description.

Can I use UX Extract in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jezweb/claude-skills --skill ux-extract -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ux-extract, .gemini/skills/ux-extract, .github/skills/ux-extract and .opencode/skills/ux-extract in your project.

What does UX Extract need to run?

SKILL.md names no scripts, command-line tools or credentials: UX Extract is instructions for the agent only. Compatibility (from SKILL.md): claude-code-only.

Does UX Extract access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is UX Extract safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does UX Extract use?

UX Extract is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does UX Extract use?

About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.4k tokens, read only when the agent opens those files.

What are the alternatives to UX Extract?

Skills that share tags, products or a category with UX Extract: Extract (alirezarezvani/claude-skills, 28k stars), Brand Extract (nexu-io/open-design, 100k stars), Design Extract (nexu-io/open-design, 100k stars) and Kg Extract (ruvnet/ruflo, 74k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains UX Extract?

jezweb (a GitHub user) maintains it in jezweb/claude-skills, which has 1,052 GitHub stars. The repository holds 52 skills in this directory. The repository was last updated on October 5, 2026.

Source: jezweb/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.