Huashu bento insight
Skill nexu-io/open-design/plugins/_official/examples/huashu-bento-insight
π¨ The open-source Claude Design alternative. π₯οΈ Local-first desktop app. πΌοΈ Your coding agent becomes the design engine: prototypes, landing pages, dashboards, slides, images & video β real files, HTML/PDF/PPTX/MP4 export. π€ Claude Code / Codex / Cursor / Gemini / OpenCode / Qwen & 20+ CLIs via BYOK.
npx -y skills add nexu-io/open-design --skill huashu-bento-insightAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Open Design vs closed cloud design tools: a side-by-side displacement case on control, cost (BYOK), and lock-in. Built as a decision-grade B2B sales deck for evaluation committee.
SKILL.md
11.0 KB, as published. Nobody here has run it
Bento Insight Grid Β· δΎΏε½ζ Όζ΄θ§
Produce a single-file, Apple-keynote-school bento deck. You are a metrics
curator working in HTML: every card holds exactly one insight, every number is
tabular, and whitespace does the talking. The visual system, canvas contract,
and navigation runtime are locked by example.html. Start from
example.html, replace content only β do not rewrite the design or the
script. Do not introduce any color or font outside this spec.
Generated from theγBentoδΎΏε½ζ Όζ¨‘εη½ζ Ό / Bento Gridγentry (neutral school,
95% fidelity) of references/design-styles.md in
huashu-design by θ±ε
(alchaincyf), MIT licensed. Reference lineage: Apple Keynote Bento-Grid era,
new-generation MBB Bento/Big-Type decks (2024β2026), Stripe annual-report
metric-card matrices, Pitch.com QBR templates. Distinct from the fixed 8-cell
weekly-report KPI scenario: this is a general bento aesthetic theme β
free-form unequal-height composition, weight contrast, sparklines.
Hard spec (locked β violating any line is a regression)
Canvas & runtime
- One
<div id="stage">fixed at 1920 Γ 1080 px, centered withposition: fixed; top: 50%; left: 50%; afit()function appliestranslate(-50%, -50%) scale(min(innerWidth/1920, innerHeight/1080))on load andresize. All inner layout in px β the scaler owns responsiveness. - Each page is one
<section class="slide">inside#stagewith adata-screen-label="01 ε°ι’"-style label; exactly one slide carries.active; cream pages add.cream. - Navigation (keep the script verbatim):
β/β/PageUpprevious,β/β/Space/PageDownnext,Home/Endfirst/last;#/Nhash routing (1-indexed) read on load +hashchange, written viahistory.replaceState; click left third = back, rest = forward; rounded counter pill bottom-right, key-hint bottom-left. No external JS, no build step β the file must open inside a sandboxed iframe viafile://.
Design tokens (:root β keep the names, re-theme values only)
| Token | Value | Role |
|---|---|---|
--bg | #F5F5F7 | master page background (Apple light grey) |
--cream | #FBFAF7 | warm cream alternate page background |
--card | #FFFFFF | default card surface |
--card-dark | #1D1D1F | hero inverse card (β€ 1β2 per deck spread) |
--tint-blue | #EAF2FE | tinted card β brand |
--tint-green | #EAF8F0 | tinted card β positive |
--tint-warm | #FDF3E7 | tinted card β highlight |
--ink | #1D1D1F | primary text |
--ink-soft | #424245 | body copy |
--muted | #6E6E73 | secondary labels |
--faint | #AEAEB2 | tertiary captions |
--dark-ink / --dark-mut | #F5F5F7 / #98989D | text on dark card |
--hairline | #E8E8ED | 1px card border |
--brand | #0071E3 | brand blue β primary accent |
--green | #1FA958 | positive delta accent |
--orange | #F08A24 | highlight / caution accent |
--shadow | 0 2px 6px rgba(0,0,0,.04), 0 12px 32px rgba(0,0,0,.05) | micro shadow |
--r-lg / --r-md / --r-sm | 32px / 24px / 14px | radius scale |
--sans | 'Inter', 'Geist', -apple-system, 'PingFang SC', β¦ | body family |
--display | 'Geist', 'Inter', β¦ | display headlines |
--mono | 'Geist Mono', 'SF Mono', ui-monospace, β¦ | all KPI numerals |
- Fonts come from one Google Fonts
@import(Inter + Geist + Geist Mono) β the only allowed external reference. No other CDN, no icon fonts, no Chart.js/mermaid; charts are pure CSS/SVG. - Brand may be re-themed to the user's primary color, but the triad stays: one brand + green (positive) + orange (caution). A fourth accent is the cardinal sin of this style. No gradients, no glassmorphism, no neon.
Signature devices (the visual DNA β every deck must show them)
- Unequal-height bento grid: CSS Grid (
repeat(6, 1fr)columns Γ1.18fr 1fr-style rows) with mixedspanwidths and one tallgrid-row: span 2hero card. Never a uniform equal-cell grid β unequal heights are the style. Gap 20β24px. - Card anatomy:
--cardsurface +1px solid var(--hairline)+var(--shadow)micro shadow + 24β32px radius. One insight per card: acard-label(14px/600 muted) on top, one protagonist below. Tinted and dark cards are seasoning β at most 1 dark + 2 tinted per bento page. - Tabular KPI numerals: every number in
--monowithfont-variant-numeric: tabular-nums, weight 700β800, negative tracking; units in a.unitspan at ~0.42em muted. Deltas are rounded.deltapills (β 42%) in green/orange tints. - Sparklines & charts: inline
<svg preserveAspectRatio="none">polyline + optional 14%-opacity area fill for sparklines; bar charts are flex columns of roundeddivbars with the current period in--brandand history in#E4E4E9, values printed in mono above each bar. - Linear icons: inline SVG,
stroke="currentColor",stroke-width="1.8", round caps, sitting in a 52px rounded tinted.iconchip. No emoji anywhere. - Display weight contrast: headlines pair weight 800β900 spans with
300β400
.thin/.litespans in the same line (e.g. γ稳ε₯ε’ιΏοΌε ¨ι’ζ ζγγ with the verb heavy and the qualifier light). Kickers are 14px mono uppercase, 3px tracking, brand-colored.
Layout enumeration (use 5+ per deck, never one layout everywhere)
| Layout | Role |
|---|---|
cover | cream page, giant 130β150px display statement + mini bento strip of 3β4 KPI cards |
agenda | 4 equal cards, oversized hairline-grey mono numbers, first number brand-colored |
bento | the master: 6-col Γ 2-row unequal grid, dark hero card with sparkline + 5 satellite cards |
one-insight | cream page, one 300β380px mono numeral protagonist + label + chip row |
chart | big bar-chart card (2 rows tall) + 2 side insight cards |
feature-bento | 3-col grid with wide cards, linear icon chips + meta footer rows |
quote | oversized quote card (brand SVG quote marks, key phrase in brand color) + 2 stat cards |
stats-2x2 | 2Γ2 grid of 80β90px numerals, one dark + one tinted card |
roadmap | 3 track cards: mono Q-tag, dot-bulleted list, hairline-topped target footer |
closing | cream page, giant display farewell (one brand-colored word) + summary card strip |
Typography & scale (read from 10 meters)
- Display headlines 120β170px weight 900 on cover/closing, tracking β6 to
β8px; page titles 62px weight 800, tracking β2px. Hero KPI 84β96px; the
one-insight numeral 300β380px weight 800 with its
%/unit glyph in--brand. - Body 15β19px
--muted/--ink-soft, line-height 1.6β1.7. Labels 14px/600. Mono meta rows 14px with 1β2px tracking. - Chinese copy is idiomatic and uses γγ quotes and full-width punctuation; zh/en mixing is welcome (mono English kickers over Chinese headlines is the house voice).
Rhythm & discipline
- Default 10 pages (8β11 allowed). Page backgrounds alternate
--bgand--creamfor breathing rhythm; cards stay white/tinted/dark. - Whitespace is a feature: card padding β₯ 36px, page padding β 84β110px; never cram more than 7 cards on one bento page.
- One insight per card β if a card needs two numbers, it is two cards.
- Honest data only β the user's actual numbers; missing data gets an
<!-- εΎ η¨ζ·ζδΎ -->placeholder, never invented statistics. (The seed deck's γζΎζ΅ ClearFlowγdata is fictional demo content and must be fully replaced.) Negative metrics keep the orange caution treatment β bento decks that hide bad news read as marketing, not review.
Workflow
- Clarify once: topic, audience, page count, and which 3β6 metrics are the protagonists (plus the single most important one for the one-insight page). This style lives on its numbers β pick them before writing pages.
- Copy
example.html, retitle, then replace each section's content following the layout enumeration. Keep the grid skeletons, token names, card anatomy, and the script intact. Re-theme by changing token values only β and only--brandplus tints, if the user's brand demands it. - For β₯ 5 pages, showcase first: build the cover + the master bento page, confirm the grammar, then batch the rest.
- Self-check before delivery: arrow through every page; counter and
#/Nhash stay in sync; no overflow beyond 1920Γ1080; bar heights match their printed values proportionally; every bento page has unequal card heights and β€ 1 dark card; no emoji; no fourth accent color; no leftover demo (γζΎζ΅γ/"ClearFlow") text; grep forTODO.