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-ioGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Enforces test-driven development: write failing test first, then minimal code to pass. Use when implementing features or bugfixes.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.