Responsive Breakpoints
SkillMediaLets your agent add, edit, and manage responsive breakpoints in a design across mobile, tablet, and desktop widths.
Use Responsive Breakpoints in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add Responsive Breakpoints and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the Responsive Breakpoints skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
About this skill
Framer-style responsive breakpoint editing in Design: one DOM tree per screen with cascading width-scoped overrides. Use when adding/removing breakpoints, editing a design at a specific device width, resolving which value renders at a width, or persisting responsive style changes.
What this skill tells your AI
The instructions your AI receives, as published by builderio/agent-native in templates/design/.agents/skills/responsive-breakpoints/SKILL.md and read by ahel’s review.
Design uses the Framer model: every screen is ONE document (one DOM tree). Breakpoint frames are the SAME document rendered at different viewport widths — never separate copies. Edits cascade:
- The base is the primary (widest) frame. Base edits are plain unprefixed classes / inline styles and cascade down to every narrower breakpoint unless overridden there.
- Edits made while a narrower breakpoint is active persist as width-scoped overrides that apply from just below the next-wider frame down to zero. Narrower breakpoints layer their own overrides on top.
The bound for an override is next-wider frame width - 1 (e.g. breakpoints
390/810 with a 1280 primary: editing 810 scopes to ≤ 1279px, editing 390
scopes to ≤ 809px). breakpointUpperBoundPx in
shared/responsive-classes.ts is the canonical implementation.
Managing breakpoints
A newly generated design's frame set comes from generate-design's devices
param (("mobile"|"tablet"|"desktop")[], default ["desktop","mobile"]). The
cascade is desktop-base: the widest requested device is the primary/base
frame and each narrower device is a breakpoint frame. The default injected set
is therefore a Desktop base plus a single Mobile (390) breakpoint frame — the
narrower frame(s) only, never a frame at the primary desktop width and never an
auto-added tablet.
add-breakpoint— adds a device-width frame todesigns.data.breakpointSet(Framer defaults: Desktop 1200 / Tablet 810 / Phone 390, or custom 320-3840). Duplicate widths are ignored.remove-breakpoint— removes one by id (overrides already written stay in the document until removed).set-active-breakpoint— persists the active edit scope to application state (design-active-breakpoint:<designId>); the UI mirrors it in thedesign-selectionstate (activeBreakpointId). Check the active breakpoint viaview-screenbefore making responsive-only edits. ItseditScopeiscascade-smallerby default (edits at this breakpoint also apply to every narrower one); passonlywhen the user explicitly wants a bounded, breakpoint-only override.
The UI's breakpoint bar (chips above the focused screen) and the overview's
side-by-side linked frames drive the same state — a chip click changes the
iframe viewport width AND calls set-active-breakpoint.
Editing responsively (agent parity)
Use apply-visual-edit with activeFrameWidthPx set to the ACTIVE
breakpoint frame width. This scopes BOTH class and style intents
uniformly through one class-vs-media decision:
- Values that are Tailwind utilities (
text-lg,p-4) become width-scoped classes:max-[809px]:text-lg(arbitrary max-width variants the Tailwind CDN JIT compiles to@media (max-width: 809px)). - Raw CSS values (
137px,rgb(...),calc(...)) persist into the managed<style data-agent-native-breakpoints>block as@media (max-width: <bound>px)rules targeting the element'sdata-agent-native-node-id. The block is deterministic (wider buckets first so narrower ranges win by source order) and readable/editable in the Code panel.
Other targeting options:
maxWidthPx— explicit desktop-down bound, overrides derivation.intent.kind: "breakpoint-style"— direct managed-media write/remove:{ target, maxWidthPx, property, value, operation: "set" | "remove" }.activeBreakpoint: "md"etc. — LEGACY min-width prefix scoping for class edits only (mobile-firstmd:text-lg). Still supported for documents authored mobile-first; preferactiveFrameWidthPxfor breakpoint-bar parity.
When the design has no breakpoint set, activeFrameWidthPx falls back to
the legacy min-width prefix behaviour for class edits. When the active frame
IS the widest context, edits are base writes (correct — the widest frame is
the base).
Resolving and inspecting overrides
effectiveUtilityAtWidth(className, stem, widthPx)— which utility renders at a width (narrowest applicable max-width scope wins, then min-width prefixes, then base).getBreakpointOverrideState({ className, html, nodeId, property, breakpointWidths, baseWidthPx, activeWidthPx })fromshared/breakpoint-media.ts— aggregates class + media overrides for the inspector's overridden-at-this-breakpoint indicators.- To RESET an override: remove the scoped class
(
responsive-classremove withmaxWidthPx+ stem) or the media rule (breakpoint-stylewithoperation: "remove"); the base value cascades back down.
Cautions
- Managed media rules anchor on
data-agent-native-node-id. Inline (SQL) designs keep these ids; localhost write-back strips them — for local-file sources prefer scoped classes. - Never rewrite the managed block wholesale by hand; use the edit intents so same-property writes replace instead of accumulate. The parser tolerates Code-panel edits but unknown selectors are ignored.
- Adding a breakpoint between two existing widths changes the bound for NEW overrides only; previously written overrides keep their original bounds.
Signals
- GitHub stars
- 7k
- Forks
- 635
- Last commit
- Oct 2026
Advanced
- Item type
- skill
- Key
responsive-breakpoints- Source
- github.com/builderio/agent-native
github.com/builderio/agent-native