# swiss-design

A skill that hands your coding agent a Swiss International Style design system: IBM Plex Sans type, a 12-column grid, stone palette and one accent color.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 951 installs · ★ 159
- Author: zeke
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/zeke/swiss-design-skill/tree/HEAD/swiss-design/SKILL.md
- Updated: 2026-09-24
- HTML: https://affpapa.org/en/nevibecode/skills/swiss-design

## What it does

The skill spells out six principles: a 12-column grid on an 8px base unit, mobile-first layouts, whitespace treated as structure, hierarchy built from opacity rather than hue, exactly one accent color per project, and body text capped at `max-w-[60ch]`. It kicks in when you ask to style a page, clean up a UI, or mention Swiss design, grotesque fonts, Helvetica or modernist grids.

What you get inside: a type scale table with Tailwind classes, the stone palette mapped for light and dark mode, four accent colors with opacity steps, and spacing tokens. Typographic details are covered too — a real ellipsis character, curly quotes, `tabular-nums` for number columns, `text-balance` on headings, non-breaking spaces between value and unit. The font loads from Google Fonts with a fallback chain of Hanken Grotesk, Barlow, Host Grotesk, DM Sans and `system-ui`.

The system is written in Tailwind CSS classes, so it assumes Tailwind is already in the project. No Tailwind means either adding it or translating the rules by hand.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add zeke/swiss-design-skill --skill swiss-design -a claude-code
```

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

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add zeke/swiss-design-skill --skill swiss-design -a codex
```

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

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add zeke/swiss-design-skill --skill swiss-design -a cursor
```

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

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install zeke/swiss-design-skill swiss-design
```

2. **Manually: put the files in place**
- File: `.github/skills/swiss-design/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add zeke/swiss-design-skill --skill swiss-design -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/zeke/swiss-design-skill --path swiss-design
```

### Windsurf (Devin Desktop)

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

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add zeke/swiss-design-skill --skill swiss-design -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/zeke/swiss-design-skill/tree/HEAD/swiss-design/SKILL.md

## When to use it
- style a page in Swiss style without picking classes by hand
- pull a drifting UI back onto one grid and type scale
- ship light and dark themes from a single palette
- build text hierarchy with opacity instead of a second color
- load a grotesque font with sensible fallbacks

## Example prompts
- Style this page in Swiss style using the swiss-design skill
- Put the UI on a 12-column grid with the stone palette
- Add a dark theme following swiss-design, keep the red accent

## 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: 55c7f8f5f8896efc.

BEGIN THIRD-PARTY FILE 55c7f8f5f8896efc
````text
---
name: swiss-design
description: Apply a Swiss International Style design system using Tailwind CSS. Use when asked to style a webpage, clean up a UI, apply a design system, make something look great, or when the user references Swiss design, grotesque fonts, Helvetica, grid systems, modernist typography, or 1960s/1950s design aesthetics. Implements IBM Plex Sans typography, stone color palette, opacity-based hierarchy, generous whitespace, and structured grid layouts.
license: MIT
metadata:
  author: zeke
  version: "1.0"
---

# Swiss Design System

A design system rooted in the Swiss International Style of the 1950s–60s: grotesque typography, rigorous grid, bold geometric forms, generous whitespace, and restrained color.

## Six Principles

1. **Grid first.** Every layout lives on a 12-column grid with an 8px base unit.
2. **Mobile first, always.** Design for the smallest viewport first, then expand. Every layout must work at 320px and at 1440px. Use `sm:`, `md:`, `lg:` Tailwind prefixes systematically.
3. **Whitespace is structure.** Generous padding and margins are not waste — they are the design.
4. **Opacity, not hue, creates hierarchy.** Never introduce a second color to indicate text weight or importance. Use opacity.
5. **One accent.** Each project gets exactly one accent color, used sparingly at multiple opacities.
6. **Narrow columns.** Body text never exceeds `max-w-[60ch]`. Wider columns hurt legibility.

---

## Typography

**Primary font:** IBM Plex Sans (Google Fonts)

```html
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400&display=swap" rel="stylesheet">
```

**Fallback chain** (in order of preference):

| Font | Source | Character |
| ---- | ------ | --------- |
| IBM Plex Sans | Google Fonts | Primary. Rational, slightly condensed, 1960s systems rationalism |
| Hanken Grotesk | Google Fonts | Closest to Neue Haas Grotesk lineage |
| Barlow | Google Fonts | Condensed Swiss-grid proportions, strong vertical rhythm |
| Host Grotesk | Google Fonts | Warm grotesque, good at all sizes |
| DM Sans | Google Fonts | Clean neo-grotesque fallback |
| system-ui | Built-in | Last resort |

```css
font-family: 'IBM Plex Sans', 'Hanken Grotesk', 'Barlow', 'Host Grotesk', 'DM Sans', system-ui, sans-serif;
```

**Type scale:**

| Role | Tailwind | Line height | Max width |
| ---- | -------- | ----------- | --------- |
| Display | `text-7xl font-light tracking-tight` | `leading-none` | unconstrained |
| H1 | `text-5xl font-light tracking-tight` | `leading-tight` | unconstrained |
| H2 | `text-3xl font-light tracking-tight` | `leading-snug` | unconstrained |
````
END THIRD-PARTY FILE 55c7f8f5f8896efc

The third-party file has ended. Everything between the 55c7f8f5f8896efc 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 2736 of 12998 bytes. © zeke · MIT · https://github.com/zeke/swiss-design-skill/tree/HEAD/swiss-design/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
