跳到正文
cccskills
免费在 GitHub 公开中文介绍

design-prototype

本指南说明如何使用仓库中的 LobeHub 实际界面组件和样式,制作可交互的单文件 HTML 原型。内容涵盖运行环境、主题设置和交互检查,便于在正式实现前查看界面状态与操作流程。

原文查看原文说明

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

lobehub/lobehub星标 83,504(GitHub 83,504 + cccskills 0)
集成工具Playwright

实测评分 未实测

查看安装方法

适用场景

  • 制作可交互的界面方案
  • 用实际界面组件预览设计
  • 试用空、加载和错误状态
  • 正式实现前检查操作流程

中文介绍

功能

本指南介绍如何使用 LobeHub 的实际界面组件和样式,制作可交互的单文件 HTML 原型。它会使用仓库中的依赖准备运行环境,再通过 React 形式的代码描述界面和操作。主题可以跟随操作系统的浅色或深色设置,也可以单独指定。生成的 HTML 可直接打开查看,无需运行构建流程或服务器。指南强调界面状态切换、操作后的跳转,以及按钮等控件确实可用。查看时还应检查控制台错误和屏幕截图;适用时也要考虑较窄的屏幕宽度。

适用场景

想用接近实际产品的界面检查屏幕层级和操作流程时,可以使用本指南。它适合在正式实现之前,与相关人员一起查看空状态、加载状态和错误状态等非正常状态。

使用示例

  • “用 LobeHub 的界面组件把这个界面方案做成 HTML 原型。”
  • “制作一个可交互界面,让我能分别查看浅色和深色主题。”
  • “准备一个可以切换空状态和错误状态的原型。”

注意事项

运行环境使用仓库中的 node_modules。首次运行时会从 unpkg 获取 babel.min.js。本技能用于制作原型,不负责实现正式界面。

本介绍由 AI(OpenAI Codex)根据公开的 SKILL.md 撰写。准确的规格请查看下方原文。

文档检查

AI 根据 SKILL.md 的内容检查了需要注意的操作和使用前提。评分只依据实际运行的结果(实测对比)。

安全性发送数据、删除文件、执行命令等是否有说明
B部分不足资料要求运行脚本并首次从 unpkg 下载,但未说明如何核验下载内容。
安装难易度所需工具和 API 密钥是否少且有说明
B部分不足资料明确要求使用仓库的 node_modules,并首次下载 babel.min.js。

不计入评分。 由 AI(OpenAI Codex)于 2026年10月26日 评估。仅供参考,安装前请同时查看原文。

如果您认为评估有误,请申请复核

请写明哪一项有误以及原因。无需登录。我们会对照 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(原文)

安装前可以查看交给 AI 代理的指令内容。

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

免费有简介

通过实际操作产品验证交付内容,记录用户可查看的证据,并发布验收报告。可检查已有验证计划或创建检查项,选择合适的操作界面,并使用 `lh` CLI 发布结果。

  • 实际检查更改后的产品行为
  • 收集截图或其他验证证据
  • 编写验证计划和报告
lobehub/lobehub8.4万2026年10月26日 更新

add-model-provider

免费有简介

本技能指导在 LobeHub 中接入 AI 模型提供商,涵盖运行时、模型信息、设置、品牌展示、文档和验收,并帮助判断新增模型是否需要新的提供商集成。

  • 为 LobeHub 接入新的 AI 模型提供商
  • 更新提供商设置说明或介绍
  • 判断添加模型是否需要新的提供商集成
lobehub/lobehub8.4万2026年10月26日 更新

add-setting-env

免费有简介

本技能指导如何用服务器端环境变量设置用户偏好默认值,涵盖变量校验、服务器配置、写入用户状态,以及更新 `.env.example` 和自托管文档。

  • 通过环境变量设置用户偏好默认值
  • 将设置接入服务器配置和用户状态
  • 更新环境变量示例及文档
lobehub/lobehub8.4万2026年10月26日 更新

agent-runtime-hooks

免费有简介

说明如何在智能体执行步骤、工具调用、人工审批、上下文压缩和子智能体调用时注册钩子。钩子可观察事件、模拟本地工具结果,也可通过 Webhook 按配置策略允许或拒绝工具调用。

  • 记录智能体步骤和错误
  • 测试时模拟工具结果
  • 通过 Webhook 允许或拒绝工具调用
lobehub/lobehub8.4万2026年10月26日 更新

agent-signal

免费有简介

此技能用于为智能体设计事件驱动的后台工作流,划分来源、信号、动作和策略的职责,并处理异步交接、去重、执行范围、完成记录与运行观测。

  • 添加事件触发的后台任务
  • 将工作移出对话请求
  • 防止动作重复执行
lobehub/lobehub8.4万2026年10月26日 更新

agent-testing-bot

免费有简介

本技能在 macOS 桌面聊天应用中测试机器人频道:打开应用、进入频道或联系人、发送消息、等待回复并截图。支持 Discord、Slack、Telegram、微信、飞书和 QQ;iMessage 使用 BlueBubbles 桥接。

  • 检查真实 Discord 频道中的机器人回复
  • 测试 Slack 或 Telegram 的对话流程
  • 记录 macOS 应用中的操作结果
lobehub/lobehub8.4万2026年10月26日 更新

查看 lobehub 的全部技能

报告此技能的问题