html
Build an interactive HTML UI in the live preview panel using Bobbit's design system
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Build an interactive HTML UI in the live preview panel using Bobbit's design system
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Cut a Bobbit release — preflight checks, version bump, signed tag (CI publishes the root to npm via OIDC on tag push), optional binary sub-packages, GitHub release with generated notes.
Bring up a like-for-like PR Walkthrough panel preview using the exact pack source and Bobbit theme bridge
Pull diagnostics out of the running web client (env, viewport/safe-area, performance, app state) and debug hard-to-inspect mobile / installed-PWA layout bugs
Build an interactive HTML UI in the live preview panel using Bobbit's design system
Create a high-fidelity interactive HTML design mockup with live preview
Stand up an ephemeral test environment and drive browser-based QA testing scenarios
| name | html |
| description | Build an interactive HTML UI in the live preview panel using Bobbit's design system |
| argument-hint | <description of what to build> |
| allowed-tools | read, grep, find, ls, write, edit, preview_open, bash |
Build an interactive HTML interface in the live preview panel for: $ARGUMENTS
Use preview_open(html=...). Do not also write a .html file for the
same artefact — the two surfaces drift on every edit. See
defaults/docs/html-rendering.md for the
full surface-selection rule and complete token reference.
<link rel="stylesheet" href="/src/ui/app.css">
<style>
/* Defensive fallbacks for the bridge / HMR race — overridden by the
bridge whenever the parent has these tokens. Include the chart and
semantic ones if you reference them.
NEVER add surface tokens (--background, --foreground, --muted-foreground,
--card, --border) here, NEVER alias them with a single-mode fallback like
`--muted: var(--muted-foreground, #9aa0ad)`, and NEVER name a custom prop
after a real token (`--muted` is a real surface-bg token — the live bridge
mirrors it inline and overwrites your alias, making text light-on-light in
the preview pane). Reference surface tokens directly, or alias only with a
non-colliding name (--bg, --fg, --c1). */
:root {
--chart-1: oklch(0.52 0.18 250);
--chart-2: oklch(0.55 0.16 60);
--chart-3: oklch(0.50 0.16 145);
--chart-4: oklch(0.50 0.20 305);
--chart-5: oklch(0.55 0.20 15);
--chart-6: oklch(0.52 0.13 190);
--positive: oklch(0.55 0.15 145);
--negative: oklch(0.55 0.18 25);
--warning: oklch(0.62 0.15 75);
}
body {
font-family: var(--font-sans, system-ui, sans-serif);
background: var(--background);
color: var(--foreground);
margin: 0;
padding: 16px;
}
</style>
<!-- Your UI here -->
<script>
// Your interactivity here
</script>
The <link> gives you Tailwind 4 plus every theme variable for pixel-accurate
fidelity with the real app. The preview iframe is same-origin with the Vite
dev server, so this works out of the box.
| Group | Tokens | Use for |
|---|---|---|
| Surfaces | --background, --foreground, --card, --card-foreground, --muted, --muted-foreground, --border, --popover, --secondary, --accent, --ring, --input, --sidebar* | Page chrome, layout, text |
| Brand | --primary, --primary-foreground | Single accented action |
| Categorical | --chart-1 … --chart-6 (+ -foreground) | Distinct categories: chart series, comparison columns, multi-product cards. Stable across data-palette switches. |
| Semantic | --positive, --negative, --warning, --info (+ -foreground) | Status icons, validation, alerts. Fixed across palettes — green tick stays green. |
For striking visual / categorical content always reach for --chart-* and
the semantic slots, not --primary/--accent/--ring. The core palette is
intentionally monochromatic and will look flat for charts and comparisons.
For tints / translucent fills use color-mix:
background: color-mix(in oklch, var(--chart-1) 10%, transparent);
Full Tailwind is available. Use utility classes directly:
<div class="flex flex-col gap-4 p-4 rounded-lg border border-border bg-card">
<h2 class="text-lg font-semibold text-foreground">Title</h2>
<p class="text-sm text-muted-foreground">Description</p>
<button class="px-4 py-2 rounded-md bg-primary text-primary-foreground hover:opacity-90">
Action
</button>
</div>
<div class="card" style="--c: var(--chart-1)">
<span class="badge"
style="color: var(--c); background: color-mix(in oklch, var(--c) 18%, transparent);
border: 1px solid color-mix(in oklch, var(--c) 45%, transparent);">
Tag
</span>
<h3>Title</h3>
</div>
<div class="bar"
style="height: 8px; background: var(--muted); border-radius: 999px; overflow: hidden;">
<span style="display:block; height:100%; width:78%;
background: var(--chart-1); border-radius: 999px;"></span>
</div>
<span style="color: var(--positive)">✓ Pass</span>
<span style="color: var(--negative)">✗ Fail</span>
<span style="color: var(--warning)">! Caution</span>
<input type="text"
class="w-full px-3 py-2 rounded-md border border-input bg-background text-foreground text-sm
focus:outline-none focus:ring-2 focus:ring-ring"
placeholder="Type here…">
<select class="px-3 py-2 rounded-md border border-input bg-background text-foreground text-sm">
<option>Option 1</option>
</select>
<div class="flex border-b border-border gap-1">
<button class="px-3 py-1.5 text-sm border-b-2 border-primary text-foreground">Tab 1</button>
<button class="px-3 py-1.5 text-sm border-b-2 border-transparent text-muted-foreground hover:text-foreground">Tab 2</button>
</div>
<table class="w-full text-sm">
<thead>
<tr class="border-b border-border">
<th class="text-left p-2 font-medium text-muted-foreground">Header</th>
</tr>
</thead>
<tbody>
<tr class="border-b border-border hover:bg-accent/50">
<td class="p-2">Value</td>
</tr>
</tbody>
</table>
preview_open call with the latest HTML.preview_open(html=...) — never write a standalone HTML
file alongside it. One artefact, one surface.<link rel="stylesheet" href="/src/ui/app.css"> for the
design system.:root palette beyond the chart/semantic fallback block
above. Never alias a surface token with a single-mode fallback (e.g.
--muted: var(--muted-foreground, #9aa0ad)) — reference
var(--muted-foreground) directly, or muted text goes invisible when the
theme bridge can't run. Keep muted text on --background/--card, never on
a tinted/coloured surface.preview_open with the full new HTML;
don't try to patch in place.