# ui-craft-minimal

Enforces a clean editorial UI aesthetic inspired by Linear, Notion, and Vercel. Locks layouts to monochrome palettes, generous whitespace, and minimal motion.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 897 installs · ★ 398
- Author: educlopez
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/educlopez/ui-craft/tree/HEAD/skills/ui-craft-minimal/SKILL.md
- Updated: 2026-10-19
- HTML: https://affpapa.org/en/nevibecode/skills/ui-craft-minimal

## What it does

The skill enforces strict visual parameters: craftsmanship CRAFT=8, motion intensity MOTION=3, and visual density VISUAL_DENSITY=2. The canvas relies on monochrome tones like `oklch(99% 0 0)` or `oklch(14% 0.005 250)`, restricting designs to a single accent color. Elements use 1px hairline borders instead of drop shadows, paired with Inter or Geist body typography.

Motion stays strictly restrained. Hover states between 120ms and 150ms and modal dialog reveals are permitted, while scroll reveals and parallax are barred. Trying to build dense, data-heavy dashboards with this rule set will look broken — for compact grids, the author directs users to `ui-craft-dense-dashboard`. It also references internal project guides for color scales, layout spacing, and accessibility.

## Requirements
- Works with: Linear, Notion

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add educlopez/ui-craft --skill ui-craft-minimal -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/ui-craft-minimal/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/ui-craft-minimal/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add educlopez/ui-craft --skill ui-craft-minimal -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/ui-craft-minimal/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add educlopez/ui-craft --skill ui-craft-minimal -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/ui-craft-minimal/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install educlopez/ui-craft ui-craft-minimal
```

2. **Manually: put the files in place**
- File: `.github/skills/ui-craft-minimal/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add educlopez/ui-craft --skill ui-craft-minimal -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/educlopez/ui-craft --path skills/ui-craft-minimal
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/ui-craft-minimal/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add educlopez/ui-craft --skill ui-craft-minimal -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/educlopez/ui-craft/tree/HEAD/skills/ui-craft-minimal/SKILL.md

## When to use it
- Build clean interfaces inspired by Linear and Notion
- Strip decorative gradients, glassmorphism, and colored glows
- Standardize typography around Inter or Geist with tight tracking
- Enforce single-accent monochrome palettes across UI components

## Example prompts
- Build a clean landing page for our developer docs: build docs-hero
- Review this modal dialog against minimal hairline border rules: review modal-component
- Polish the settings screen to remove excess motion and shadows: polish settings-view

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 4f24571eade339ef.

BEGIN THIRD-PARTY FILE 4f24571eade339ef
```text
---
name: ui-craft-minimal
description: "Minimal / clean / Linear / Notion / Vercel / whitespace-heavy UIs. Locked knobs: CRAFT=8, MOTION=3, DENSITY=2. Monochrome + one accent, Inter/Geist, hairline borders over shadows. Trigger on: minimal, clean, Linear-like, Notion-like, Vercel-like, whitespace-heavy."
argument-hint: "[action: build|review|polish] [target]"
---

# UI Craft — Minimal

Pre-committed minimal style: editorial clean, Linear / Notion / Vercel. Whitespace is the composition. One accent, hairline borders, almost no motion.

## Knobs (locked)

- **CRAFT_LEVEL = 8** — minimal aesthetics only work when executed precisely; Polish Pass is mandatory.
- **MOTION_INTENSITY = 3** — hover + modal enter/exit only. No scroll reveals, no page transitions, no stagger.
- **VISUAL_DENSITY = 2** — whitespace-heavy, 1-2 items per row, generous gutters.

Do not re-ask these in Discovery. Skip straight to accent + font confirmation if ambiguous.

## Style anchors

- Black or near-black type on white or near-white canvas. Monochrome + ONE accent.
- Inter / Geist for body — never a display font.
- Section padding 120-200px vertical, 40-80px gutters.
- Hairline borders `1px solid oklch(92% 0.005 250)` in place of shadows.
- Typography is the hierarchy. No decorative gradients, patterns, or glass.
- Single-column hero default. Asymmetry via one supporting element, not layout tricks.
- Motion is punctuation, not spectacle.
- Every pixel deliberate. When in doubt, cut it.

## Base rules (inherited)

All rules in `../ui-craft/SKILL.md` apply. This file overrides knob defaults and adds style-specific guidance below. The anti-slop and craft tests still apply in full.

## Style-specific overrides

**Typography**

- Body: Inter or Geist, 400 weight. UI emphasis: 500. Never 600/700 in body copy.
- `system-ui, -apple-system` as fallback stack.
- Headings: `tracking-tight` / `-0.02em` above 24px, 500 or 600 max.
- `text-wrap: balance` on headings, `text-wrap: pretty` on paragraphs.
- No display serifs. No geometric display sans. No mixing two sans families.

**Color**

- Surface: `oklch(99% 0 0)` (light) / `oklch(14% 0.005 250)` (dark).
- Text: `oklch(18% 0.01 250)` primary, `oklch(46% 0.01 250)` secondary.
- Accent reserved for: primary CTA, active nav item, one key metric. That is it.
- Borders: `oklch(92% 0.005 250)` light / `oklch(24% 0.008 250)` dark. No colored borders.

**Spacing & layout**

- Section vertical: `py-24 md:py-32 lg:py-40` (96 / 128 / 160px) minimum; 200px for hero on large screens.
- Container: `max-w-5xl` typical; `max-w-3xl` for reading content.
- One accent placement per viewport preferred; two max.
- No card grids with more than 2 columns on desktop.

**Borders & elevation**

- Default chrome = 1px hairline border, no shadow.
```
END THIRD-PARTY FILE 4f24571eade339ef

The third-party file has ended. Everything between the 4f24571eade339ef tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2789 of 4650 bytes. © educlopez · MIT · https://github.com/educlopez/ui-craft/tree/HEAD/skills/ui-craft-minimal/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
