From Prototyping
Creates clickable React prototypes in a single HTML file using Babel-standalone. Supports screen transitions, navigation, and state management without build tools.
How this skill is triggered — by the user, by Claude, or both
Slash command
/prototyping:interactive-prototypeWhen to use
Юзер просит «прототип», «кликабельный», «как настоящее приложение», «можно покликать», «потыкать UX», «flow между экранами». Лучше slides когда нужны переходы и состояния.
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
React 18 + Babel standalone через CDN unpkg. JSX-секции через `<script type="text/babel" src=...>`. Никакой сборки.
React 18 + Babel standalone через CDN unpkg. JSX-секции через <script type="text/babel" src=...>. Никакой сборки.
<!doctype html>
<html lang="ru"><head><meta charset="utf-8"><title><Project></title>
<link rel="stylesheet" href="styles/tokens.css">
<style>html,body{margin:0;background:#f0eee9;font-family:var(--font-body)}</style>
</head><body>
<div id="root"></div>
<!-- React + Babel через CDN -->
<script src="https://unpkg.com/[email protected]/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/[email protected]/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/@babel/[email protected]/babel.min.js" crossorigin></script>
<!-- Атомы и секции -->
<script type="text/babel" src="components/icons.jsx"></script>
<script type="text/babel" src="components/shared.jsx"></script>
<script type="text/babel" src="screens/welcome.jsx"></script>
<script type="text/babel" src="screens/main.jsx"></script>
<!-- Главный entry -->
<script type="text/babel" data-presets="env,react">
const { useState } = React;
const { Welcome, Main } = window;
function App() {
const [screen, setScreen] = useState('welcome');
const screens = {
welcome: <Welcome onNext={() => setScreen('main')} />,
main: <Main onBack={() => setScreen('welcome')} />,
};
return screens[screen] || screens.welcome;
}
ReactDOM.createRoot(document.getElementById('root')).render(<App />);
</script>
</body></html>
<project>/
├── <Project>.html
├── styles/tokens.css
├── components/
│ ├── icons.jsx # SVG-icons в JSX
│ ├── shared.jsx # Button, Input, Card, Badge
│ └── chrome.jsx # Topbar, Sidebar если есть
├── screens/
│ ├── welcome.jsx # каждый экран — отдельный файл
│ ├── main.jsx
│ └── settings.jsx
└── uploads/ # картинки от юзера
window в конце:
function Welcome({ onNext }) { return <div>...</div>; }
window.Welcome = Welcome;
import / export — Babel standalone их не выполняет в этой конфигурацииuseState берёшь как const { useState } = React в каждом файле где нужен"prop" или 'prop', не curlyПростой паттерн для prototype:
function App() {
const [screen, setScreen] = useState('welcome');
const [data, setData] = useState({ name: '', email: '' });
// Передаешь setData в формы как onChange
return screens[screen];
}
Если состояние сложное — заменяй на useReducer в App, передавай dispatch вниз.
| Тип | Экраны (минимум) |
|---|---|
| Onboarding | welcome → personal-info → permissions → done |
| Authentication | login → 2fa → forgot-password → reset |
| E-commerce | catalog → product → cart → checkout → confirmation |
| Dashboard | empty-state → loaded → drill-down → settings |
| Form-flow | step-1 → step-2 → step-3 → review → submitted |
device-frames — обернуть прототип в iPhone / Android / Browser framemobile-overlays — клавиатура, sheet, тосты, action sheet поверх экранаtweaks-panel — sidebar с крутилками (цвет primary, размер шрифта, состояние demo)microinteractions — hover, skeleton, scroll-reveal внутри экрановclaude-in-html — встроить LLM в прототип (чат-бот / AI-консультант)states-checklist — empty / loading / error / disabled на каждом экранеforms-a11y — если в прототипе есть формыApp.jsx 800 строк → невозможно править секцииimport / export в Babel standalone → не работает, путаетslides с скриншотами прощеfeature-dev agentBuilds a throwaway prototype to answer a design question about UI appearance or state/logic behavior. Guides you through two branches: interactive terminal app for logic validation, or multiple UI variations for visual exploration.
npx claudepluginhub jhamidun/claude-code-config-pack --plugin prototyping