Decisions › D11

A skin is a file of tokens, with one great default and the rest a pick away

Decision
D11
Date
2026-10-22
Status
Accepted
Area
UI

Context

Zach asked on 22 October for about eight styles, light and dark: Claude, Obsidian, Notion, Terminal, Foxglove, stock shadcn, an unstyled one to bring your own tokens, and some of the orchestrator's own picks. Eleven were built. The question that stayed was which one is the default.

The decision

A skin is one CSS file that declares only token values, in a light and a dark selector, and nothing else. Every renderer reads colours, fonts and sizes through the 39 base tokens, so a skin never needs a selector of its own, and no colour literal may appear outside the tokens and the skins. A skin is picked up only after it passes the gates in both modes.

The default changed twice in two days. Round 2 started with Claude. On 23 October Zach asked for two defaults, Bare Metal (from the high-contrast skin) and Pretty (Notion). Later the same day, in round 3.5, he asked for stock shadcn for now: it became the default, Pretty is second, the Bare Metal family is grouped, and the rest sit under “More skins”.

Why

“Ultaietly I guess people should be able to mabye pcik their own skin? hmmm mabye but it should also ben done with a great edfault skin...”

Zach Yamaoka, notes, 22 Oct 2026

“I do like how it kinda gives that "bare" metal field almost like in a temrinal but stell readable”

Zach Yamaoka, notes, 23 Oct 2026

“why I like high constrast is its basically just like 1 step above unstyled...”

Zach Yamaoka, notes, 23 Oct 2026

“Or perhaps lets call it (Bare Metal theme and Pretty Theme)”

Zach Yamaoka, notes, 23 Oct 2026

“Lets please just use stock shadcn for now”

Zach Yamaoka, 23 Oct 2026

“what matters is the location of things”

Zach Yamaoka, 23 Oct 2026

Options considered

The default over time. The skin set itself is listed in the round-2 brief.

WhenDefaultStatus
22 Oct, round 2Claude (warm neutrals, serif display)Replaced
23 Oct, round 3Bare Metal and Pretty as the two defaultsReplaced as the default; both stay
23 Oct, round 3.5Stock shadcn/ui, Pretty second, Bare Metal grouped, eight others under More skinsCurrent

Consequences

  • Bring your own: copy the unstyled skin, rename its two selectors, replace the values a brand owns, and flip one line in the manifest.
  • Bare Metal started as one step above unstyled: straight to the point, almost like a terminal but still readable. Five variants followed (Ink, Phosphor, Operator Grey, Paper, Top).
  • Why stock shadcn won the default is only in those two quoted lines: no note or doc explains it further.

Evidence

  • Round 2: the panel on the real rackReport, 2026-10-22. Evidence for this decision.
  • Bring your own tokens: writing a skinContract doc, 2026-10-22. A skin is one file of token declarations; the 39 base tokens, the gates a skin must pass, and a 20-line example.
  • Round 2 seams: tokens, skins and structuresContract doc, 2026-10-22. The contract for skins, structures, the row object and page state, with the decisions taken in rounds 3 and 3.5.
  • Round 2 briefContract doc, 2026-10-22. Zach's round-2 feedback as five structure proposals and eleven skins.
  • Round 3 briefContract doc, 2026-10-23. What was settled in round 3 (resizable panes, warning colours reserved, quieter utilities) and the three sets of proposals.

Commits in the app's repository (private):

  • ec36615 2026-10-22 Skins: Obsidian, Notion, shadcn/ui, Linear
  • c732bf1 2026-10-22 Skins: macOS, Unstyled, High contrast
  • efc6e3d 2026-10-23 Skin picker: the five Bare Metal variants
  • 7212d1f 2026-10-23 Stock shadcn is the default skin

← All decisions