calm-ui

Apply a restrained, Swiss/Japanese/Scandinavian/German-influenced product design system when building or refining UI in React, Next.js, TypeScript, and shadcn/ui. Use when the user asks to build, refine, critique, redesign, or review a page, screen, component, form, table, dashboard, layout, or other frontend interface, especially in projects using shadcn/ui. Do not use for marketing sites, landing pages, non-UI work, or requests for bold, playful, maximalist, or otherwise expressive aesthetics.

7 stars
Complexity: easy

About this skill

The calm-ui skill enforces a highly opinionated, restrained product design philosophy during UI development. It prioritizes clarity, reduction, and structure over visual expression, drawing inspiration from Swiss, Japanese, Scandinavian, and German design principles. This includes strict guidelines on typography (minimal variance, hierarchy from weight/spacing), layout (generous whitespace, strong alignment, no unnecessary nesting), and a mandate to refine shadcn/ui components beyond their default appearance. This skill is designed for AI coding agents tasked with building, refining, critiquing, or redesigning frontend interfaces such as pages, screens, components, forms, tables, and dashboards. By leveraging calm-ui, agents can ensure the output consistently adheres to a clean, professional, and aesthetically harmonious product design system, reducing the need for explicit design directives in every prompt. Developers and product teams benefit by achieving a uniform, high-quality user experience that feels quiet, easy to scan, and structurally sound. It acts as an invaluable constraint system for maintaining design discipline and consistency across complex applications built with modern frontend stacks.

Best use case

Ideal for developers and product teams aiming to build clean, functional, and aesthetically consistent product interfaces with a minimalist, professional look. It helps maintain design discipline and uniformity across projects, especially those leveraging shadcn/ui, by providing a codified set of design constraints.

Apply a restrained, Swiss/Japanese/Scandinavian/German-influenced product design system when building or refining UI in React, Next.js, TypeScript, and shadcn/ui. Use when the user asks to build, refine, critique, redesign, or review a page, screen, component, form, table, dashboard, layout, or other frontend interface, especially in projects using shadcn/ui. Do not use for marketing sites, landing pages, non-UI work, or requests for bold, playful, maximalist, or otherwise expressive aesthetics.

The user can expect UI code and designs that adhere strictly to a clean, restrained, and highly structured product design system, with shadcn/ui components thoughtfully refined to match the specified aesthetic.

Practical example

Example input

Design a user profile settings page for my Next.js application. Ensure it incorporates the calm-ui aesthetic and leverages shadcn/ui components effectively, focusing on clarity and ease of use.

Example output

Generated React/TypeScript code for a profile settings page, utilizing refined shadcn/ui components arranged with a clean, architectural layout, minimal typography variance, and generous structural whitespace, fully adhering to calm-ui principles for a calm and efficient user experience.

When to use this skill

  • Building or refining UI in React, Next.js, TypeScript, especially with shadcn/ui.
  • When a restrained, minimalist, or 'calm' aesthetic is desired for product interfaces.
  • Designing or redesigning components, forms, tables, dashboards, or full pages.
  • When critiquing existing UI to ensure adherence to a disciplined design system.

When not to use this skill

  • For marketing sites, landing pages, or highly expressive brand experiences.
  • When requesting bold, playful, maximalist, or otherwise artistic aesthetics.
  • For non-UI related development tasks or backend work.
  • When the goal is visual novelty or dramatic design experimentation.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/calm-ui/SKILL.md --create-dirs "https://raw.githubusercontent.com/brijr/vibe/main/.agents/skills/calm-ui/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/calm-ui/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How calm-ui Compares

Feature / Agentcalm-uiStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityeasyN/A

Frequently Asked Questions

What does this skill do?

Apply a restrained, Swiss/Japanese/Scandinavian/German-influenced product design system when building or refining UI in React, Next.js, TypeScript, and shadcn/ui. Use when the user asks to build, refine, critique, redesign, or review a page, screen, component, form, table, dashboard, layout, or other frontend interface, especially in projects using shadcn/ui. Do not use for marketing sites, landing pages, non-UI work, or requests for bold, playful, maximalist, or otherwise expressive aesthetics.

How difficult is it to install?

The installation complexity is rated as easy. You can find the installation instructions above.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# calm-ui — restrained product design system

This skill enforces a specific design philosophy when building product interfaces. It is not generic guidance — it is an opinionated constraint system.

## Core constraints

Read these before writing any UI code. Every rule is testable — you should be able to look at a screen and answer yes/no.

### Non-negotiables

1. **Restraint over expression.** Prefer reduction and clarity over visual novelty.
2. **Minimal typography variance.** Hierarchy comes from weight, spacing, placement, alignment, grouping, density, and contrast — not type size jumps.
3. **Calm over busy.** Interfaces feel quiet and easy to scan.
4. **Structure over decoration.** Layout, spacing, and rhythm before visual chrome.
5. **System over one-offs.** Repeated elements follow one consistent pattern.
6. **Neutral first.** The UI works in grayscale before accent color is added.
7. **Shadcn is a foundation, not the final look.** Never ship default-looking shadcn components. See "shadcn foundation" below for how to refine them.

### Layout

- Start with spacing and grouping before reaching for cards
- Strong alignment throughout — architectural, not incidental
- Generous whitespace is structural, not decorative
- Fewer, stronger layout decisions; reduce unnecessary nesting
- No card-on-card-on-card; containment only when it adds clarity

### Typography

- Tight type scale with minimal size variance
- Hierarchy from weight, spacing, placement — not dramatic scaling
- Headings restrained, body text readable and consistent, labels understated
- Prefer tighter tracking and line height while maintaining legibility

### Components

- Light, quiet, precise, refined, consistent
- One strong pattern per component type
- Buttons: clear primary/secondary hierarchy, subtle treatment, calm states
- Inputs/forms: subtle field styling, aligned labels, strong spacing, clean focus states
- Cards: intentional, not automatic; prefer open composition
- Tables: clean structure, subtle row separation, readable spacing, minimal controls
- Navigation: predictable, quiet, understated
- Icons: one set, consistent sizing, restrained use

### Color

- Neutral tones dominate — use shadcn's CSS variable system (`bg-background`, `text-foreground`, `bg-muted`, etc.)
- Never hardcode Tailwind color classes (`bg-gray-*`, `bg-white`) — this breaks dark mode
- Accent color sparingly and semantically
- Color for meaning, not decoration

### Interaction

- Subtle hover/focus/selected/loading/disabled states
- Smooth transitions, never flashy
- Motion reinforces calmness

### Anti-patterns

Do not produce any of the following:

- Generic SaaS dashboard energy
- Default shadcn demos shipped as-is
- Dense enterprise admin panel aesthetics
- Excessive borders, cards, badges, dividers, shadows
- Loud gradients, oversaturated surfaces, colorful widgets
- Crowded forms, dense layouts
- Decorative motion, flashy animation
- Large typography jumps for hierarchy
- Too many button styles or component variants
- Card-on-card nesting
- Generic table-heavy admin styling
- Overdesigned marketing energy inside an app

## shadcn foundation

shadcn/ui is the component and color baseline. The job is to refine it into the restrained language — not replace it, not ignore it, and definitely not ship it looking stock.

### Always use CSS variables for color

shadcn's theming runs through CSS variables in `globals.css`. This is the color system — and it's what makes dark mode work automatically. Always use the semantic color classes:

```
✅  bg-background  text-foreground  border-border
✅  bg-muted  text-muted-foreground  bg-primary  text-primary-foreground
✅  bg-card  bg-popover  bg-accent  bg-destructive

❌  bg-gray-100  text-gray-500  border-gray-200  bg-white  text-black
```

Hardcoded Tailwind color classes (like `bg-gray-*` or `bg-white`) break dark mode and bypass the design system. If you need a color, it should come from a CSS variable. The only exception is opacity modifiers on semantic colors when needed (e.g., `border-border/50`).

### Customize the theme variables

The first lever for making shadcn not look like default shadcn is adjusting the CSS variables in `globals.css`:

- **`--radius`**: Reduce for a more restrained feel. `0.375rem` or `0.5rem` — not `0.75rem`.
- **`--border`**: Slightly lower contrast than default. Borders should be felt, not seen.
- **`--primary`**: Keep it understated. It's an accent, not a shout.
- **`--muted`**: This is the workhorse for subtle backgrounds. Make sure it's actually subtle.

### Refining components — what "not default" looks like

The second lever is how you compose and style the components themselves.

**Card — default vs. refined:**

Default shadcn wraps everything in `<Card>` with `<CardHeader>` and `<CardContent>`. Often the card is unnecessary — spacing and typography create the grouping on their own:

```tsx
// Default — card doing nothing structural
<Card>
  <CardHeader>
    <CardTitle>Team Members</CardTitle>
    <CardDescription>Manage your team and roles.</CardDescription>
  </CardHeader>
  <CardContent>...</CardContent>
</Card>

// Refined — open composition, card removed
<div className="space-y-4">
  <div>
    <h2 className="text-sm font-medium">Team Members</h2>
    <p className="text-sm text-muted-foreground">Manage your team and roles.</p>
  </div>
  <div className="space-y-2">...</div>
</div>
```

Use `<Card>` only when you need explicit containment — a clickable surface, a draggable item, a visually distinct group inside a larger layout.

**Button — refinement:**

- Tighten padding: `h-9 px-3` or `h-8 px-3 text-sm` feels more restrained than the default `h-10 px-4 py-2`
- Lean on `variant="ghost"` and `variant="outline"` for secondary actions — `variant="default"` (solid primary) is for the one main action on a screen
- Keep button labels short and sentence case

**Table — refinement:**

- Reduce row height from default padding — tighter rows read as more refined
- Use `text-muted-foreground` for secondary columns to create quiet hierarchy
- Subtle hover: `hover:bg-muted/50` rather than `hover:bg-muted`
- Minimal header styling — don't bold everything, don't add background color to the header row

### Design tokens

These are starting points for the restrained feel. The point isn't to be rigid — it's to have a baseline that produces consistent, calm output.

| Property | Guidance |
|---|---|
| **Type scale** | Stay within `text-xs` through `text-lg`. Use `text-xl` for page titles only. No `text-2xl`+ in product UI. |
| **Section spacing** | `space-y-6` or `gap-6` between major sections |
| **Group spacing** | `space-y-2` or `gap-2` within related items |
| **Page padding** | `p-6` or `px-6 py-8` — enough to breathe |
| **Border radius** | `rounded-md` on components. Never `rounded-xl` or `rounded-full` on containers. |
| **Shadows** | `shadow-sm` sparingly, or none. Never `shadow-lg`+. |
| **Border weight** | Default `border` (1px). Use `border-border` or `border-border/50` for subtler lines. |

## Workflow

When building or refining UI, follow this order:

1. **Structure** — layout, spacing, grouping, alignment
2. **Typography** — restrained hierarchy, weight over size
3. **Component refinement** — adapt shadcn into the calm design language
4. **Unification** — make repeated patterns feel cohesive
5. **Noise reduction** — strip anything that doesn't earn its place
6. **Color** — neutral system with semantic accents
7. **Interaction** — polish states subtly
8. **Final check** — run the self-review below

## Self-review

Score 1–5 on each. Revise until all are 4+.

| Criterion | Question |
|---|---|
| Calm | Does this feel calm at first glance — or busy? |
| Hierarchy | Is hierarchy from spacing and structure — or oversized type? |
| Containment | Too many cards, borders, badges, dividers? |
| Authored | Does this feel authored — or templated? |
| Neutral | Would this work in grayscale? |
| Earned | Does every element earn its place? |

## References

For task-specific copy-paste prompts (build, refinement passes, critiques, one-liners), read:
→ `references/prompt-library.md`

For the full system prompt version suitable for injecting into other tools or CLAUDE.md files:
→ `references/system-prompt.md`

Related Skills

pragmatic

7
from brijr/vibe

Apply Pragmatic Programmer principles when building new features. Enforces ETC (Easy to Change), real DRY, tracer bullets, orthogonality, broken windows, and good-enough discipline. Use when the user asks to build, implement, add, or scaffold a new feature, endpoint, module, or system. Do not use for one-line fixes, typo corrections, or purely cosmetic changes.

ai-sdk

7
from brijr/vibe

Answer questions about the AI SDK and help build AI-powered features. Use when developers: (1) Ask about AI SDK functions like generateText, streamText, ToolLoopAgent, embed, or tools, (2) Want to build AI agents, chatbots, RAG systems, or text generation features, (3) Have questions about AI providers (OpenAI, Anthropic, Google, etc.), streaming, tool calling, structured output, or embeddings, (4) Use React hooks like useChat or useCompletion. Triggers on: "AI SDK", "Vercel AI SDK", "generateText", "streamText", "add AI to my app", "build an agent", "tool calling", "structured output", "useChat".

calmly

7
from Demerzels-lab/elsamultiskillagent

Manage macOS Calendar events from the command line using EventKit.

Calm User Frustration

7
from Demerzels-lab/elsamultiskillagent

**When to use:** User has a task they want to do or want you to do, or they feel frustrated, upset, stressed, or expressing negative emotions about their work, tasks, or the system itself.

mooring-design-calm-buoy-systems

5
from vamseeachanta/workspace-hub

Sub-skill of mooring-design: CALM Buoy Systems (+2).

swe-cli-skills

12
from SylphAI-Inc/skills

Senior engineer CLI expertise for AI agents — workflows, safety guardrails, gotchas, and anti-patterns across cloud, IaC, containers, databases, dev tools, and platforms

DevOps & Infrastructure

PicoClaw Fleet

11
from EricGrill/agents-skills-plugins

Orchestrate a fleet of remote PicoClaw workers over SSH for fast, ephemeral one-shot tasks.

DevOps & Infrastructure

VibeCollab — Setup Instructions for AI Assistants

9
from flashpoint493/VibeCollab

You are helping a user set up VibeCollab in their project.

Workflow & Productivity

raycast-extension-docs

9
from lemikeone/Codex-skill-raycast-extension

Guidance for building, debugging, and publishing Raycast extensions using the Raycast documentation set. Use when Codex needs to create or modify Raycast extensions (React/TypeScript/Node), consult Raycast API reference or UI components, build AI extensions, handle manifest/lifecycle/preferences, troubleshoot issues, or prepare/publish extensions to the Raycast Store or Teams.

Coding & Development

evomap

9
from hyz0906/paper

Connect to the EvoMap collaborative evolution marketplace. Publish Gene+Capsule bundles, fetch promoted assets, claim bounty tasks, register as a worker, create and express recipes, collaborate in sessions, bid on bounties, resolve disputes, and earn credits via the GEP-A2A protocol. Use when the user mentions EvoMap, evolution assets, A2A protocol, capsule publishing, agent marketplace, worker pool, recipe, organism, session collaboration, or service marketplace.

AI Agent Marketplace

maestro

8
from Viniciuscarvalho/maestro

Intelligent skill knowledge gateway. Routes tasks to the right knowledge without loading all skills into context. MUST be consulted before any coding task — call the search_skills MCP tool to retrieve relevant expertise from 100+ indexed skills covering Swift, SwiftUI, concurrency, testing, architecture, performance, and security.

Coding & Development

opentui

7
from LeonardoTrapani/better-skills

Comprehensive OpenTUI skill for building terminal user interfaces. Covers the core imperative API, React reconciler, and Solid reconciler. Use for any TUI development task including components, layout, keyboard handling, animations, and testing.

Coding & Development