home / skills / ancoleman / ai-design-components / designing-layouts
This skill guides designing responsive layouts with grids, flexbox, and container queries to build adaptable, accessible interfaces.
npx playbooks add skill ancoleman/ai-design-components --skill designing-layoutsReview the files below or copy the command above to add this skill to your agents.
---
name: designing-layouts
description: Designs layout systems and responsive interfaces including grid systems, flexbox patterns, sidebar layouts, and responsive breakpoints. Use when structuring app layouts, building responsive designs, or creating complex page structures.
---
# Layout Systems & Responsive Design
## Purpose
This skill provides comprehensive guidance for creating responsive layout systems using modern CSS techniques. It covers grid systems, flexbox patterns, container queries, spacing systems, and mobile-first design strategies to build flexible, accessible interfaces that adapt seamlessly across devices.
## When to Use
Invoke this skill when:
- Building responsive admin dashboards with sidebars and headers
- Creating grid-based layouts for content cards or galleries
- Implementing masonry or Pinterest-style layouts
- Designing split-pane interfaces with resizable panels
- Establishing responsive breakpoint systems
- Structuring application shells with navigation and content areas
- Building mobile-first responsive designs
- Creating flexible spacing and container systems
## Layout Patterns
### Grid Systems
For structured, two-dimensional layouts, use CSS Grid with design tokens.
**12-Column Grid:**
```css
.grid-container {
display: grid;
grid-template-columns: repeat(12, 1fr);
gap: var(--grid-gap);
max-width: var(--container-max-width);
margin: 0 auto;
padding: 0 var(--container-padding-x);
}
.col-span-6 { grid-column: span 6; }
.col-span-4 { grid-column: span 4; }
.col-span-3 { grid-column: span 3; }
```
**Auto-Fit Responsive Grid:**
```css
.auto-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr));
gap: var(--grid-gap);
}
```
For complex grid layouts and advanced patterns, see `references/layout-patterns.md`.
### Flexbox Patterns
For one-dimensional layouts and alignment control.
**Holy Grail Layout:**
```css
.holy-grail {
display: flex;
flex-direction: column;
min-height: 100vh;
}
.holy-grail__body {
flex: 1;
display: flex;
}
.holy-grail__nav {
width: var(--sidebar-width);
flex-shrink: 0;
}
.holy-grail__main {
flex: 1;
min-width: 0; /* Prevent overflow */
}
.holy-grail__aside {
width: var(--sidebar-width);
flex-shrink: 0;
}
```
For additional flexbox patterns including sticky footer and centering, see `references/css-techniques.md`.
### Container Queries
For component-responsive design that adapts based on container size, not viewport.
```css
.card-container {
container-type: inline-size;
container-name: card;
}
@container card (min-width: 400px) {
.card {
grid-template-columns: auto 1fr;
gap: var(--spacing-lg);
}
}
@container card (min-width: 600px) {
.card {
grid-template-columns: 200px 1fr auto;
}
}
```
Container queries are production-ready in all modern browsers (2025). For detailed usage and fallback strategies, see `references/responsive-strategies.md`.
## Responsive Breakpoints
Use mobile-first approach with semantic breakpoints.
```css
/* Mobile-first breakpoints using design tokens */
@media (min-width: 640px) { /* sm: Tablet portrait */
.container { max-width: 640px; }
}
@media (min-width: 768px) { /* md: Tablet landscape */
.container { max-width: 768px; }
}
@media (min-width: 1024px) { /* lg: Desktop */
.container { max-width: 1024px; }
}
@media (min-width: 1280px) { /* xl: Wide desktop */
.container { max-width: 1280px; }
}
@media (min-width: 1536px) { /* 2xl: Ultra-wide */
.container { max-width: 1536px; }
}
```
For fluid typography and advanced responsive techniques, see `references/responsive-strategies.md`.
## Spacing Systems
Implement consistent spacing using design tokens.
```css
/* Base unit: 4px or 8px */
:root {
--spacing-xs: 4px;
--spacing-sm: 8px;
--spacing-md: 16px;
--spacing-lg: 24px;
--spacing-xl: 32px;
--spacing-2xl: 48px;
--spacing-3xl: 64px;
}
/* Apply systematically */
.section { padding: var(--section-spacing) 0; }
.container { padding: 0 var(--container-padding-x); }
.card { padding: var(--spacing-lg); }
.stack > * + * { margin-top: var(--spacing-md); }
```
## CSS Framework Integration
### Tailwind CSS
For utility-first approach with custom configuration:
```javascript
// tailwind.config.js
module.exports = {
theme: {
extend: {
spacing: {
'xs': 'var(--spacing-xs)',
'sm': 'var(--spacing-sm)',
'md': 'var(--spacing-md)',
'lg': 'var(--spacing-lg)',
'xl': 'var(--spacing-xl)',
},
screens: {
'sm': '640px',
'md': '768px',
'lg': '1024px',
'xl': '1280px',
'2xl': '1536px',
}
}
}
}
```
For Tailwind patterns and optimization, see `references/library-guide.md`.
## How to Use
### 1. Define Layout Requirements
Determine layout type and responsive behavior needed.
### 2. Choose Layout Method
- **CSS Grid**: Two-dimensional layouts, complex grids
- **Flexbox**: One-dimensional layouts, alignment
- **Container Queries**: Component-responsive designs
### 3. Implement with Design Tokens
Use design tokens from `skills/design-tokens/` for consistent spacing, breakpoints, and sizing.
### 4. Generate Configurations
For responsive breakpoints:
```bash
node scripts/generate_breakpoints.js --approach mobile-first
```
For fluid typography scale:
```bash
node scripts/calculate_fluid_typography.js --min-vw 320 --max-vw 1920
```
### 5. Validate Accessibility
Check semantic HTML and landmark regions:
```bash
node scripts/validate_layout_accessibility.js path/to/component.tsx
```
### 6. Test Responsiveness
Test across device sizes using responsive preview tools and actual devices.
## Scripts
- `scripts/generate_breakpoints.js` - Generate responsive breakpoint system
- `scripts/calculate_fluid_typography.js` - Calculate fluid typography scales
- `scripts/validate_layout_accessibility.js` - Validate semantic HTML and ARIA landmarks
## References
- `references/layout-patterns.md` - Common layout patterns (sidebar, masonry, split-pane)
- `references/responsive-strategies.md` - Mobile-first design and responsive techniques
- `references/css-techniques.md` - Modern CSS features (Grid, Flexbox, Container Queries)
- `references/accessibility-layouts.md` - Semantic HTML and ARIA landmarks
- `references/library-guide.md` - Framework integration (Tailwind, styled-components)
- `references/performance-optimization.md` - CSS performance and layout thrashing
## Examples
- `examples/admin-layout.tsx` - Complete admin dashboard with sidebar
- `examples/responsive-grid.tsx` - Auto-responsive grid system
- `examples/masonry-layout.tsx` - Pinterest-style masonry grid
- `examples/split-pane.tsx` - Resizable split-pane interface
## Assets
- `assets/breakpoint-config.json` - Standard breakpoint configurations
- `assets/layout-templates.json` - Common layout templates
- `assets/spacing-scale.json` - Spacing system configurationsThis skill designs robust layout systems and responsive interfaces using modern CSS techniques. It covers grid systems, flexbox patterns, container queries, spacing tokens, and mobile-first breakpoints to create flexible, accessible layouts. Use it to structure application shells, dashboards, galleries, and complex page compositions that adapt across devices.
The skill inspects layout requirements, recommends a layout method (Grid, Flexbox, or Container Queries), and applies design tokens for consistent spacing and breakpoints. It supplies patterns and configuration scripts to generate responsive breakpoints, fluid typography, and accessibility checks. It includes practical templates (sidebar, masonry, split-pane) and integration guidance for utility frameworks like Tailwind.
When should I use container queries instead of media queries?
Use container queries when a component’s layout must adapt to its container size rather than the viewport, such as cards in varying grid widths. Use media queries for page-level breakpoint adjustments.
How do I choose between Grid and Flexbox?
Choose Grid for two-dimensional layouts with rows and columns. Choose Flexbox for one-dimensional layouts or fine alignment within a single axis. Combine both when needed.