ui-design Β· diff
v1.0.3 to v1.2.0
62 added, 78 removed. Audit B to A.
---
name: ui-design
- version: 1.0.3
+ version: 1.2.0
description: |
- The UI/UX quality gate and build guide for every visual output β landing pages, dashboards,
- web apps, portfolios, tools, any HTML the user will see. Merges visual-design methodology
- (palette, typography, layout, anti-AI-slop) with concrete build guidance, including when and
- how to use open-source component libraries (shadcn/ui, HeroUI, coss ui) to reduce work and
- raise quality.
+ UI/UX quality gate and build guide for every visual output β landing pages, dashboards,
+ web apps, portfolios, and tools. ui-design remains the main entry point.
+ Integration model: ui-design main trunk + taste-skill overlay.
+ - ui-design owns engineering quality (track selection, component-library strategy,
+ accessibility, responsiveness, theming, performance, preview delivery)
+ - taste-skill is invoked inside the ui-design workflow for style decisions
+ (Brief Inference, Design Dials, Anti-slop hard rules)
+
MUST USE together with project-builder whenever a project produces visual HTML/CSS/JS.
- project-builder owns the engineering workflow; this skill owns how the result looks and feels.
metadata:
starchild:
emoji: π¨
requires:
bins: []
install: []
---
# UI Design Skill
- Make every visual output look like a professional designed it β never generic AI slop β while doing the least hand-work necessary. This skill is the single entry point for all UI/UX decisions; it replaces the older `project-design` and `dashboard` skills.
-
- ## When to use
+ This skill is the **single entry point** for visual work.
- Any time you generate HTML/CSS/JS the user will see: landing page, dashboard, web app, portfolio, internal tool, settings page, a single chart panel β anything visual. If it renders, this skill applies.
+ Use it for any user-facing HTML/CSS/JS output: landing pages, dashboards, product UI, internal tools, and portfolio pages.
---
- ## Step 1 β Pick the track
-
- Two ways to build a UI. Choose deliberately; they are not interchangeable.
+ ## Step 1 β Pick the build track
- | | **Track A β Hand-built** | **Track B β Component library** |
- |---|--------------------------|----------------------------------|
- | What | You write the markup + Tailwind/CSS yourself | You pull accessible React components from shadcn/ui, HeroUI, or coss ui |
- | Best for | Single-file previews, quick dashboards, emails, anything with **no build step** | Real React/Next/Vite apps with forms, modals, tables, date pickers the user will keep |
- | Build step | None β static `preview` | Bundler required (Vite/Next) + `preview` with `command`+`port` |
- | Read | `references/design-process.md` (+ aesthetics/components/animations/charts) | `references/component-libraries.md` |
+ Choose deliberately before coding:
- Decision shortcut:
- ```
- No build step / throwaway preview / static files only β Track A
- Real app, lots of interactive components, user will extend it β Track B
- User named "shadcn" / "HeroUI" / "Cal.com look" / "Origin UI" β Track B (that library)
- Just a dashboard? β either track + references/dashboards.md
- ```
+ - **Track A (hand-built)**: static preview, vanilla HTML/CSS/JS, quick custom pages
+ - **Track B (component library)**: React/Vite/Next project using shadcn/ui, HeroUI, or coss ui
- **Taste is required on both tracks.** A component library gives correct, accessible parts β it does NOT give a point of view. The palette / typography / layout-rhythm / anti-slop / copy rules from `design-process.md` apply on top of the library, or every app looks identically generic.
+ Track decision and component-library strategy are always owned by `ui-design`.
---
- ## Step 2 β Always-on design discipline (both tracks)
-
- These are the non-negotiables. Full methodology, banned-value lists, and the pre-delivery checklist are in `references/design-process.md` β read it before writing markup on Track A, and for the taste layer on Track B.
+ ## Step 2 β Taste Overlay Contract (mandatory)
- 1. **Design Read first.** One line: page type Β· audience Β· atmosphere Β· aesthetic family Β· light/dark/tinted. Every later choice serves it.
- 2. **Spin the Design Dials** (Track A) to avoid converging on the same dark-blue-card layout every time: Surface Β· Accent Β· Typography Β· Aesthetic Family, derived from the current UTC time. User-stated preferences always override the dials.
- 3. **Anchor dark surfaces with a Scene Sentence** β never default to `#0a-#0f` blue-black.
- 4. **Banned by default:** Inter/Roboto/Arial fonts; generic blue (`#3b82f6`) and AI purple (`#8b5cf6`/`#6366f1`); cream/beige backgrounds; blue-black dark; em-dashes in copy; marketing buzzwords; centered-hero-plus-three-cards; `border-radius > 16px` on cards; gradient text; `transition: all`; `100vh` (use `100dvh`).
- 5. **Copy reads human, not LLM.** No buzzwords, no aphoristic "Simple. Fast. Powerful.", no fake-precise numbers, no scroll cues, zero em-dashes.
- 6. **Accessibility is mandatory:** β₯4.5:1 body contrast, visible focus rings, alt text, sequential headings, `aria-label` on icon buttons, color never the sole signal, 44Γ44px touch targets, `prefers-reduced-motion`.
- 7. **Light/dark theme** with a toggle, CSS custom properties, system-preference default, `localStorage` persistence β both themes fully designed, not just inverted.
- 8. **Refinement pass + checklist before delivery.** The instinct to add more is usually wrong; fix spacing, contrast, and typography instead. Run the pre-delivery checklist in `design-process.md`.
+ Inside ui-design workflow, invoke taste-skill for exactly these 3 style blocks:
- ---
+ 1. **Brief Inference**
+ 2. **Design Dials** (layout variance / motion intensity / visual density)
+ 3. **Anti-slop hard rules**
- ## Step 3 β Reduce work with open-source component libraries (Track B)
+ ### Boundary
- When there's a build step, don't hand-roll dropdowns, dialogs, and date pickers β that's where hand-written code fails on a11y and keyboard handling. Pull them from a library instead.
+ - `ui-design` keeps ownership of engineering quality and delivery.
+ - `taste-skill` provides style direction and anti-template taste constraints.
- | Library | Model | Reach for it when |
- |---------|-------|-------------------|
- | **shadcn/ui** | Copy-paste via CLI + registry + **MCP** (Radix/Base UI + Tailwind) | Largest ecosystem, you want to own/edit every component; lowest-effort for an agent via MCP/CLI |
- | **HeroUI v3** (was NextUI) | **npm package**, auto-updating (React Aria + Tailwind v4) | Polished defaults with zero maintenance; just update the package |
- | **coss ui** (was Origin UI) | Copy-paste (Base UI + Tailwind), Cal.com's system | Dense, production-grade Cal.com-style UI; OK with beta churn |
+ This avoids overlap with ui-designβs engineering references (component libraries, a11y, preview, data dashboard implementation).
- > **Never paste component code into work from memory.** These libraries ship fast and APIs drift. **Look up the current component + props at build time** β via the library's MCP server, its `llms.txt`, its CLI registry, or its docs page. The library's own source is the truth, every time. Exact lookup URLs, CLI/MCP setup, the copy-paste-vs-package tradeoff, and the build-step reality are in `references/component-libraries.md`.
+ ---
- Default when unspecified and a build is justified: **shadcn/ui** (MCP + CLI make it the lowest-effort), unless "zero maintenance" β HeroUI, or "Cal.com look" β coss ui.
+ ## Step 3 β Runtime order (use this every time)
- ### Advanced motion: GSAP (works on BOTH tracks)
+ 1. Use `ui-design` to select Track A/B.
+ 2. Run taste Brief Inference before writing UI code.
+ 3. Apply taste Design Dials to set style direction.
+ 4. For any interactive page, define a motion plan first (what animates, why, frequency, duration, easing, reduced-motion path).
+ 5. Implement with ui-design engineering rules (a11y/theme/responsive/component strategy/performance).
+ 6. Run taste Anti-slop check as final style gate before delivery.
- Component libraries give you correct components; they don't give you cinematic motion. For scroll-driven storytelling, multi-step timelines, text-into-characters reveals, SVG morph/draw, or FLIP layout transitions, reach for **[GSAP](https://gsap.com/)** β now 100% free (incl. all former-paid plugins: ScrollTrigger, SplitText, MorphSVG, Flipβ¦). Unlike the component libraries, GSAP is plain JS that loads via a CDN `<script>` tag with **no build step**, so it works in a single-file Track A preview *and* a Track B app.
+ One sentence summary:
+ - **taste decides style character**
+ - **ui-design guarantees robust implementation**
- Decision: plain CSS for hovers/toggles/simple reveals (the default β don't pull 50KB for a button); GSAP only when the motion is a *feature* (landing-page scroll story, hero text reveal, animated SVG). Full guidance β when-to-use table, CDN loading, core/timeline/ScrollTrigger API, plugin list, the React `useGSAP` hook, and the reduced-motion/cleanup rules β is in `references/animations.md` (GSAP section). Look up the current version and plugin APIs at gsap.com at build time; don't ship memorized snippets.
+ Hard rule: if the page has interactions, motion design is mandatory (at least tactile feedback + state transition feedback). Static-looking interaction states are treated as incomplete UI.
---
- ## AI-generated visual assets (optional quality boost)
+ ## Step 4 β Conflict arbitration
- When the user wants a premium, polished look β or when the project would benefit from custom imagery (hero backgrounds, logos, decorative illustrations, themed graphics) β load the **image-create** skill and use it to generate visuals with AI.
+ When rules overlap:
- **When to use:**
- - Landing pages, portfolios, or dashboards where a custom hero image would elevate the design
- - Projects where the user explicitly wants "better looking" / "more polished" / "premium" output
- - Any time a stock photo or generic gradient feels insufficient
+ - **Style conflict** β taste-skill wins
+ - **Engineering safety/correctness conflict** β ui-design wins
- **How to use:**
- 1. Load the `image-create` skill (read its SKILL.md) and follow its instructions to generate an image with a prompt that matches the project's Design Read (atmosphere, aesthetic family, color palette)
- 2. The generated image is saved to `output/images/`. **You MUST copy it into the project's preview/serve directory** before referencing it in HTML:
- ```
- bash("cp output/images/GENERATED_FILE.png output/projects/{slug}/src/hero.png")
- ```
- 3. Reference the image with a **relative path** in HTML: `url('./hero.png')` β NOT `url('../images/...')`. Preview can only serve files within its own directory.
- 4. If image generation fails, fall back to CSS gradients or abstract SVG patterns β never leave a broken `<img>` or `background-image` reference.
+ Engineering safety includes: accessibility, responsive stability, interaction reliability, runtime correctness, and performance constraints.
---
- ## Dashboards
+ ## Step 5 β Where to read/download taste-skill (no local mirror)
- For multi-panel monitoring views (portfolio, prices, system health), read `references/dashboards.md` after picking a track: it covers finding real data (Starchild proxied APIs + rate-limit math), real-time updates (polling/SSE/WebSocket), dashboard layout, loading/error/empty states, and performance. Charts setup is in `references/charts.md`. Never put fabricated numbers on a dashboard.
+ Do **not** maintain a local mirror or version-stamp file.
+ Always read/update taste rules directly from GitHub:
+
+ - Repo: `https://github.com/Leonxlnx/taste-skill`
+ - Main skill to consult: `https://github.com/Leonxlnx/taste-skill/blob/main/skills/taste-skill/SKILL.md`
+ - Raw download URL: `https://raw.githubusercontent.com/Leonxlnx/taste-skill/main/skills/taste-skill/SKILL.md`
+ - Full skill package directory: `https://github.com/Leonxlnx/taste-skill/tree/main/skills`
+
+ When taste-skill updates, re-check the GitHub source directly and apply needed changes in the ui-design overlay contract.
+
---
- ## Reference map
+ ## Engineering references
- | File | Read when |
- |------|-----------|
- | `references/design-process.md` | The full quality gate β Design Read, Dials, Scene Sentence, all design rules, copy rules, anti-slop tests, theme support, pre-delivery checklist |
- | `references/aesthetics.md` | Building a palette / choosing type β methodology + real-brand values + dark-surface tint guide |
- | `references/components.md` | Hand-building nav, cards, tables, buttons, forms, hero, CTAs |
- | `references/animations.md` | Motion β scroll reveals, hover, modals, entrance strategies, timing, **+ GSAP advanced-motion layer** (timelines, ScrollTrigger, SplitText, SVG, FLIP, useGSAP) |
- | `references/charts.md` | Charts β Chart.js/ECharts setup, chart-type selection, mock data |
- | `references/component-libraries.md` | shadcn/ui Β· HeroUI Β· coss ui β when to use which + how to look up components dynamically |
- | `references/dashboards.md` | Data sourcing, real-time, dashboard layout, performance |
+ | File | Purpose |
+ |------|---------|
+ | `references/design-process.md` | Engineering quality gate (a11y/theme/responsive/interaction/runtime checklist) |
+ | `references/component-libraries.md` | shadcn/ui Β· HeroUI Β· coss ui selection + lookup workflow |
+ | `references/animations.md` | Motion implementation standards, interactive-motion requirements (integrated with emil-design-eng decision framework), and GSAP usage notes |
+ | `references/charts.md` | Chart.js/ECharts implementation patterns |
+ | `references/dashboards.md` | Data sourcing, real-time updates, dashboard structure, performance |
+ | taste-skill GitHub source | Read style rules directly from GitHub: `https://github.com/Leonxlnx/taste-skill/tree/main/skills` |