design-mockups

Create interactive HTML design mockups that render the app's real CSS and measure live DOM geometry.

Updated Jul 9, 2026
One-click install
npx skills add https://github.com/assafmanor/waypoint --skill design-mockups-assafmanor
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: design-mockups
Source: https://github.com/assafmanor/waypoint/tree/main/.claude/skills/design-mockups
Command: npx skills add https://github.com/assafmanor/waypoint --skill design-mockups-assafmanor

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires playwright, and includes scripts (resource) and references (resource) and assets (resource) components.

What problem does it solve? Design decisions for this app are often made from static drawings or hand-copied CSS, which hides real defects like RTL bidi flips, stacking bugs, and duplicated UI primitives until after code ships. This Skill produces interactive HTML mockups that inline the app's actual stylesheets, reproduce its real layout tree, and report measurements read from the rendered DOM, so a design decision can be falsified before it is built. ## Core Features & Use Cases - Real-CSS mockup authoring: Start from a template, declare an APP-CSS manifest of shipped stylesheets, and inline them in import order so the mockup renders exactly what the app renders, in both light and dark themes at phone widths. - Live measurement and rendering: A Playwright-based render script shoots every theme × width combination, prints the mockup's own measurement table, and reports console errors, catching defects that source review misses. - Reuse enforcement and pitfalls knowledge: References document the app's existing primitives (Modal, ListRow, RevealList, SettleControl) and a catalog of render-only pitfalls (bidi mirroring, inset shadows, font-loading traps) so mockups do not propose duplicate mechanisms. - Use Case: When asked to design a new screen or interaction, copy the template to mockups/<question>-v1.html, inline the relevant app CSS, build before/after frames from data, then run the render script and attach screenshots and measurements to the ADR. ## Quick Start Create a new design mockup for the proposed screen by copying the template into mockups/, inlining the app's CSS, and rendering it with the render script to review screenshots and measurements.

Frequently Asked Questions about design-mockups

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a design mockup that uses the app's real CSS?▼

Copy assets/mockup-template.html to mockups/<name>-v1.html, list the shipped stylesheets in the APP-CSS manifest in import order, then run node mockups/tools/inline-app-css.mjs to inline them. Reproduce the real component layout tree rather than approximating it.

How do I render and screenshot an HTML mockup with Playwright?▼

Run node .claude/skills/design-mockups/scripts/render.mjs mockups/<file>.html. It drives the file's own theme and width controls, captures full-page screenshots for every combination, prints the measurement table read from the live DOM, and reports console errors.

Why do numbers in my mockup measurement table look wrong?▼

Wrong measurements usually come from webfonts failing to load in a sandboxed session, so widths reflect a fallback typeface, or from measuring in the same tick as a height transition. The render script fetches fonts through curl and warns explicitly when no webfont loaded.

Why does my mockup page not scroll after inlining the app CSS?▼

The app's tokens.css declares html, body { overflow: clip }, which collapses scrollHeight to the viewport in a standalone mockup document. Keep the labelled html, body { overflow: visible } override block last in the template's chrome CSS.

When should I reuse an existing UI primitive instead of drawing a new one?▼

Always check the app's primitive inventory first: overlays use Modal and its wrappers, managed rows use ListRow/RowManageSheet, and animated lists use RevealList. A large hand-written CSS block in a mockup is the signal that an existing primitive went unused.