Skip to content
Design
Skill

/smui

Local copy of the **smui** ("spacemolt") design system (<https://smui.statico.io/skill.md>), adapted for the CAD Viewer. smui is a Nord-inspired terminal aesthetic for shadcn/ui with light and dark modes: sharp edges, monospace everything. Read this whole document before

From plugin
cad
16k12 skills
Install
$ npx -y skills add earthtojake/text-to-cad --skill smui --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/smui

Context preview

The summary Claude sees to decide when to auto-load this skill.

Local copy of the **smui** ("spacemolt") design system (<https://smui.statico.io/skill.md>), adapted for the CAD Viewer. smui is a Nord-inspired terminal aesthetic for shadcn/ui with light and dark modes: sharp edges, monospace everything. Read this whole document before

SKILL.md

smui.SKILL.md

smui — Terminal Theme for the CAD Viewer UI

Local copy of the **smui** ("spacemolt") design system (<https://smui.statico.io/skill.md>), adapted for the CAD Viewer. smui is a Nord-inspired terminal aesthetic for shadcn/ui with light and dark modes: sharp edges, monospace everything. Read this whole document before restyling viewer UI.

The design rules below are kept agnostic so they transfer to any shadcn/ui app. The **"In this app"** section is the only viewer-specific part — most notably, this app keeps **translucent frosted-glass surfaces** instead of smui's flat opaque panels, because viewer panels float over a live 3D scene.

---

In this app (CAD Viewer)

This app is **Vite + Tailwind v4**, not Next.js, so ignore the upstream `next/font` and `next-themes` instructions — the equivalents here are:

  • **Tokens live in [`src/client/styles/globals.css`](../../src/client/styles/globals.css).**

The shadcn CSS variables are set directly in `:root` (light "Snow Storm") and `.dark` (dark "Polar Night"); the Tailwind v4 `@theme inline` block maps them to utilities and sets `--radius` to `0`. Do **not** run `npx shadcn add` — edit `globals.css` by hand.

  • **Font (app divergence): this app does NOT adopt smui's monospace.** It keeps

the viewer's previous typeface — `--font-sans: "IBM Plex Sans", "Aptos", "Segoe UI", sans-serif`. So skip smui's "monospace everything" rule and the JetBrains Mono setup; everything else (palette, sharp edges) still applies.

  • **Light/dark** is driven by the viewer's own color-scheme system, which

toggles the `.dark` class on `<html>` — no `next-themes`.

App modification: translucent frosted-glass surfaces

smui ships **flat, opaque** surfaces. This app intentionally keeps its **frosted-glass** look so the 3D model shows through panels. Honor that:

  • Surfaces read their background from `--ui-glass-surface` / `--ui-glass-popover`

/ `--ui-glass-control`, which are **translucent** (`color-mix(... <pct>%, transparent)`) and tinted by the smui `--sidebar` / `--popover` / `--background` tokens. They are applied through the `cad-glass-surface`, `cad-glass-popover`, and `cad-glass-control` classes, which also add `backdrop-filter: blur(...)`.

  • **Do not** hardcode opaque panel backgrounds (`bg-card`, `bg-sidebar`, solid

hex) on the sidebar shell, popovers, or floating toolbars — use the `cad-glass-*` classes / `--ui-glass-*` tokens so translucency + blur are kept.

  • Surfaces that are **not** over the 3D scene (dialogs, menus on a solid

backdrop) can use the solid smui tokens normally.

  • The upstream per-scene `data-glass-tone` overrides were removed — they used

monochrome white/black translucency that washed out the Nord palette. The glass tint now comes straight from the smui tokens regardless of scene tone.

Everything below this section is the agnostic smui guide.

---

Core Rules

1. **Light + dark mode.** `:root` = light (Snow Storm), `.dark` = dark (Polar Night). All CSS variables have light/dark variants — just toggle the `.dark` class. 2. **Zero border radius.** `--radius: 0rem`. All components have sharp corners. The only `rounded-full` elements are status dots, toggle knobs, and avatars. 3. **Monospace everything.** JetBrains Mono is the only font. No serif, no sans-serif. *(This app diverges — it keeps its previous sans-serif font; see "In this app".)* 4. **No emoji.** Use [lucide-react](https://lucide.dev/) icons instead. 5. **Labels are uppercase.** Labels, card titles, and status text use `uppercase` with wide letter-spacing. 6. **(This app) Surfaces over the 3D scene are translucent frosted glass.** See "In this app" above.

Color Palette

> Exact values applied here are the source of truth in `globals.css`; the tables > below are the smui reference (a couple of hexes differ by a shade).

Semantic Variables (shadcn)

Dark mode (`.dark`):

| Variable | Hex | Usage | |---|---|---| | `--background` | `#1a1e24` | Page background | | `--foreground` | `#d8dee9` | Primary text | | `--card` | `#21262e` | Card/panel backgrounds | | `--primary` | `#88c0d0` | Primary accent (frost blue) | | `--muted-foreground` | `#8e99a8` | Secondary/muted text | | `--border` | `#3b4252` | Borders | | `--destructive` | `#d4737c` | Error/danger |

Light mode (`:root`):

| Variable | Hex | Usage | |---|---|---| | `--background` | `#eceff4` | Page background (Snow Storm 3) | | `--foreground` | `#2e3440` | Primary text (Polar Night 1) | | `--card` | `#e5e9f0` | Card/panel backgrounds (Snow Storm 2) | | `--primary` | `#4c6d94` | Primary accent (darkened for contrast) | | `--muted-foreground` | `#48505c` | Secondary/muted text | | `--border` | `#c9cfda` | Borders | | `--destructive` | `#a3303d` | Error/danger |

Extended SMUI Colors

Raw HSL triplets. Use with `hsl()` and optional alpha: `text-[hsl(var(--smui-green))]`, `border-[hsl(var(--smui-yellow)/0.3)]`, `bg-[hsl(var(--smui-frost-2)/0.04)]`.

| Variable | Hex | Usage | |---|---|---| | `--smui-frost-1` | `#8fbcbb` | Teal accent | | `--smui-frost-2` | `#88c0d0` | Primary frost blue (= `--primary`) | | `--smui-frost-3` | `#81a1c1` | Steel blue | | `--smui-frost-4` | `#4c6d94` | Deep blue | | `--smui-green` | `#a3be8c` | Success, online, nominal | | `--smui-yellow` | `#ebcb8b` | Warning, standby, caution | | `--smui-orange` | `#d08770` | Alert, degraded | | `--smui-red` | `#d4737c` | Critical, error, danger | | `--smui-purple` | `#b48ead` | Info, special, rare |

> Not registered in this app's `globals.css` yet. To enable `bg-smui-*` / > `text-smui-*` utilities, add the `--smui-*` HSL vars to `:root`/`.dark` and the > `@theme inline` block from "Extended Palette in Tailwind" below.

Surface Hierarchy

Four background levels for depth (values differ light/dark):

Dark (Polar Night): `--smui-surface-0` `#1a1e24` (page) · `-1` `#21262e` (cards) · `-2` `#282e37` (elevated) · `-3` `#2f3640` (highlights/active).

Light (Snow Storm): `--smui-surface-0` `#eceff4`

Read more
Ships withcad

text-to-cad is a library of agent skills for generating, inspecting, sourcing, slicing, and handing off CAD and robot-description artifacts from local project files. CAD URDF SRDF / MoveIt2

Get the whole plugin
Stats
15,697
Stars
1,619
Forks
Active
Maintenance
Python
Language
MIT
License
10h ago
Last commit
4mo ago
Created
13d ago
Added

Repo: earthtojake/text-to-cad

Other skills on cad.

cad
Skill

cad

Create, modify, inspect, and validate parametric CAD parts and assemblies authored as cadgen model scripts. Use for natural-language CAD specs, reference…

@earthtojake@earthtojakeView Skill
dxf
Skill

dxf

Generate, regenerate, and validate 2D DXF drawings from Python build123d sources. Use for DXF files, `.py` drawing scripts, @dxf models, 2D profiles, outlines,…

@earthtojake@earthtojakeView Skill
gcode
Skill

gcode

Generate, inspect, dry-run, and statically validate plain FDM `.gcode` from 3D mesh files by orchestrating real slicer CLIs. Use when Codex needs to slice…

@earthtojake@earthtojakeView Skill