← ClaudeAtlas

web-layoutlisted

Use when building page structure, spacing, grids, dashboards, app shells, landing composition, responsive layout, scroll ownership, or visual hierarchy. Decides viewport-locked vs document-scroll frames and loads surface recipes for landing/dashboard/shell. Distilled from ui-craft, impeccable, taste-skill, shadcn-layouts, interface-design.
bo-516/NiceDesign · ★ 1 · Web & Frontend · score 74
Install: claude install-skill bo-516/NiceDesign
# Web Layout Rules only. One skill: core below + surface recipes in `references/`. **Before coding any non-trivial surface:** run §Frame, then §Plan, then load the matching recipe. | Surface | Load | |---------|------| | Landing / marketing / portfolio | [references/landing.md](references/landing.md) | | Dashboard / admin / analytics | [references/dashboard.md](references/dashboard.md) | | App chrome / sidebar / scroll regions | [references/shell.md](references/shell.md) | | Mixed | shell + the primary surface recipe | ## Frame (decide first, before any markup) Two frames. Pick one **by name** and say which, in one line, before writing code. | | `fixed` — viewport-locked | `document` — page scrolls | |---|---|---| | For | console, dashboard, editor, canvas, chat, IDE, tool | landing, marketing, docs, article, long form, auth | | Root | `h-dvh overflow-hidden flex` | `min-h-dvh flex flex-col` | | Scrolls | regions, each with its own scroller | the document | | Chrome | permanently visible, `shrink-0` | `sticky top-0` header | **Test:** must the sidebar / topbar stay visible while the user reads? → `fixed`. Mixed page = `document` outside, a `fixed`-style panel with its own scroller inside. **The one mistake that defines this skill:** a `fixed` frame written with `min-height: 100dvh` instead of `height`. `min-height` grows with content, so the shell becomes as tall as the *document*, not the *viewport* — the sidebar stretches past the fold and scrolls away, and any tall