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.
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
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/calm-ui/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How calm-ui Compares
| Feature / Agent | calm-ui | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | easy | N/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
AI Agents for Coding
Browse AI agent skills for coding, debugging, testing, refactoring, code review, and developer workflows across Claude, Cursor, and Codex.
Best AI Skills for Claude
Explore the best AI skills for Claude and Claude Code across coding, research, workflow automation, documentation, and agent operations.
Cursor vs Codex for AI Workflows
Compare Cursor and Codex for AI coding workflows, repository assistance, debugging, refactoring, and reusable developer skills.
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
AI agent memory with mathematical foundations. Store, recall, search, and manage memories locally with zero cloud dependency.
workspace-surface-audit
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.
ui-demo
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.
token-budget-advisor
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.
skill-comply
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
santa-method
Multi-agent adversarial verification with convergence loop. Two independent review agents must both pass before output ships.
safety-guard
Use this skill to prevent destructive operations when working on production systems or running agents autonomously.
repo-scan
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.
project-flow-ops
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.
product-lens
Use this skill to validate the "why" before building, run product diagnostics, and pressure-test product direction before the request becomes an implementation contract.
openclaw-persona-forge
为 OpenClaw AI Agent 锻造完整的龙虾灵魂方案。根据用户偏好或随机抽卡, 输出身份定位、灵魂描述(SOUL.md)、角色化底线规则、名字和头像生图提示词。 如当前环境提供已审核的生图 skill,可自动生成统一风格头像图片。 当用户需要创建、设计或定制 OpenClaw 龙虾灵魂时使用。 不适用于:微调已有 SOUL.md、非 OpenClaw 平台的角色设计、纯工具型无性格 Agent。 触发词:龙虾灵魂、虾魂、OpenClaw 灵魂、养虾灵魂、龙虾角色、龙虾定位、 龙虾剧本杀角色、龙虾游戏角色、龙虾 NPC、龙虾性格、龙虾背景故事、 lobster soul、lobster character、抽卡、随机龙虾、龙虾 SOUL、gacha。
manim-video
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.