calm-ui

Applies a restrained, minimalist product design system, influenced by Swiss/Japanese/Scandinavian/German aesthetics, to UI development in React, Next.js, and TypeScript using shadcn/ui.

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.

Applies a restrained, minimalist product design system, influenced by Swiss/Japanese/Scandinavian/German aesthetics, to UI development in React, Next.js, and TypeScript using shadcn/ui.

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?

Applies a restrained, minimalist product design system, influenced by Swiss/Japanese/Scandinavian/German aesthetics, to UI development in React, Next.js, and TypeScript using shadcn/ui.

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

superlocalmemory

84
from qualixar/superlocalmemory

AI agent memory with mathematical foundations. Store, recall, search, and manage memories locally with zero cloud dependency.

workspace-surface-audit

144923
from affaan-m/everything-claude-code

Audit the active repo, MCP servers, plugins, connectors, env surfaces, and harness setup, then recommend the highest-value ECC-native skills, hooks, agents, and operator workflows. Use when the user wants help setting up Claude Code or understanding what capabilities are actually available in their environment.

DevelopmentClaude

ui-demo

144923
from affaan-m/everything-claude-code

Record polished UI demo videos using Playwright. Use when the user asks to create a demo, walkthrough, screen recording, or tutorial video of a web application. Produces WebM videos with visible cursor, natural pacing, and professional feel.

Developer ToolsClaude

token-budget-advisor

144923
from affaan-m/everything-claude-code

Offers the user an informed choice about how much response depth to consume before answering. Use this skill when the user explicitly wants to control response length, depth, or token budget. TRIGGER when: "token budget", "token count", "token usage", "token limit", "response length", "answer depth", "short version", "brief answer", "detailed answer", "exhaustive answer", "respuesta corta vs larga", "cuántos tokens", "ahorrar tokens", "responde al 50%", "dame la versión corta", "quiero controlar cuánto usas", or clear variants where the user is explicitly asking to control answer size or depth. DO NOT TRIGGER when: user has already specified a level in the current session (maintain it), the request is clearly a one-word answer, or "token" refers to auth/session/payment tokens rather than response size.

Productivity & Content CreationClaude

skill-comply

144923
from affaan-m/everything-claude-code

Visualize whether skills, rules, and agent definitions are actually followed — auto-generates scenarios at 3 prompt strictness levels, runs agents, classifies behavioral sequences, and reports compliance rates with full tool call timelines

DevelopmentClaude

santa-method

144923
from affaan-m/everything-claude-code

Multi-agent adversarial verification with convergence loop. Two independent review agents must both pass before output ships.

Quality AssuranceClaude

safety-guard

144923
from affaan-m/everything-claude-code

Use this skill to prevent destructive operations when working on production systems or running agents autonomously.

DevelopmentClaude

repo-scan

144923
from affaan-m/everything-claude-code

Cross-stack source code asset audit — classifies every file, detects embedded third-party libraries, and delivers actionable four-level verdicts per module with interactive HTML reports.

DevelopmentClaude

project-flow-ops

144923
from affaan-m/everything-claude-code

Operate execution flow across GitHub and Linear by triaging issues and pull requests, linking active work, and keeping GitHub public-facing while Linear remains the internal execution layer. Use when the user wants backlog control, PR triage, or GitHub-to-Linear coordination.

DevelopmentClaude

product-lens

144923
from affaan-m/everything-claude-code

Use this skill to validate the "why" before building, run product diagnostics, and pressure-test product direction before the request becomes an implementation contract.

Product ManagementClaude

openclaw-persona-forge

144923
from affaan-m/everything-claude-code

为 OpenClaw AI Agent 锻造完整的龙虾灵魂方案。根据用户偏好或随机抽卡, 输出身份定位、灵魂描述(SOUL.md)、角色化底线规则、名字和头像生图提示词。 如当前环境提供已审核的生图 skill,可自动生成统一风格头像图片。 当用户需要创建、设计或定制 OpenClaw 龙虾灵魂时使用。 不适用于:微调已有 SOUL.md、非 OpenClaw 平台的角色设计、纯工具型无性格 Agent。 触发词:龙虾灵魂、虾魂、OpenClaw 灵魂、养虾灵魂、龙虾角色、龙虾定位、 龙虾剧本杀角色、龙虾游戏角色、龙虾 NPC、龙虾性格、龙虾背景故事、 lobster soul、lobster character、抽卡、随机龙虾、龙虾 SOUL、gacha。

AI Tools & UtilitiesClaude

manim-video

144923
from affaan-m/everything-claude-code

Build reusable Manim explainers for technical concepts, graphs, system diagrams, and product walkthroughs, then hand off to the wider ECC video stack if needed. Use when the user wants a clean animated explainer rather than a generic talking-head script.

DevelopmentClaude