本文へ移動
cccskills
無料GitHub で公開日本語紹介

design-prototype

LobeHubの実際のUIコンポーネントやテーマを使った、操作できるHTMLプロトタイプを作るための手順を示します。画面の状態や操作の流れを形にし、設計を確かめる用途に使えます。

原文原文の説明を見る

Use for interactive HTML prototypes (交互原型) with the real LobeHub UI stack. Excludes production UI implementation.

lobehub/lobehubスター 83,506(GitHub 83,506 + cccskills 0)
連携ツールPlaywright

実行スコア 未検証

インストール方法を見る

こんなときに便利

  • 操作できる画面案を作りたいとき
  • 実際のUI部品で見た目を確認したいとき
  • 空・読み込み・エラー状態を試したいとき
  • 本番実装前に操作の流れを検討したいとき

日本語での紹介

できること

LobeHubの実際のUIコンポーネントとスタイルを使い、操作できる単一HTMLファイルのプロトタイプを作成する手順を案内します。リポジトリ内の依存関係からランタイムを用意し、React形式のコードで画面や操作を記述します。テーマはOSのライト・ダーク設定に追従させたり、個別に指定したりできます。ビルドやサーバーを使わずにHTMLを開いて確認でき、画面の状態切り替え、操作後の遷移、ボタンなどの操作要素が実際に機能することを重視します。表示確認ではコンソールエラーやスクリーンショットを確認し、必要に応じて狭い画面幅も検討します。

こんなときに便利

画面の階層や操作の流れを、実物に近いUIで試したいときに向いています。空、読み込み中、エラーなど通常とは異なる状態も含めて、関係者と具体的に確認したい場合に使えます。プロトタイプは、本番画面の実装に入る前に操作や見せ方を検討する用途です。

使い方の例

  • 「この画面案をLobeHubのUIコンポーネントを使ったHTMLプロトタイプにして」
  • 「ライト・ダーク両方で確認できる操作可能な画面を作って」
  • 「空状態とエラー状態を切り替えられるプロトタイプを用意して」

注意点

ランタイムの作成にはリポジトリ内のnode_modulesを使います。初回はbabel.min.jsをunpkgから取得します。本番UIの実装を行うスキルではありません。

この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。

資料チェック

SKILL.md の記述から、注意が要る操作と導入の前提を AI が確認しました。点数は実際に動かした結果(実行検証)だけで付けています。

安全面送信・削除・コマンド実行などの扱いが明示されているか
B一部不足スクリプト実行とunpkgからの初回取得があるが、取得内容の確認手順は記載されない。
導入のしやすさ必要なツールや API キーが少ないか、書かれているか
B一部不足リポジトリのnode_modulesと初回のbabel.min.js取得が必要と明記される。

点数には入れていません。 2026年10月26日 時点で AI(OpenAI Codex)が判定しました。目安なので、入れる前に原文も確認してください。

評価が違うと思ったら、見直しを依頼する

どの項目が、なぜ違うと思うかを書いてください。ログインは不要です。内容を SKILL.md と照らし合わせて評価を作り直し、この欄に反映します。

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

含まれるファイル(5)

  • SKILL.md8.1 KB
  • assets/.gitignore66 B
  • assets/entry.mjs858 B
  • references/template.html3.6 KB
  • scripts/build-runtime.sh1.5 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Design Prototype

One HTML file, double-click to open, fully interactive, rendered by the actual design system (@lobehub/ui 6.x components, compiled style.css, --lobe-* theme tokens — exact versions from this repo's node_modules) — while the source stays production-style React (import { Block } from '@lobehub/ui', createStaticStyles(({ css, cssVar }) => …), hooks, memo). Promotion to production is mostly "split into files", not "rewrite".

Prototype code may be quick-and-dirty (one file, no i18n, inline data) — but the interaction must be complete: states, transitions, and affordances are the point of a prototype, not its code style.

How it works

one-time (~2s, cached):   scripts/build-runtime.sh  →  lobe-prototype-runtime.js (IIFE global)
                                                       + lobe-prototype-runtime.css
                                                       + vendored babel.min.js
per prototype (no build): single HTML  =  <link css> + <script runtime> + babel-standalone
                          + <script type="text/babel"> with production-style React
  • The runtime bundles react, react-dom/client, the full @lobehub/ui namespace, lucide-react and motion from the repo's own node_modules — so tokens/components/ versions match production, and react/emotion/theme-scope are singletons by construction.
  • entry.mjs also imports @lobehub/ui/theme.css + global.css + style.css (the same three the app loads in src/layout/GlobalProvider/AppTheme.tsx); esbuild emits them as lobe-prototype-runtime.css, linked from the template's <head>.
  • A 3-line window.require shim + babel's transform-modules-commonjs lets the prototype keep real import statements.
  • Theming is CSS attributes, not a provider: the template's head script calls setLobeTheme({ appearance }) from prefers-color-scheme (and on change), so light/dark follow the OS before first paint. Force a theme with setLobeTheme({ appearance: 'dark' }), or <ThemeScope appearance="dark"> for an island. The React tree is wrapped in <ConfigProvider motion={motion}> like the app's AppTheme (motion for Button, Drawer, Modal, …, plus fonts, focus ring and the popup portal host) and <ToastHost /> for toast.

⚠️ Don't re-attempt the pure-CDN route (esm.sh import maps). It was tried and rejected: esm.sh's CJS named-export analysis failed serially across the dep chain and ?bundle leaked an unversioned react-is 404. Bundling from the repo's own node_modules is the only way to match production versions exactly.

Quickstart

  1. Build the runtime into the prototype's directory (any dir works; /tmp is fine):

    bash .agents/skills/design-prototype/scripts/build-runtime.sh /tmp/my-proto
    

    Skip if lobe-prototype-runtime.{js,css} + babel.min.js are already there and the design-system versions haven't bumped. The first run downloads babel.min.js from unpkg (pinned); later runs reuse it.

  2. Copy references/template.html into the same dir, rename, and replace the sample App with the real surface. Keep the runtime shim block untouched.

  3. Open it (open /tmp/my-proto/xxx.html) — no server, no build.

Verify before delivering

Headless-check it renders with zero console errors (the repo's e2e Playwright works):

// node /tmp/check.mjs   — adjust paths
import { chromium } from '<repo>/e2e/node_modules/playwright/index.mjs';
const b = await chromium.launch();
const p = await b.newPage();
const errs = [];
p.on('pageerror', (e) => errs.push(String(e)));
await p.goto('file:///tmp/my-proto/xxx.html');
await p.waitForSelector('#root *', { timeout: 30000 });
await p.screenshot({ path: '/tmp/proto.png' }); // Read the screenshot yourself
console.log('errors:', errs);
await b.close();

Then Read the screenshot — a prototype is a visual deliverable; don't ship it sight-unseen. Check light + dark (emulate prefers-color-scheme) and a narrow viewport if the surface has a mobile story.

What's in the runtime (extend freely)

See assets/entry.mjs — the single source of truth. Currently:

  • @lobehub/ui: full namespace — every component (Button, Input, Modal, createModal, confirmModal, Table, Switch, Checkbox, Radio, Badge, Progress, Slider, Steps, Divider, DropdownMenu, Accordion, Collapsible, Spin, Skeleton, DraggablePanel, FloatingSheet, …) plus toast / ToastHost, MotionProvider, setLobeTheme, ThemeScope, useThemeMode, useTheme, and the styling API createStaticStyles, cssVar, cx, css, keyframes, responsive, useResponsive
  • @lobehub/icons: Amp, ClaudeCode, Codex, HermesAgent, OpenClaw, OpenCode
  • lucide-react, motion/react, motion/react-m, react, react/jsx-runtime, react-dom, react-dom/client: full namespaces

Not included: @lobehub/ui/form, @lobehub/ui/pro-table, @lobehub/ui/chat and the other subpaths — add import * as x from '@lobehub/ui/<sub>' + a '@lobehub/ui/<sub>': x entry and rebuild (~2s). Size ≈ 17MB JS + 0.3MB CSS (fine from disk).

Picking the v6 equivalent

  • Feedback: toast.success(…) + <ToastHost />; dialogs: Modal, createModal, confirmModal.
  • Menus: DropdownMenu items={…} (opens on click); context menus: ContextMenuTrigger.
  • Layout: Flexbox horizontal gap={…} / Center / Grid — there is no Space.
  • Disclosure: Accordion for several sections, Collapsible for one region.
  • Badge, Checkbox, Divider, Progress, Radio, Slider, Steps, Switch, Table (columns / dataSource / rowSelection) are root exports.
  • Unsure about a name → check node_modules/@lobehub/ui/es/index.d.mts rather than guessing; an unknown import is undefined at runtime, not a build error.

Pitfalls

  • Style with createStaticStyles + cssVar.* exactly as production does — it is emotion-backed and inserts at call time, so it needs no build step. Tokens resolve to var(--lobe-*) and flip with the theme; never hardcode light/dark colors.
  • Component styles live in cascade layers (lobe-base, lobe-popup, lobe-ui), so any unlayered CSS in the prototype's <style> beats them. Override through className / style / classNames / styles slot props, not global selectors like button { … }.
  • Keep the <link> to lobe-prototype-runtime.css — without it components render unstyled and --lobe-* tokens are undefined.
  • babel must stay the raw UMD file (unpkg/jsdelivr). esm.sh rewrites it to ESM and a classic <script src> chokes on export.
  • The require shim throws with the module name when an import isn't in the runtime — that's the "add to entry.mjs and rebuild" signal, not a template bug.
  • Text type accepts only secondary|success|warning|danger|info; Tag color has no primary (DESIGN.md "Applying tokens in components").

Design bar (same as production surfaces)

A prototype is a surface — the ux checklists apply to what it demonstrates:

  • Show at least one non-happy-path state (empty / loading / error / in-progress), ideally behind a state-toggle strip like the template's. A happy-path-only prototype under-specifies the design and silently blesses missing states.
  • Reuse the app's surface contracts: side panels are DraggablePanel (collapse + drag-resize come free), loading follows the ux skill's feedback §4.1 scenario table (Skeleton / Spin, variant="network" only for AI work), modals via createModal-style flows.
  • Don't paint affordances you don't wire (cursor: zoom-in with no zoom, keycap chips with no keys) — in an interactive prototype a dead affordance is a spec bug.
  • Walk the ux Quick review against the prototype before delivering; annotate anything deliberately out of scope in an HTML comment so the implementer knows it's a cut, not a decision.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

acceptance

無料概要あり

実際の製品を操作して、利用者が確認できる動作証拠を集め、検証計画に沿った受け入れレポートとして公開するスキルです。

  • 変更後の製品動作を実地で検証したいとき
  • 画面キャプチャなどの証拠を集めたいとき
  • 検証計画とレポートを作成したいとき
lobehub/lobehub8.4万2026年10月26日 更新

add-model-provider

無料概要あり

LobeHubにAIモデルプロバイダーを追加し、実行時連携からモデル表示、設定、ブランド表記、文書化、動作確認まで進めるスキルです。

  • 新しいAIモデルプロバイダーを追加したいとき
  • プロバイダーの設定手順や説明文を更新したいとき
  • 既存プロバイダーへのモデル追加要件を見極めたいとき
lobehub/lobehub8.4万2026年10月26日 更新

add-setting-env

無料概要あり

ユーザー設定の初期値をサーバー側の環境変数で切り替えるため、型定義や設定の組み立て、ユーザーストアへの反映、環境変数の例と説明書きを追加する手順です。

  • 設定の初期値を環境変数で変えたいとき
  • 設定項目をサーバー設定に追加したいとき
  • 環境変数の例と説明を更新したいとき
lobehub/lobehub8.4万2026年10月26日 更新

agent-runtime-hooks

無料概要あり

エージェント実行中の各段階をフックで監視し、ツール呼び出しの模擬・制御や人の承認、圧縮、サブエージェント処理に介入する仕組みを扱います。

  • エージェントの実行状況を記録したいとき
  • ツール結果をテスト用に模擬したいとき
  • Webhookでツール実行を許可・拒否したいとき
lobehub/lobehub8.4万2026年10月26日 更新

agent-signal

無料概要あり

イベントを起点にエージェントのバックグラウンド処理を組み立て、ソース・シグナル・アクション・ポリシーの役割分担や非同期連携を実装するためのスキルです。

  • イベント起点の処理を追加したいとき
  • バックグラウンド処理を非同期化したいとき
  • 重複実行を防ぐ仕組みを整えたいとき
lobehub/lobehub8.4万2026年10月26日 更新

agent-testing-bot

無料概要あり

DiscordやSlackなどの実際のチャットアプリでボットにメッセージを送り、応答を画面で確認する受け入れテストを行うスキルです。

  • 実際のDiscordでボット応答を確かめたいとき
  • SlackやTelegramの会話経路をテストしたいとき
  • macOSアプリ上の操作結果を画面で記録したいとき
lobehub/lobehub8.4万2026年10月26日 更新

lobehub のスキルをすべて見る

このスキルの問題を報告する