From Design I/O & QA
Guides users through Claude Design (claude.ai/design) workflow from mockup to production code. Covers project creation, prompt structure, handoff bundle handling, and pixel-perfect translation into code.
How this skill is triggered — by the user, by Claude, or both
Slash command
/design-io:claude-designThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Production-tested workflow для Claude Design (`claude.ai/design`) — браузерного AI-инструмента дизайн-мокапов от Anthropic. Юзер мокапит UI в HTML/CSS/JS через диалог с AI, экспортирует bundle, coding-agent (я) переношу в production-код.
Production-tested workflow для Claude Design (claude.ai/design) — браузерного AI-инструмента дизайн-мокапов от Anthropic. Юзер мокапит UI в HTML/CSS/JS через диалог с AI, экспортирует bundle, coding-agent (я) переношу в production-код.
design-handoff/ или похожая (распакованный zip-bundle)claude.ai/design/...claude.ai/design — отдельный продукт Anthropic. Юзер открывает страницу, общается с AI, тот рисует UI в живом HTML+CSS+JS prototype-формате. Можно итерировать в чате («сделай темнее», «добавь sidebar», «как в Linear»), загружать референсные скриншоты, экспортировать готовое.
Не путать с Figma plugin / claude.ai chat / artifacts. Это самостоятельный design-tool.
Output — Handoff zip-bundle, который юзер скачивает и кладёт в проект.
https://claude.ai/design (часть подписки Claude — Pro / Max / Team)claude.ai/new (это обычный chat) или claude.ai/artifacts+ New project (или Create new)Academy — Billing Dashboarddeck-stage.js (~75KB) — канвас-движок слайдов 1920×1080: thumbnails слева, deck controls (prev/next/Reset), кнопка Present в шапке, печать в PDF = одна страница на слайд из коробки<Name>.html), слайды = <section class="slide-dark|slide-light">scratchpad.md → styles → слайды по очереди → само-ревью со скриншотами (сам находит и чинит overflow/наезды на футер). Полный цикл 5 слайдов ≈ 8–12 минутНе «сделай красивый dashboard». Структурированный промпт:
Контекст: <что за продукт, кому, на каком языке>
Задача: <что именно за экран>
Бренд: <ключевые цвета, шрифты, тон>
Состав: <какие блоки нужны>
Адаптив: desktop 1440 + tablet 768 + mobile 375
Стиль-референс: <ссылка на скриншот хорошего сайта или название>
Особое: <accessibility, dark mode, états>
Контекст: <Название> — онлайн-платформа про AI.
Аудитория <ваша ЦА>.
Задача: страница /dashboard/billing — личный биллинг юзера.
Бренд: основной #2563EB, ink #0F172A, акцент cyan #38BDF8, cream #F4F1EA.
Шрифты: Inter Tight (heading), Manrope (body), JetBrains Mono (numbers).
Состав:
- Hero с текущим тарифом (ваш текущий тариф) и датой следующего списания
- История платежей (таблица с date, amount, status, invoice link)
- Способ оплаты (карта в маске)
- Кнопка «Отменить подписку» (модалка confirm)
- Кнопка «Сменить тариф» (ссылка на /pricing)
Адаптив: desktop 1440 + mobile 375
Dark mode: да
Стиль-референс: как Linear billing, но с нашим брендом.
A11y: focus rings, контраст AA для всех текстов.
Состояния: loading skeleton + empty state (нет истории платежей).
В правом side-panel — чат с AI. Уточнения:
Каждое сообщение AI перерисовывает canvas. Можно откатить через History (если запутался).
+ Add screen или + New pageHandoff (или Export, иконка ↓)<project-name>.zipdesign-handoff/ в корне проекта (если ещё нет)design-handoff/billing/, design-handoff/landing/, design-handoff/admin/design-handoff/billing/academy-billing/design-handoff/billing/academy-billing.zipФормулировка в чате:
В design-handoff/billing/academy-billing/ лежит handoff
из Claude Design для страницы /dashboard/billing.
Прочитай README + главный HTML целиком, потом перенеси в код проекта,
используя существующие tokens из globals.css и компоненты из
components/<area>/. Сначала покажи план — какие файлы создашь,
какие токены добавишь в globals.css. После плана — реализуй.
Я (Claude Code) автоматически инициирую этот skill, прочту bundle, дам план, и после твоего «го» реализую.
URL Claude Design мокапа стабильный (claude.ai/design/<id>). Стоит сохранять рядом с handoff в design-handoff/<area>/SOURCE.md:
# Source
- Claude Design URL: https://claude.ai/design/<id>
- Author: <автор>
- Iterations: 7
Когда нужно поправить дизайн — открыть URL, продолжить работу, новый handoff. Без потери контекста.
Иногда пользователь просит зайти в Claude Design самостоятельно через MCP Playwright и сделать мокап без ручных кликов. Это работает, но с одной критичной оговоркой.
1. mcp__plugin_playwright_playwright__browser_navigate → claude.ai/design
2. Авторизация через Google OAuth (через cred-store / magic link на Gmail)
3. Кнопка "+ New project" → browser_click
4. Поле промпта → browser_type (передаём весь длинный промпт за раз)
5. Submit → browser_click
6. Wait → browser_wait_for селектора canvas
7. Iteration → browser_type новых сообщений в чат
8. Handoff → browser_click → download zip → файл попадает в Downloads
claude.ai/design защищён Cloudflare Turnstile (CAPTCHA «подтвердите что вы человек»). Это блокирует автоматический логин. Workflow:
Это нормальное поведение, не баг. Не пытаться обходить — Turnstile отлично детектит автоматизацию.
Эти промпты сработали — оставляю как референс структуры. Не копировать дословно, а использовать как шаблон формы.
Цель: не один экран, а система где можно подставлять данные → получать варианты.
Нужен кастомизируемый HTML-шаблон обложки для вебинаров.
Цель — единая система, где я могу подставить данные (название, дата, логотип
партнёра, акцентный цвет) и получить уникальную обложку за секунду.
Размер ровно 1200×675 px.
ПАЛИТРА БРЕНДА (ваш домен):
• #0F172A — глубокая navy (основной фон)
• #2563EB — насыщенный синий (primary accent)
• #38BDF8 — cyan (secondary accent / подчёркивания)
• #FFFFFF — белый (текст)
• #9CA3AF — средний серый (второстепенный текст)
ОБЩИЙ ПАТТЕРН (из референсов, прикладываю ref_1…ref_6):
1. Тёмный фон с графическими акцентами в углу (лучи/линии/dots/grid)
2. СВЕРХУ СЛЕВА: pill-бейдж категории (dark grey фон, белый текст)
3. СЛЕВА: крупный заголовок (Inter bold ~68-80px), снизу cyan линия
4. Под заголовком: короткий подзаголовок (~24-28px, светло-серый)
5. СПРАВА 40-45%: вырезанный портрет (cut-out без фона)
6. СВЕРХУ СПРАВА: лого партнёра (placeholder)
7. ВНИЗУ СЛЕВА: pill-бейдж «Ведущий · Имя Фамилия»
8. НИЗ-ЛЕВЫЙ УГОЛ: подпись «ваш домен» (~18px)
ВАРИАТИВНОСТЬ (6 вариантов):
— A «Вебинар» — navy + cyan diagonal lines, портрет справа
— B «Подкаст» — фиолетово-чёрный градиент, портрет 60% справа
— C «Прямой эфир» — место для 2 портретов
— D «Код/агенты» — const title = "…" в monospace
— E «Сравнение нейросетей» — грид иконок
— F «Промпт-инжиниринг» — синий градиент + окно промпта
ТЗ:
Один HTML-файл с CSS, принимает параметры через CSS variables:
--title, --subtitle, --badge-top, --badge-bottom,
--accent-color, --pattern (lines|dots|grid|chevrons|gradient|clean),
--portrait-url, --logo-url
Шрифт Inter через Google Fonts. Сделай сначала ВАРИАНТ A
(«Мастер-класс ИИ-агенты») — посмотрю и скажу ок.
Потом добавим остальные варианты.
Что хорошо:
Цель: новый экран в той же brand system, что уже есть.
Сделай hi-fi design полного лендинга Academy по прикреплённой
спеке (14 секций). Соблюдай brand tokens, используй референсы соседнего
проекта "News Portal" и Figma `<FIGMA_FILE_ID>`
(logo node 340:99, Final design node 230:16).
Output — один HTML canvas `Academy Landing.html`
по образцу `News Redesign.html`.
Что хорошо:
News Redesign.html) — AI берёт точно тот же toneКогда нужны 3+ связанных проекта (Landing + Platform + Admin):
Промпт-1 (design-system foundation):
Создай design system для Academy.
Brand: #2563EB / #0F172A / #38BDF8 / #F4F1EA.
Шрифты: Inter Tight (display), Manrope (body), JetBrains Mono (numbers).
Output: один styles.css файл с tokens (colors / spacing / radii / shadows /
type scale / fonts) + components.jsx с базовыми атомами
(Logo, Button, Input, Card, Badge, Icon).
Это будет shared library для 3 проектов: Landing, Platform, Admin.
Промпт-2 (Landing) — после готовой DS:
На основе только что созданной design system сделай лендинг
Academy. Состав: hero / proof / features / pricing /
testimonials / FAQ / footer. Адаптив desktop+mobile.
Используй атомы из components.jsx, токены из styles.css.
Промпт-3 (Platform) — referencing предыдущее:
Используя ту же design system что в предыдущем проекте,
сделай Platform (личный кабинет) Academy:
sidebar + topbar + dashboard / tracks / track-detail /
lesson-reader / simulator / community / settings.
Reference для mobile screens: Telegram Mini App
проект <PROJECT_ID>.
Промпт-4 (Admin):
Используя ту же DS, сделай Admin Academy:
sidebar + topbar + tracks CRUD / lessons CRUD / users /
cohorts / organizations / submissions / live sessions /
analytics. Поддержка multi-tenancy (несколько компаний-клиентов)
— в структуре orgs → cohorts → users.
После каждого — handoff отдельным bundle'ом. Получаешь 3 zip с единой DS, но разной функциональностью.
Когда у юзера уже есть Figma file / готовый соседний сайт / inspiring product:
Часто бренд распределён: Figma + основной сайт + лендинг конференции + соцсети. В промпт дать все источники, а не один:
Бренд распределён в 3 местах:
1. Figma `<FIGMA_FILE_ID>` (главный source)
2. Лендинг (ваш домен) (визуальная реальность)
3. Презентация с конференции (тон выступления)
Реши конфликты в пользу Figma.
README.md в bundleUpdate сюда — это коллективная память между сессиями.
[1] Юзер мокапит в claude.ai/design
↓ кнопка "Handoff"
[2] Скачивается zip → юзер кладёт в `design-handoff/<area>/`
↓
[3] Coding agent (я) читает bundle и переносит pixel-perfect в стек проекта
↓
[4] Verification: сверка с прототипом + интеграция с дизайн-системой проекта
Распакованный zip всегда содержит:
<project-slug>/
├── README.md ← read-this-first для coding agent (важно!)
└── project/
├── <Name>.html ← главный файл мокапа (читать целиком)
├── design-canvas.jsx ← JSX-версия канваса (опционально)
├── components.jsx ← shared атомы (Logo, Icon, Button, ...)
├── chrome.jsx ← chrome платформы (sidebar, topbar) если применимо
├── styles.css ← design tokens + base styles
├── components/ ← пустые директории (заглушки export'а)
├── screens/
├── styles/
├── fonts/
└── uploads/ ← пользовательские референсы
Главный файл — тот HTML, который юзер «имел открытым» когда нажал Handoff. Его и нужно читать первым.
Там обращение к coding-agent с инструкцией. Не пропускать — там часто специфичные пометки от юзера.
<style> блоки, <script> блоки, импорты CSS.data-* атрибуты — это намеки на интерактивность.styles.css (полностью — там design tokens)components.jsx, chrome.jsx, design-canvas.jsxcomponents/, screens/ — это zip-export артефакты)Из bundle вытащить:
--primary, --deep, --cream), spacing, radii, shadows, type scaleglobals.css или дизайн-системе)| Анти-паттерн | Почему плохо | Как правильно |
|---|---|---|
| Запустить HTML в браузере и сделать скриншот | Тратит время; всё нужное в коде | Читать HTML+CSS как source-of-truth |
| Skim главный HTML | Пропустишь критичные детали (поведение, transitions) | Читать целиком |
Скопировать <div> структуру прототипа в React 1-в-1 | Прототип не учитывает реактивность и props | Воссоздать визуальный output в идиомах проекта |
| Создать новые токены вместо существующих | Дизайн-система проекта станет фрагментированной | Сначала проверить существующие, потом дополнять |
| Не спрашивать про двусмысленности | Сделаешь не то, потеряешь время | Уточнить у юзера ДО старта реализации |
Игнорировать README.md bundle | Там обычно ключевая инструкция | Читать первым |
| Реализовать ВСЁ за один раз без согласования | Долго, риск переделок | Реализовать 1 экран, показать, получить feedback, продолжать |
Если в проекте уже есть дизайн-система — приоритет за ней. Прототип Claude Design — направление, не догма. Примеры:
border-radius: 14px, в проекте все кнопки --r-md: 12px → берём 12px, не 14pxfont-family: 'Manrope', в проекте уже есть --h-font-body: Inter → ставим в globals.css ОДИН раз и заменяем на единый#2563EB, в проекте --c-primary: #2563EB → используем токен, не хардкод<ACard> → расширяем ACard props, не делаем новыйЕсли расхождение визуально критичное — спросить юзера, не молчать.
Это шпаргалка, чтобы юзер получал лучший output из Claude Design:
Первый промпт: «Создай design tokens (цвета, шрифты, spacing, radii) для онлайн-платформы про AI, аудитория <ваша ЦА>, тон премиум, бренд (ваш домен) (#2563EB / #0F172A)». Получаешь styles.css фундамент. Потом — экраны на этих tokens.
Не «сделай dashboard», а «сделай 3 варианта dashboard: (а) карточный grid, (б) список с metrics в шапке, (в) split с sidebar metrics + main feed». Дешевле, дальше выбираешь.
Скриншоты Linear / Stripe / Vercel / etc. → «как в этом, но с нашими tokens». AI отлично копирует стиль.
Не «сделай круче», а «увеличь spacing между card на 50%», «hero сделай темнее на 2 шага», «эту кнопку перекрась в --cyan».
В первом промпте указывать «desktop 1440 + tablet 768 + mobile 375». Иначе AI делает только desktop, потом дороже добавлять.
«Кнопка с hover/active/disabled/loading». Иначе будет только default.
Если в проекте поддерживается dark — указывать в промпте, AI сделает оба + отметит токены.
Один screen = один экран. Если нужно 5 экранов — 5 отдельных мокапов. AI лучше фокусируется на узкой задаче.
Не копить 10 экранов, потом handoff. Делать handoff после 1–2 экранов, пробовать имплементацию, понять расхождения с дизайн-системой проекта, продолжать.
Claude Design URL остаются — после handoff можно вернуться, доработать, новый handoff. URL стоит коммитить в design-handoff/<area>/SOURCE.md.
После реализации одного handoff'а коммит должен быть:
feat(<area>): implement Claude Design handoff for <screen>
- Imported tokens from design-handoff/<area>/styles.css → globals.css
- Added <ComponentName> in components/<area>/
- Wired to existing <ProjectComponent> where applicable
- A11y: added focus rings + aria-label
- Responsive: desktop + tablet + mobile
Source: design-handoff/<area>/<bundle>/
README.md в bundleUpdate сюда — это коллективная память между сессиями.
npx claudepluginhub jhamidun/claude-code-config-pack --plugin design-ioProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.