Agent skill

Responsive Design

by epam in epam/ai-dial-chat

Responsive (mobile + desktop) layout workflow. An agent skill from epam/ai-dial-chat.

Apache-2.0Auto-check passedFrontend & Design

Install Responsive Design

skills CLI
$ npx skills add epam/ai-dial-chat --skill responsive-design -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install epam/ai-dial-chat responsive-design --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/epam/ai-dial-chat.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/responsive-design .claude/skills/responsive-design && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
responsive-design
GitHub stars
504
Token cost
~2.7k tokens
SKILL.md length
1,275 words
Files
1
Skills in repo
18
Repo updated
First seen
Licence
Apache-2.0

At a glance

Responsive (mobile + desktop) layout workflow. An agent skill from epam/ai-dial-chat.

  • Works in 4 steps: Fetch both frames in the design context… → If the design provides only desktop, ask… → Map Figma's responsive frame sizes to… → …
  • A UI change must work on both phones and desktops
  • SKILL.md covers Overview, Project breakpoints, When to use Tailwind prefixes… and Library Tailwind configs, plus 5 more sections
  • Calls npm

What it does

Responsive Design is an agent skill from epam/ai-dial-chat. Responsive (mobile + desktop) layout workflow. Use whenever a UI change must work on both phones and desktops, when implementing Figma frames that have separate mobile and desktop variants, or when reviewing a change for mobile parity.

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Frontend & Design, covering Responsive design. It works with Figma and Tailwind CSS. The repository describes itself as: A default UI for AI DIAL. The licence is Apache-2.0.

When your agent uses it

  • A UI change must work on both phones and desktops
  • Implementing Figma frames that have separate mobile and desktop variants
  • Reviewing a change for mobile parity

Example prompts

  • “/responsive-design”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Fetch both frames in the design context call — never implement one without inspecting the other
  2. If the design provides only desktop, ask before deriving a mobile version; do not guess
  3. Map Figma's responsive frame sizes to the closest named breakpoint (375/390/768/820/900 → mobile ≤1279px, 1280+ → desktop)
  4. Capture the divergences (drawer vs. sidebar, vertical vs. horizontal toolbar, hidden sections) before writing code; these drive whether…

What it can do on your machine

Read from SKILL.md and the folder at commit 933c12c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Responsive Design loads about 2.7k tokens when it runs. Until then it costs about 63 tokens; SKILL.md has 1,275 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~63
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from epam/ai-dial-chat at commit 933c12c, republished under its Apache-2.0 licence (© epam). 1,275 words, ~2,718 tokens.

Download SKILL.mdSave it as .claude/skills/responsive-design/SKILL.md (or your agent's skills folder).
name
responsive-design
description
Responsive (mobile + desktop) layout workflow. Use whenever a UI change must work on both phones and desktops, when implementing Figma frames that have separate mobile and desktop variants, or when reviewing a change for mobile parity.

Responsive design

Overview

The chat app must render correctly on mobile/tablet (≤1279px) and desktop (≥1280px). Desktop is the historical baseline — most existing code is desktop-only. Treat mobile-first as the authoring default for new and changed UI: write the base classes for the smallest supported viewport and add desktop overrides via desktop:.

Project breakpoints

Defined in tailwind.config.js (extend.screens) and inherited by all lib Tailwind configs via preset:

js
// tailwind.config.js — extend.screens
mobile: { max: '1279px' },  // ≤1279 px — phones and tablets
desktop: { min: '1280px' }, // ≥1280 px — laptops and monitors
PrefixRangeWhen to use
(no prefix)alwaysmobile-first base — smallest layout
mobile:≤1279 pxoverrides that apply only mobile/tablet
desktop:≥1280 pxoverrides that kick in on desktop

desktop: is a min-width prefix — styles cascade upward to all wider viewports.

Do not use small_tablet:, large_tablet:, large_desktop: — these prefixes are not in the config and Tailwind will silently ignore any class that uses them.

Do not use sm: / md: / lg: / xl: — the default Tailwind breakpoints exist in the config (via extend) but are out of scope for this project and should not be used.

When to use Tailwind prefixes vs. a JS hook

Default: Tailwind utility prefixes. They are SSR-safe, avoid first-paint flicker, and keep layout decisions in markup.

tsx
<aside className="hidden desktop:block">…</aside>
<button className="h-12 mobile:h-14">…</button>

Escape hatch: useBreakpoint / useIsMobile from apps/chat/src/hooks/breakpoint/useBreakpoint.ts. Reach for these only when:

  • A component must mount entirely different subtrees per breakpoint (e.g. drawer vs. persistent sidebar) and a CSS-only hidden/block swap would still mount both
  • An effect or imperative handler needs to branch on viewport size (focus, autoplay, virtualisation row count)
  • A third-party component accepts a prop that toggles its mobile layout

Never call window.matchMedia directly inside components — go through the hook so the SSR fallback, listener cleanup, and breakpoint names stay consistent.

Library Tailwind configs

apps/chat/tailwind.config.js presets the root config and so inherits the named breakpoints. The component libs (libs/conversation-input, libs/conversation-messages, and any future libs/* that ships Tailwind classes) must also presets: [require('../../tailwind.config.js')]:

js
module.exports = {
  presets: [require('../../tailwind.config.js')],
  content: [join(__dirname, 'src/**/*.{ts,tsx}')],
};
Why presetting matters

Libs build their own CSS in isolation (via vite build on the lib) and that CSS is what consumers may ultimately ship. Without the preset, an isolated lib build:

  • compiles mobile: / desktop: as unknown prefixes and silently drops them — responsive utilities authored in the lib disappear from the emitted CSS;
  • loses every project token (bg-layer-1, text-primary, the entire controls-* family, fonts, shadows) because those live on the root config's theme — classes referencing them fall back to Tailwind defaults, which means the lib ships visibly wrong colors in any context that does not also run the host app's Tailwind pass over the lib's source.

Re-declaring the theme inline per lib would duplicate ~150 lines of tokens and introduce silent drift the next time someone adds a colour to the root config. The preset keeps a single source of truth.

Why this is allowed by @nx/enforce-module-boundaries

The require('../../tailwind.config.js') import crosses the Nx project boundary into the workspace root — exactly the kind of import the @nx/enforce-module-boundaries rule normally rejects. We do not punch a per-path allow hole for it. Instead, the rule is scoped in eslint.config.mjs to source files only (**/src/**/*.{ts,tsx,js,jsx,…}). Project-root build configs (tailwind.config.js, vite.config.ts, eslint.config.mjs) are workspace-level tooling, not application source code, so the boundary rule does not police them — which matches what that rule was designed to enforce. If you add a new lib that ships Tailwind classes, just author its tailwind.config.js with the same preset; no eslint changes are needed.

This tooling exception does not weaken source-code isolation. Hand-authored files under libs/*/src must still avoid host-owned integration knowledge (API/server-api/generated-client/auth/session/env/ feature flags/routing/storage/analytics/telemetry/SDKs/platform bridges/etc.) and receive app behavior through props, callbacks, or resolved values. libs/chat-api-client/src/generated is the generated OpenAPI-client exception.

Mobile-first authoring checklist

When implementing or modifying a component:

  • Base classes describe the mobile layout — overrides target larger breakpoints
  • Touch targets are at least 44×44 CSS px on mobile (use mobile: to bump a desktop-sized control when needed)
  • No horizontal scroll at 360px width (test in DevTools device emulation)
  • Long text wraps (break-words / min-w-0 on flex children) rather than overflowing
  • Modals, popovers, and dropdowns are reachable and dismissable on touch (no :hover-only affordances)
  • Inputs use the correct inputmode / type so mobile keyboards show the right layout
  • Sticky and fixed elements account for mobile browser chrome (dvh/svh over vh when relevant)
  • Conditional layouts that swap components use useBreakpoint, not window.innerWidth reads
  • If the change adds new strings, they fit at 360px without truncation in the supported locales

Figma alignment

When a Figma file has separate mobile and desktop frames:

  1. Fetch both frames in the design context call — never implement one without inspecting the other
  2. If the design provides only desktop, ask before deriving a mobile version; do not guess
  3. Map Figma's responsive frame sizes to the closest named breakpoint (375/390/768/820/900 → mobile ≤1279px, 1280+ → desktop)
  4. Capture the divergences (drawer vs. sidebar, vertical vs. horizontal toolbar, hidden sections) before writing code; these drive whether you need the hook
Show full SKILL.md (486 more words)Show less

Verification

For any responsive change:

  1. DevTools — exercise the feature at 360 and 900 (mobile/tablet) and 1280, 1920 (desktop)
  2. Touch — verify interactive elements work without hover (use the DevTools touch simulator)
  3. Unit tests — when a component branches on useBreakpoint, add a test per branch by mocking the hook
  4. Lint / typecheck — npm exec nx lint chat, npm exec nx test chat for the projects you touched
  5. Note in the PR which breakpoints were exercised; a "verified desktop only" change is incomplete

Running a responsiveness check with MCP Playwright

Only run this when the user explicitly asks ("check responsiveness", "verify mobile", "go over screens", etc.). Do not run it proactively after every UI change.

Scope = what the user specifies. If the user names a page or feature, check only that. If they say "current feature", limit scope to the components touched by the current branch. Do not audit the whole app unprompted.

The app at http://localhost:4207 requires Keycloak auth — the MCP browser must log in before screenshots are useful.

Setup

Playwright MCP is pre-configured in .mcp.json — no manual setup needed. It starts automatically with the project.

Audit workflow
  1. Navigate to http://localhost:4207 — the browser window opens visibly (Chrome, headed by default)
  2. If redirected to Keycloak login, tell the user: "A Chrome window opened — please log in so I can proceed", then wait with mcp__playwright__browser_wait_for (textGone: "Sign in to dial", time: 120)
  3. Navigate to the specific page/feature the user asked about (or the one touched by the current branch)
  4. For each relevant viewport — 360 and 900 for mobile/tablet, 1280 and 1920 for desktop:
    • mcp__playwright__browser_resize to set width × height
    • Screenshot the specific screen/component under review
    • Run mcp__playwright__browser_evaluate to detect horizontal overflow:
      js
      [...document.querySelectorAll('*')]
        .filter(
          (el) =>
            el.getBoundingClientRect().width >
            document.documentElement.clientWidth + 2,
        )
        .map((el) => ({
          tag: el.tagName,
          cls: el.className?.toString().slice(0, 60),
          w: Math.round(el.getBoundingClientRect().width),
        }))
        .slice(0, 10);
    • On mobile/tablet widths (≤1279), also check touch targets:
      js
      [...document.querySelectorAll('button,a,[role="button"]')]
        .filter((el) => {
          const r = el.getBoundingClientRect();
          return r.width > 0 && (r.width < 44 || r.height < 44);
        })
        .map((el) => ({
          tag: el.tagName,
          text: el.textContent?.trim().slice(0, 30),
          w: Math.round(el.getBoundingClientRect().width),
          h: Math.round(el.getBoundingClientRect().height),
        }))
        .slice(0, 15);
  5. Check each screenshot visually using the Read tool (it renders images inline)
  6. Report findings grouped by viewport with screenshot paths
Key things to look for
  • Horizontal scroll at 360px
  • Text overflow / clipping
  • Touch targets < 44×44px on mobile
  • Sidebar visible on desktop but missing toggle on mobile
  • Fixed/sticky elements obscuring content on small screens
  • Modals fitting within the viewport

Anti-patterns

  • className={isMobile ? 'flex-col' : 'flex-row'} — use flex-col desktop:flex-row instead
  • Reading window.innerWidth in render or effects — use useBreakpoint
  • Hiding mobile UI with display:none while still mounting heavy subtrees — branch with the hook
  • Authoring desktop-first and then trying to reset on mobile: — invert it
  • Using sm: / md: / lg: / xl: — they are not configured here
  • Using small_tablet:, large_tablet:, or large_desktop: — these prefixes do not exist and are silently ignored by Tailwind
  • Adding min-[820px]: arbitrary queries — use the named breakpoints in the root config instead
  • Implementing a Figma desktop frame without checking whether a mobile variant exists

© epam, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/responsive-design of epam/ai-dial-chat.

Open the folder on GitHubat commit 933c12c

Compare with similar skills

Responsive Design next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Responsive Design compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Responsive Design this skillepam/ai-dial-chat504—~2.7kAutomated safety check: PassApache-2.0
UI StylingOhh-889/skyroc79513 repos~2.5kAutomated safety check: PassMIT
Design To CodeMigoXLab/coderio1142 repos~1.2kAutomated safety check: PassApache-2.0
Extract DesignManavarya09/design-extract4.2k—~786Automated safety check: NotesMIT
Refero Designreferodesign/refero_skill292—~5.3kAutomated safety check: PassMIT
Material Design 3 UI/UX Guideskydashnet/material-design-3-ui-skill130—~3kAutomated safety check: PassMIT

Similar skills

  • UI Styling

    Ohh-889/skyroc

    Create beautiful, accessible user interfaces with shadcn/ui components (built on Radix UI + Tailwind), Tailwind CSS utility-first styling, and canvas-based visual designs.

    795 GitHub starsUsed in 13 repos~2.5k tokens
    Frontend & DesignAuto-check passed
  • Design To Code

    MigoXLab/coderio

    Pixel-perfect Figma to React conversion using coderio. An agent skill from MigoXLab/coderio.

    114 GitHub starsUsed in 2 repos~1.2k tokens
    Frontend & DesignAuto-check passed
  • Extract Design

    Manavarya09/design-extract

    Extract the full design language from any website URL. An agent skill from Manavarya09/design-extract.

    4.2k GitHub stars~786 tokensUpdated 8 days ago
    Frontend & DesignAuto-check: notes
  • Refero Design

    referodesign/refero_skill

    Primary/default skill for UI design, product design, web design, landing pages, dashboards, product screens, redesigns, visual polish, frontend/CSS styling, design systems, components, responsive…

    292 GitHub stars~5.3k tokensUpdated 1 mo ago
    Frontend & DesignAuto-check passed
  • Material Design 3 UI/UX Guide

    skydashnet/material-design-3-ui-skill

    Guides designing, reviewing or implementing interfaces that follow Google's Material Design 3 system: semantic tokens, component states, adaptive layout and accessibility.

    130 GitHub stars~3k tokensUpdated 7 days ago
    Frontend & DesignAuto-check passed
  • Tailwind CSS Patterns

    ever-works/ever-works

    Provides comprehensive Tailwind CSS utility-first styling patterns including responsive design, layout utilities, flexbox, grid, spacing, typography, colors, and modern CSS best practices.

    158 GitHub starsUsed in 3 repos~1.6k tokens
    Frontend & DesignAuto-check: notes

More from epam/ai-dial-chat

All 18 skills in this repo
  • Refactoring Audit

    epam/ai-dial-chat

    Deep codebase refactoring audit for AI DIAL Chat. An agent skill from epam/ai-dial-chat.

    504 GitHub stars~4.3k tokensUpdated today
    Auto-check passed
  • Read unresolved GitHub code review threads for the pull request associated with the current branch, classify each comment, and implement and verify required code fixes.

    504 GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Create Ticket

    epam/ai-dial-chat

    Interactively create OR update GitHub issues (Bug, Feature, Task) for the current repository.

    504 GitHub stars~4.6k tokensUpdated today
    Auto-check passed
  • Dep Scan

    epam/ai-dial-chat

    Runs Trivy filesystem scan against the repo root and emits structured vulnerability findings (CVE, package, versions) in the SDLC reviewer schema.

    504 GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Figma

    epam/ai-dial-chat

    Design-to-code workflow for Figma designs. An agent skill from epam/ai-dial-chat.

    504 GitHub stars~997 tokensUpdated today
    Auto-check passed
  • Git Ship

    epam/ai-dial-chat

    A skill your agent uses whenever the user wants to commit, push, or ship changes in a git repository.

    504 GitHub stars~1.2k tokensUpdated today
    Auto-check passed

Questions about Responsive Design

What does Responsive Design do?

Responsive (mobile + desktop) layout workflow. An agent skill from epam/ai-dial-chat. Responsive Design is an agent skill from epam/ai-dial-chat. Responsive (mobile + desktop) layout workflow.

When should I use Responsive Design?

Responsive Design fits situations like: A UI change must work on both phones and desktops; implementing Figma frames that have separate mobile and desktop variants; reviewing a change for mobile parity.

How do I install Responsive Design in Claude Code?

Run `npx skills add epam/ai-dial-chat --skill responsive-design -a claude-code`. Or copy the skill folder (.claude/skills/responsive-design in epam/ai-dial-chat) into .claude/skills/responsive-design in your project. Claude Code loads it when a task matches its description.

How do I install Responsive Design in Codex?

Run `npx skills add epam/ai-dial-chat --skill responsive-design -a codex`. Or copy the skill folder (.claude/skills/responsive-design in epam/ai-dial-chat) into .agents/skills/responsive-design in your project. Codex loads it when a task matches its description.

Can I use Responsive Design in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add epam/ai-dial-chat --skill responsive-design -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/responsive-design, .gemini/skills/responsive-design, .github/skills/responsive-design and .opencode/skills/responsive-design in your project.

What does Responsive Design need to run?

Going by SKILL.md and its folder, Responsive Design needs the command-line tools its instructions call (npm).

Does Responsive Design access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Responsive Design safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Responsive Design use?

Responsive Design is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Responsive Design use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Responsive Design?

Skills that share tags, products or a category with Responsive Design: UI Styling (Ohh-889/skyroc, 795 stars), Design To Code (MigoXLab/coderio, 114 stars), Extract Design (Manavarya09/design-extract, 4.2k stars) and Refero Design (referodesign/refero_skill, 292 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Responsive Design?

epam (a GitHub organization) maintains it in epam/ai-dial-chat, which has 504 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 7, 2026.

Source: epam/ai-dial-chat on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.