Nothing-Inspired UI Design System
Use this skill to produce interfaces that feel monochrome, mechanical, typographic,
and precise. The goal is to capture the visual language faithfully, not to claim the
result is official Nothing software or branding.
When to use this skill
Use it when the user:
- explicitly asks for Nothing style, Nothing design, or
/nothing-design
- wants a monochrome, industrial, OLED-black or off-white interface
- wants dot-matrix hero moments, segmented indicators, or instrument-panel widgets
- wants dense but uncluttered data presentation
- wants to restyle an existing screen or app into this direction
Do not use it for generic "clean", "modern", or "minimal" UI unless the requested
traits clearly point to this aesthetic.
Defaults and boundaries
- Match the existing platform or codebase. If the project is already React/Tailwind,
SwiftUI, or plain web, stay in that stack.
- If the user did not specify dark or light mode and you need to deliver a one-shot
draft, start with dark mode and note that the same token system supports light
mode. If the choice is central to the task and conversation flow allows it, ask.
- Declare the required fonts and the correct loading method for the platform before
or alongside the deliverable.
- Default typography uses Geist Sans for primary UI text, Geist Mono for
labels, values, and technical accents, and Geist Pixel only for occasional
display moments. Favor Geist Sans + Geist Mono as the everyday pair; treat Geist
Pixel as a restrained accent, not a blanket identity layer.
- Avoid official Nothing logos, wordmarks, product renders, or proprietary brand
assets unless the user provided them and asked to use them.
- When restyling existing product code, preserve information architecture, behavior,
and business logic unless the user explicitly asks for deeper changes.
Load references intentionally
Load only what you need:
- Read
references/tokens.md before choosing exact typography, color, spacing,
radius, border, or motion values.
- Read
references/components.md when composing buttons, forms, lists, tables,
navigation, overlays, or data widgets.
- Read
references/platform-mapping.md before generating production code for web,
React/Tailwind, SwiftUI, or design-tool outputs.
- Read
references/review-checklist.md before finalizing any design, code, or
restyle.
Core craft rules
1) Three-layer hierarchy
Every screen should have exactly three levels of importance.
| Layer |
Role |
Typical treatment |
| Primary |
The first thing the user sees |
Large Geist Sans with an occasional Geist Pixel hero number or status readout, high contrast, generous breathing room |
| Secondary |
Supporting context and useful adjacent information |
Geist Sans at body or subheading scale |
| Tertiary |
Metadata, navigation, labels, status framing |
Geist Mono, lower contrast, edge-anchored; ALL CAPS only when it improves clarity |
Squint test: if two things compete for attention, one must shrink, fade, or move.
2) Type budget
Per screen, default to:
- 2 working families max: Geist Sans + Geist Mono
- Geist Pixel only for a rare hero or display accent
- 3 font sizes max
- 2 font weights max
Before adding a new size or weight, try solving the problem with spacing, contrast, or alignment.
3) Spacing carries meaning
Use spacing as the main signal for relationships:
- 4-8px: same unit
- 16px: same group, different items
- 32-48px: new group
- 64-96px: new context
If you want a divider everywhere, the spacing rhythm is probably too weak.
4) Container strategy
Prefer the lightest possible separation, in this order:
- spacing only
- one divider line
- subtle outline
- raised surface
Do not trap the most important element inside a heavy card unless the task explicitly
needs enclosure.
5) Monochrome hierarchy first
Use grayscale for hierarchy. Red is an interrupt, not a decorative accent.
--text-display: hero content
--text-primary: main content
--text-secondary: labels and metadata
--text-disabled: hints and inactive states
Status colors are allowed when encoding data values. Color the value, not the label
or the whole row.
6) One expressive moment
Each screen gets one break from the pattern: a Geist Pixel clock or headline, a
circular instrument, a red signal, or an unusually large negative-space gap. More than
one expressive moment
turns the system noisy.
7) Asymmetry over symmetry
Favor edge anchoring, top-heavy compositions, and deliberate imbalance. Nothing-inspired
layouts should feel composed, not centered-and-generic.
8) Data form variation
When a screen contains multiple data sections, vary the visual form while keeping the
same voice. Example progression:
- one hero number
- one segmented progress bar or circular gauge
- one lighter stat row or sparkline block
The form changes; the tone stays monochrome, precise, and restrained.
Anti-patterns
Never introduce these unless the user explicitly overrides the style system:
- gradients, glassmorphism, heavy blur, or decorative shadows
- oversized radii on cards
- zebra striping in tables
- colorful icon sets, filled icons, or emoji as interface chrome
- spring/bounce motion
- decorative red accents unrelated to urgency or status
- illustration-heavy empty states or chatty toast notifications
Workflow
Track progress explicitly:
For net-new screens
- Start from hierarchy, not decoration.
- Establish the main metric, headline, or state first.
- Add only the supporting structure needed to explain that primary element.
- Choose component patterns from
references/components.md.
- Apply exact tokens from
references/tokens.md.
For restyling existing screens
- Keep the current user flow and content structure unless asked to redesign them.
- Remove decorative chrome before adding new style.
- Convert labels, metrics, and navigation into the Nothing voice.
- Replace generic cards, charts, and toggles with the component treatments in
references/components.md.
- Preserve accessibility, spacing, and legibility while simplifying.
Output contract
When you deliver work with this skill, include:
- Fonts + loading/setup for the target platform
- Mode + assumptions (dark/light, substitutions, constraints)
- The artifact itself (code, spec, or edited file content)
- A short rationale tied to hierarchy, expressive moment, and component choices
- Any unresolved substitutions (for example, unavailable fonts on native platforms)
For code edits, prefer changing the fewest files needed. Do not rewrite unrelated logic.
Gotchas
- Geist Pixel is display-only. Do not use it for body copy, long labels, dense forms, or
repeated component headings across the interface.
- Geist Mono labels can use ALL CAPS sparingly, but default to readability over affect.
- Numeric readouts should normally use Geist Mono, with units visually smaller and adjacent.
- Most buttons, inputs, navigation, and dense UI should default to Geist Sans unless the
text is intentionally technical or measurement-driven.
- Data visualizations should try opacity, pattern, or line style before adding more colors.
- Web output should include actual font-loading guidance, not just font names.
- Native output should explain whether fonts must be bundled, substituted, or downloaded,
with Geist Pixel treated as the least portable option.
- Always keep visible focus states, 44px minimum hit targets, and strong text contrast.
- If the user wants a faithful product implementation, adapt the style to the existing
component/API constraints instead of inventing a totally new architecture.
Final self-check
Before finishing, read references/review-checklist.md and make sure the result passes
every applicable item.
Reference files
references/tokens.md — exact type, color, spacing, motion, and iconography tokens
references/components.md — component and state patterns
references/platform-mapping.md — implementation guidance for web, React/Tailwind,
SwiftUI, and design-tool outputs
references/review-checklist.md — validation checklist
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: mylesmcook-mcook-skills-nothing-design3description: Nothing-Inspired UI Design System4---56# Nothing-Inspired UI Design System78Use this skill to produce interfaces that feel monochrome, mechanical, typographic,9and precise. The goal is to capture the visual language faithfully, not to claim the10result is official Nothing software or branding.1112## When to use this skill1314Use it when the user:15- explicitly asks for Nothing style, Nothing design, or `/nothing-design`16- wants a monochrome, industrial, OLED-black or off-white interface17- wants dot-matrix hero moments, segmented indicators, or instrument-panel widgets18- wants dense but uncluttered data presentation19- wants to restyle an existing screen or app into this direction2021Do **not** use it for generic "clean", "modern", or "minimal" UI unless the requested22traits clearly point to this aesthetic.2324## Defaults and boundaries2526- Match the existing platform or codebase. If the project is already React/Tailwind,27 SwiftUI, or plain web, stay in that stack.28- If the user did not specify dark or light mode and you need to deliver a one-shot29 draft, start with **dark mode** and note that the same token system supports light30 mode. If the choice is central to the task and conversation flow allows it, ask.31- Declare the required fonts and the correct loading method for the platform before32 or alongside the deliverable.33- Default typography uses **Geist Sans** for primary UI text, **Geist Mono** for34 labels, values, and technical accents, and **Geist Pixel** only for occasional35 display moments. Favor Geist Sans + Geist Mono as the everyday pair; treat Geist36 Pixel as a restrained accent, not a blanket identity layer.37- Avoid official Nothing logos, wordmarks, product renders, or proprietary brand38 assets unless the user provided them and asked to use them.39- When restyling existing product code, preserve information architecture, behavior,40 and business logic unless the user explicitly asks for deeper changes.4142## Load references intentionally4344Load only what you need:4546- Read `references/tokens.md` before choosing exact typography, color, spacing,47 radius, border, or motion values.48- Read `references/components.md` when composing buttons, forms, lists, tables,49 navigation, overlays, or data widgets.50- Read `references/platform-mapping.md` before generating production code for web,51 React/Tailwind, SwiftUI, or design-tool outputs.52- Read `references/review-checklist.md` before finalizing any design, code, or53 restyle.5455## Core craft rules5657### 1) Three-layer hierarchy5859Every screen should have exactly three levels of importance.6061| Layer | Role | Typical treatment |62|---|---|---|63| Primary | The first thing the user sees | Large Geist Sans with an occasional Geist Pixel hero number or status readout, high contrast, generous breathing room |64| Secondary | Supporting context and useful adjacent information | Geist Sans at body or subheading scale |65| Tertiary | Metadata, navigation, labels, status framing | Geist Mono, lower contrast, edge-anchored; ALL CAPS only when it improves clarity |6667Squint test: if two things compete for attention, one must shrink, fade, or move.6869### 2) Type budget7071Per screen, default to:72- **2 working families max**: Geist Sans + Geist Mono73- **Geist Pixel only for a rare hero or display accent**74- **3 font sizes max**75- **2 font weights max**7677Before adding a new size or weight, try solving the problem with spacing, contrast, or alignment.7879### 3) Spacing carries meaning8081Use spacing as the main signal for relationships:8283- **4-8px**: same unit84- **16px**: same group, different items85- **32-48px**: new group86- **64-96px**: new context8788If you want a divider everywhere, the spacing rhythm is probably too weak.8990### 4) Container strategy9192Prefer the lightest possible separation, in this order:93941. spacing only952. one divider line963. subtle outline974. raised surface9899Do not trap the most important element inside a heavy card unless the task explicitly100needs enclosure.101102### 5) Monochrome hierarchy first103104Use grayscale for hierarchy. Red is an interrupt, not a decorative accent.105106- `--text-display`: hero content107- `--text-primary`: main content108- `--text-secondary`: labels and metadata109- `--text-disabled`: hints and inactive states110111Status colors are allowed when encoding data values. Color the **value**, not the label112or the whole row.113114### 6) One expressive moment115116Each screen gets **one** break from the pattern: a Geist Pixel clock or headline, a117circular instrument, a red signal, or an unusually large negative-space gap. More than118one expressive moment119turns the system noisy.120121### 7) Asymmetry over symmetry122123Favor edge anchoring, top-heavy compositions, and deliberate imbalance. Nothing-inspired124layouts should feel composed, not centered-and-generic.125126### 8) Data form variation127128When a screen contains multiple data sections, vary the visual form while keeping the129same voice. Example progression:130131- one hero number132- one segmented progress bar or circular gauge133- one lighter stat row or sparkline block134135The form changes; the tone stays monochrome, precise, and restrained.136137## Anti-patterns138139Never introduce these unless the user explicitly overrides the style system:140141- gradients, glassmorphism, heavy blur, or decorative shadows142- oversized radii on cards143- zebra striping in tables144- colorful icon sets, filled icons, or emoji as interface chrome145- spring/bounce motion146- decorative red accents unrelated to urgency or status147- illustration-heavy empty states or chatty toast notifications148149## Workflow150151Track progress explicitly:152153- [ ] Identify deliverable, platform, and whether this is net-new UI or a restyle154- [ ] Load the relevant reference files155- [ ] Name the primary, secondary, and tertiary layers156- [ ] Choose the single expressive moment157- [ ] Build the layout and component treatment158- [ ] Validate against `references/review-checklist.md`159- [ ] Deliver the artifact with assumptions called out160161### For net-new screens1621631. Start from hierarchy, not decoration.1642. Establish the main metric, headline, or state first.1653. Add only the supporting structure needed to explain that primary element.1664. Choose component patterns from `references/components.md`.1675. Apply exact tokens from `references/tokens.md`.168169### For restyling existing screens1701711. Keep the current user flow and content structure unless asked to redesign them.1722. Remove decorative chrome before adding new style.1733. Convert labels, metrics, and navigation into the Nothing voice.1744. Replace generic cards, charts, and toggles with the component treatments in175 `references/components.md`.1765. Preserve accessibility, spacing, and legibility while simplifying.177178## Output contract179180When you deliver work with this skill, include:1811821. **Fonts + loading/setup** for the target platform1832. **Mode + assumptions** (dark/light, substitutions, constraints)1843. **The artifact itself** (code, spec, or edited file content)1854. **A short rationale** tied to hierarchy, expressive moment, and component choices1865. **Any unresolved substitutions** (for example, unavailable fonts on native platforms)187188For code edits, prefer changing the fewest files needed. Do not rewrite unrelated logic.189190## Gotchas191192- Geist Pixel is display-only. Do not use it for body copy, long labels, dense forms, or193 repeated component headings across the interface.194- Geist Mono labels can use ALL CAPS sparingly, but default to readability over affect.195- Numeric readouts should normally use Geist Mono, with units visually smaller and adjacent.196- Most buttons, inputs, navigation, and dense UI should default to Geist Sans unless the197 text is intentionally technical or measurement-driven.198- Data visualizations should try opacity, pattern, or line style before adding more colors.199- Web output should include actual font-loading guidance, not just font names.200- Native output should explain whether fonts must be bundled, substituted, or downloaded,201 with Geist Pixel treated as the least portable option.202- Always keep visible focus states, 44px minimum hit targets, and strong text contrast.203- If the user wants a faithful *product* implementation, adapt the style to the existing204 component/API constraints instead of inventing a totally new architecture.205206## Final self-check207208Before finishing, read `references/review-checklist.md` and make sure the result passes209every applicable item.210211## Reference files212213- `references/tokens.md` — exact type, color, spacing, motion, and iconography tokens214- `references/components.md` — component and state patterns215- `references/platform-mapping.md` — implementation guidance for web, React/Tailwind,216 SwiftUI, and design-tool outputs217- `references/review-checklist.md` — validation checklist218219---220> Converted and distributed by [TomeVault](https://tomevault.io/claim/MylesMCook) — claim your Tome and manage your conversions.221<!-- tomevault:4.0:skill_md:2026-04-16 -->