cloudflare-api
Hit the Cloudflare REST API directly for operations that wrangler and MCP can't handle well. Bulk DNS, custom hostnames, email routing, cache purge, WAF rules,…
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
$ npx -y skills add jezweb/claude-skills --skill ux-extract --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ux-extractContext preview
The summary Claude sees to decide when to auto-load this skill.
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
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
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`:
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"*.
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.
| Target | Tool | Notes | |--------|------|-------| | **Authenticated reference** (you have an account) | Chrome MCP | Uses your logged-in session | | **Public reference** (marketing pages, docs, public demos) | Playwright MCP | No login needed |
See [../ux-audit/references/browser-tools.md](../ux-audit/references/browser-tools.md) for commands.
Pin 1440×900 as baseline (MacBook standard). Also capture 768 and 375 for responsive patterns. Don't exceed 2000px wide.
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:
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.
Decide before starting:
Narrower scope produces tighter, more useful libraries. "Whole app" is only worth it for apps you'll be building a direct analogue of.
Optional bias for capture. Examples:
If no focus is given, capture broadly.
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`.
Before deep-capture, scan the app once and list pattern types you'll document. Typical categories:
Not every app uses every category. Mark which apply.
For each route, capture exhaustively. Screenshots are cheap — err toward more.
Per meaningful element, capture:
| State | Trigger | |-------|---------| | Default | page loaded, nothing
Production workflow skills for Claude Code. Each skill guides Claude through a recipe to produce tangible output — scaffolded projects, generated assets, professional documents, deployed services. Ten plugins of practical, production-oriented skills.
Repo: jezweb/claude-skills
Hit the Cloudflare REST API directly for operations that wrangler and MCP can't handle well. Bulk DNS, custom hostnames, email routing, cache purge, WAF rules,…
Scaffold and deploy Cloudflare Workers with Hono routing, Vite plugin, and Static Assets. Describe project, scaffold structure, configure bindings, deploy. Use…
Generate Drizzle ORM schemas for Cloudflare D1 databases with correct D1-specific patterns. Produces schema files, migration commands, type exports, and…
Cloudflare D1 migration workflow: generate with Drizzle, inspect SQL for gotchas, apply to local and remote, fix stuck migrations, handle partial failures. Use…
Generate database seed scripts with realistic sample data. Reads Drizzle schemas or SQL migrations, respects foreign key ordering, produces idempotent…
Scaffold Hono API routes for Cloudflare Workers. Produces route files, middleware, typed bindings, Zod validation, error handling, and API_ENDPOINTS.md…