algorithmic-color-pale…
Derive a full UI palette from one or two brand colours — state variants, brand-tinted greys, semantic colours. Use when building…
Avoid inner scroll containers; when unavoidable, one axis at a time. Use when a layout, table or panel might scroll inside the page.
Claude Code
$ npx -y skills add dembrandt/dembrandt-skills --skill scroll-areas --agent claude-code
Codex
$ npx skills add dembrandt/dembrandt-skills --skill scroll-areas -a codex -y
Cursor
$ npx skills add dembrandt/dembrandt-skills --skill scroll-areas -a cursor -y
Gemini CLI
$ npx skills add dembrandt/dembrandt-skills --skill scroll-areas -a gemini-cli -y
GitHub Copilot
$ npx skills add dembrandt/dembrandt-skills --skill scroll-areas -a github-copilot -y
OpenCode
$ npx skills add dembrandt/dembrandt-skills --skill scroll-areas -a opencode -y
Windsurf
$ npx skills add dembrandt/dembrandt-skills --skill scroll-areas -a windsurf -y
name: scroll-areas
description: Avoid inner scroll containers; when unavoidable, one axis at a time. Use when a layout, table or panel might scroll inside the page.
metadata:
priority: 7
pathPatterns:
- "**/*.css"
- "**/*.scss"
- "components/**"
- "src/components/**"
- "**/*.tsx"
- "**/*.jsx"
- "design-system/**"
promptSignals:
phrases:
- "scroll"
- "overflow"
- "scrollable"
- "inner scroll"
- "fixed height"
- "overflow-y"
- "overflow-x"
retrieval:
aliases:
- scroll areas
- inner scroll
- overflow scroll
- nested scroll
- scrollable container
intents:
- avoid scroll inside scroll
- design a scrollable list
- handle overflow content
- layout with constrained height
examples:
- should this panel scroll independently
- how do I handle a long list inside a fixed layout
- avoid scroll inside scrollScroll containers inside a layout — panels, drawers, tables, modals with inner overflow — create friction. Users must discover that a region scrolls, manage multiple independent scroll positions simultaneously, and context-switch between scroll areas on the same screen.
**Default: let the page scroll.** A single page-level scroll is universally understood and requires no discovery. Before introducing an inner scroll area, ask whether the layout can be restructured so the page itself handles the overflow.
Alternatives to inner scroll:
Some layouts genuinely require inner scroll:
In these cases, proceed — but apply the constraints below.
Never create a scroll container that scrolls on both axes simultaneously. Two-axis scroll is disorienting, hard to control precisely, and nearly unusable on touch devices.
/* One axis: vertical */ overflow-y: auto; overflow-x: hidden; /* One axis: horizontal (e.g. wide table) */ overflow-x: auto; overflow-y: hidden; /* Never */ overflow: auto; /* allows both axes */
If content requires both axes — e.g. a wide table inside a constrained panel — restructure the layout so the table's horizontal scroll is the only scroll in the view, with the page itself not scrolling at that point.
Scroll must never happen automatically without user intent. Specifically:
Exception: chat and log panels may auto-scroll to the bottom on new content, but only if the user is already at the bottom. If the user has scrolled up to read, do not force them back down — show a "new messages" indicator instead.
Users must be able to tell a region is scrollable before they attempt to scroll it.
Neither cue is reliable: overlay scrollbars (macOS, touch) appear only while scrolling, and a clipped item signals more only when the cut lands mid-item. **Give every nested scroll region an edge cue**: a shadow or fade shown only at an edge with hidden content. Gradients with `background-attachment: local` over shadows with `scroll` do this in pure CSS, but opaque row backgrounds cover them; there, fade the content with `mask-image`.
Enterprise UX secrets, now built into your AI agent. Your agent writes the component in seconds. It does not know the modal should be a drawer, or that the grey it picked fails contrast. These skills carry that judgment: what to do, and what breaks otherwise.
Derive a full UI palette from one or two brand colours — state variants, brand-tinted greys, semantic colours. Use when building…
Top bar, sidebar rail, app launcher, tenant and environment cue, status bar. Use when designing the persistent shell, a…
Product visuals must show the real product with real data. Use when building landing pages, hero sections, screenshots or demo…
Shape language across type, radius and icons carries brand personality. Use when starting a design system, picking icons or…
Rest, hover, active, focus, disabled and loading states, derived from the base colour. Use when designing buttons, links, inputs…
Rebuild a live web page 1:1 from measurement into Figma, Penpot or code, then verify it. Use when reproducing a page or checking…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.