Use when creating responsive breakpoints, media query tokens, or mobile-first layout systems. Supports container queries.
/plugin marketplace add dylantarre/design-system-skills/plugin install design-system-skills@design-system-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Generate consistent responsive breakpoint tokens for mobile-first or desktop-first design. Includes common device-based presets and custom configuration options.
| Name | Min Width | Target Devices |
|---|---|---|
| xs | 0 | Small phones |
| sm | 640px | Large phones, small tablets |
| md | 768px | Tablets portrait |
| lg | 1024px | Tablets landscape, laptops |
| xl | 1280px | Desktops |
| 2xl | 1536px | Large desktops |
| Preset | Values | Character |
|---|---|---|
| Tailwind | 640, 768, 1024, 1280, 1536 | Content-focused |
| Bootstrap | 576, 768, 992, 1200, 1400 | Traditional |
| Material | 600, 905, 1240, 1440 | Google spec |
| Minimal | 640, 1024, 1440 | Simple 3-tier |
CSS Custom Properties + Media Queries:
:root {
--breakpoint-sm: 640px;
--breakpoint-md: 768px;
--breakpoint-lg: 1024px;
--breakpoint-xl: 1280px;
--breakpoint-2xl: 1536px;
}
/* Mobile-first media queries (use with @media) */
/* @media (min-width: 640px) - sm and up */
/* @media (min-width: 768px) - md and up */
/* @media (min-width: 1024px) - lg and up */
/* @media (min-width: 1280px) - xl and up */
/* @media (min-width: 1536px) - 2xl and up */
Tailwind Config:
module.exports = {
theme: {
screens: {
'sm': '640px',
'md': '768px',
'lg': '1024px',
'xl': '1280px',
'2xl': '1536px',
}
}
}
JSON Tokens:
{
"breakpoint": {
"sm": { "value": "640px", "type": "dimension" },
"md": { "value": "768px", "type": "dimension" },
"lg": { "value": "1024px", "type": "dimension" },
"xl": { "value": "1280px", "type": "dimension" },
"2xl": { "value": "1536px", "type": "dimension" }
}
}
SCSS Variables + Mixins:
$breakpoint-sm: 640px;
$breakpoint-md: 768px;
$breakpoint-lg: 1024px;
$breakpoint-xl: 1280px;
$breakpoint-2xl: 1536px;
@mixin sm-up {
@media (min-width: $breakpoint-sm) { @content; }
}
@mixin md-up {
@media (min-width: $breakpoint-md) { @content; }
}
@mixin lg-up {
@media (min-width: $breakpoint-lg) { @content; }
}
@mixin xl-up {
@media (min-width: $breakpoint-xl) { @content; }
}
@mixin 2xl-up {
@media (min-width: $breakpoint-2xl) { @content; }
}
// Usage: @include md-up { .element { width: 50%; } }
Modern CSS container queries for component-level responsiveness:
/* Container query breakpoints */
:root {
--container-sm: 320px;
--container-md: 480px;
--container-lg: 640px;
--container-xl: 800px;
}
/* Define container */
.card-container {
container-type: inline-size;
container-name: card;
}
/* Query container */
@container card (min-width: 480px) {
.card-content {
display: grid;
grid-template-columns: 1fr 1fr;
}
}
| Approach | Media Query | Write Styles For |
|---|---|---|
| Mobile-first | min-width | Small screens first, enhance up |
| Desktop-first | max-width | Large screens first, reduce down |
Mobile-first (recommended):
.element { width: 100%; }
@media (min-width: 768px) { .element { width: 50%; } }
@media (min-width: 1024px) { .element { width: 33%; } }
Desktop-first:
.element { width: 33%; }
@media (max-width: 1023px) { .element { width: 50%; } }
@media (max-width: 767px) { .element { width: 100%; } }
/* Visibility utilities */
.hidden { display: none; }
.sm\:block { @media (min-width: 640px) { display: block; } }
.md\:hidden { @media (min-width: 768px) { display: none; } }
/* Responsive grid */
.grid-cols-1 { grid-template-columns: 1fr; }
.md\:grid-cols-2 { @media (min-width: 768px) { grid-template-columns: repeat(2, 1fr); } }
.lg\:grid-cols-3 { @media (min-width: 1024px) { grid-template-columns: repeat(3, 1fr); } }