interactive-prototype
Полностью интерактивный кликабельный прототип на React + inline JSX. С реальным state, переходами, валидацией форм.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Полностью интерактивный кликабельный прототип на React + inline JSX. С реальным state, переходами, валидацией форм.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Research a company or person for sales intel — web search standalone, richer with enrichment tools or CRM connected. Trigger with "research [company]", "look up [person]", "intel on [prospect]", "who is [name] at [company]".
AI-музыка локально на your GPU (ACE-Step 1.5): инструменталы и песни, авто/кастомная лирика, модели base/xl-turbo; CLI scripts/generate.py. Триггеры: «напиши песню», jingle, soundtrack, background music. НЕ Suno (skill suno), не ElevenLabs Music.
OpenAI-совместимый HTTP-сервер поверх ЛОКАЛЬНОГО claude CLI (подписка Max, без API-ключа) — отдаёт Claude как /v1/chat/completions для n8n, OpenAI-SDK, IDE, curl, Open WebUI; SSE-стрим, X-Session-Id. НЕ: наружу к OpenAI/Perplexity/Runway→local-gateway; разовый вызов из Python→claude-cli-runner; боевые Hermes-боты→agent-builder tooling.
Prepare for a sales call — account context, attendee research, suggested agenda; richer with CRM, email, chat or transcripts connected. Trigger with "prep me for my call with [company]", "call prep [company]", "get me ready for [meeting]".
Создание визуальных карточек-каруселей для Telegram-канала — editorial стиль. HTML+CSS шаблон → Playwright render → PNG-серия 1080×1350. Библиотека шаблонов лежит в templates/ (read-only образцы); новая серия создаётся в рабочей директории (CWD). Вызывается сам или из tg-post. Триггеры — «карточки для канала», «карусель в канал», «сделай series», «нарисуй cover», «slides для поста».
Verify any fact, claim, number, statement, citation or AI-generated output for hallucinations — cross-check sources, validate research findings. Triggers: "/check-skill-solo", «проверь», «перепроверь», "verify", "fact-check".
| name | interactive-prototype |
| description | Полностью интерактивный кликабельный прототип на React + inline JSX. С реальным state, переходами, валидацией форм. |
| when_to_use | Пользователь просит "прототип", "кликабельный мокап", "как настоящее приложение", "флоу", "онбординг", "несколько экранов с переходами". |
Один HTML-файл с inline JSX через Babel-standalone. React-приложение, имитирующее настоящее.
Если задача — статичный экран или один лендинг, прототип не нужен. Делай обычный HTML.
Используй точно эти версии React + Babel — другие могут отвалиться:
<script src="https://unpkg.com/react@18.3.1/umd/react.development.js"
crossorigin="anonymous"></script>
<script src="https://unpkg.com/react-dom@18.3.1/umd/react-dom.development.js"
crossorigin="anonymous"></script>
<script src="https://unpkg.com/@babel/standalone@7.29.0/babel.min.js"
crossorigin="anonymous"></script>
Точку входа держи в одном <script type="text/babel"> в конце body, а компоненты раскидай по отдельным файлам и подключай тоже как text/babel. Каждый Babel-скрипт получает собственный scope при транспиляции, поэтому компоненты, которые используются из другого файла, в конце экспортируй на window:
Object.assign(window, { Button, Card, Input });
const styles = { ... }. Если он определён в двух babel-скриптах — коллизия. Имя должно быть уникальным: cardStyles, formStyles. Или используй inline-стили / Tailwind / CSS-модули.scrollIntoView — иногда ломает iframe-хосты. Используй element.scrollTo().requestAnimationFrame.useEffect на всё. Разбивай по отдельным эффектам с понятными зависимостями.device-frames).device-frames).Если в прототипе важно сохранять состояние между перезагрузками (для итеративного дизайна), пиши его в localStorage при изменении и читай при старте:
const [step, setStep] = useState(() => {
const saved = localStorage.getItem('proto.step');
return saved ? parseInt(saved, 10) : 0;
});
useEffect(() => {
localStorage.setItem('proto.step', String(step));
}, [step]);
Особенно полезно для видео-таймера, текущего экрана флоу, заполненных полей формы.
Если прототипу нужна «магия» — суммаризация, генерация ответа, классификация ввода — можешь дёрнуть LLM напрямую через Anthropic SDK или fetch на твой бэк. В Claude Code это работает иначе, чем в этой среде: ключ ставит сам пользователь.
Простейший вариант — спросить пользователя, готов ли он вставить ключ. Дальше:
<script type="module">
import Anthropic from "https://esm.sh/@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: localStorage.getItem('anthropic_key'),
dangerouslyAllowBrowser: true,
});
// ... client.messages.create({...})
</script>
Если apiKey нет — оставляй прототип статическим, не блокируй UI.
Прежняя расширенная версия скилла (дерево @2026-04-30) сохранена целиком в references/legacy-interactive-prototype.md. Секции там: Каркас, Файловая структура, Правила JSX в Babel-standalone, Состояние между экранами, Сценарии типового прототипа, Стек со связанными скиллами, Антипаттерны, Когда НЕ делать interactive-prototype.