Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Web and App implementation guide for the Minimalism design style. Trigger when the user wants simple layouts, lots of whitespace, few colors, and clear hierarchy.
.claude/skills/lingxling-minimalism/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 34% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 22% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 82% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 64% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 50% | 0% |
> "Less is more. Remove until nothing is left but the essential."
Use this sub-style when the user's request matches the aesthetic described above. This is a child reference of the design-it skill and is not meant to be triggered directly.
Inter, Helvetica Neue, SF Pro). Use extreme contrast in weights (Thin vs Black).gap properties.css.minimal-container { max-width: 800px; margin: 0 auto; padding: 120px 24px; background-color: var(--bg-primary); } .minimal-title { font-size: 3rem; font-weight: 300; letter-spacing: -0.02em; margin-bottom: 48px; } .minimal-btn { background: transparent; border: 1px solid var(--text-primary); padding: 16px 32px; text-transform: uppercase; letter-spacing: 0.1em; transition: all 0.3s ease; }
swiftstruct MinimalView: View { var body: some View { ScrollView { VStack(alignment: .leading, spacing: 48) { Text("Headline") .font(.system(size: 34, weight: .light)) .tracking(-0.5) Text("Body text sits quietly with generous space around it. Let the content breathe.") .font(.system(size: 17, weight: .regular)) .foregroundColor(.secondary) .lineSpacing(6) // Minimal button — just a thin border, no fill Button(action: {}) { Text("Continue") .font(.system(size: 14, weight: .medium)) .tracking(1.5) .textCase(.uppercase) .padding(.horizontal, 32) .padding(.vertical, 16) .overlay( RoundedRectangle(cornerRadius: 0) .stroke(Color.primary, lineWidth: 1) ) } } .padding(.horizontal, 24) .padding(.vertical, 80) } .background(Color(.systemBackground)) } }
VStack(spacing: 40...64) for generous separation between elements..shadow() or Card-like containers. Let whitespace define grouping.Divider() sparingly — only when two adjacent sections need separation.dartclass MinimalScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, body: SingleChildScrollView( padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 80), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'Headline', style: TextStyle( fontSize: 34, fontWeight: FontWeight.w300, letterSpacing: -0.5, color: Colors.black87, ), ), const SizedBox(height: 48), Text( 'Body text sits quietly with generous space around it.', style: TextStyle( fontSize: 17, fontWeight: FontWeight.w400, height: 1.6, color: Colors.black54, ), ), const SizedBox(height: 48), // Minimal button — outlined, no elevation OutlinedButton( onPressed: () {}, style: OutlinedButton.styleFrom( side: const BorderSide(color: Colors.black87, width: 1), shape: const RoundedRectangleBorder(borderRadius: BorderRadius.zero), padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16), ), child: Text( 'CONTINUE', style: TextStyle( fontSize: 14, fontWeight: FontWeight.w500, letterSpacing: 1.5, color: Colors.black87, ), ), ), ], ), ), ); } }
elevation: 0 on all Material widgets (AppBar, Card, FloatingActionButton).SizedBox(height: 48) or larger for vertical spacing. Avoid tight layouts.ThemeData to remove all default shadows: cardTheme: CardTheme(elevation: 0).jsxconst MinimalScreen = () => ( <ScrollView style={{ flex: 1, backgroundColor: '#FFFFFF' }} contentContainerStyle={{ paddingHorizontal: 24, paddingVertical: 80 }} > <Text style={{ fontSize: 34, fontWeight: '300', letterSpacing: -0.5, color: '#1A1A1A', marginBottom: 48, }}> Headline </Text> <Text style={{ fontSize: 17, fontWeight: '400', lineHeight: 28, color: '#666666', marginBottom: 48, }}> Body text sits quietly with generous space around it. </Text> <TouchableOpacity style={{ borderWidth: 1, borderColor: '#1A1A1A', paddingHorizontal: 32, paddingVertical: 16, alignSelf: 'flex-start', }} activeOpacity={0.6} > <Text style={{ fontSize: 14, fontWeight: '500', letterSpacing: 1.5, color: '#1A1A1A', textTransform: 'uppercase', }}> Continue </Text> </TouchableOpacity> </ScrollView> );
paddingVertical: 80 for screen-level spacing. Double what feels natural.elevation and shadowColor properties. No borderRadius on cards.kotlin@Composable fun MinimalScreen() { Column( modifier = Modifier .fillMaxSize() .background(Color.White) .verticalScroll(rememberScrollState()) .padding(horizontal = 24.dp, vertical = 80.dp) ) { Text( text = "Headline", fontSize = 34.sp, fontWeight = FontWeight.Light, letterSpacing = (-0.5).sp, color = Color(0xFF1A1A1A), ) Spacer(modifier = Modifier.height(48.dp)) Text( text = "Body text sits quietly with generous space around it.", fontSize = 17.sp, fontWeight = FontWeight.Normal, lineHeight = 28.sp, color = Color(0xFF666666), ) Spacer(modifier = Modifier.height(48.dp)) // Minimal outlined button OutlinedButton( onClick = {}, shape = RectangleShape, border = BorderStroke(1.dp, Color(0xFF1A1A1A)), colors = ButtonDefaults.outlinedButtonColors(containerColor = Color.Transparent), contentPadding = PaddingValues(horizontal = 32.dp, vertical = 16.dp), ) { Text( text = "CONTINUE", fontSize = 14.sp, fontWeight = FontWeight.Medium, letterSpacing = 1.5.sp, color = Color(0xFF1A1A1A), ) } } }
elevation = 0.dp on all Card, TopAppBar, and FloatingActionButton composables.Spacer(modifier = Modifier.height(48.dp)) consistently for generous vertical gaps.MaterialTheme shape and shadow defaults to remove all depth cues.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 19,282 | 30,679 | +59% | 1 | 1 | 0% | 3,573 | 5,069 | +42% | 0 | 0 | — |
case-02 | fail→fail | 15,781 | 12,436 | -21% | 1 | 1 | 0% | 2,357 | 4,629 | +96% | 0 | 0 | — |
case-03 | fail→pass | 34,914 | 17,597 | -50% | 1 | 1 | 0% | 3,835 | 5,142 | +34% | 0 | 0 | — |
case-04 | fail→fail | 22,433 | 14,919 | -33% | 1 | 1 | 0% | 3,421 | 5,344 | +56% | 0 | 0 | — |
case-05 | fail→fail | 21,857 | 14,589 | -33% | 1 | 1 | 0% | 4,272 | 5,076 | +19% | 0 | 0 | — |
case-06 | fail→pass | 18,481 | 11,982 | -35% | 1 | 1 | 0% | 3,707 | 4,507 | +22% | 0 | 0 | — |
case-07 | fail→fail | 20,956 | 11,987 | -43% | 1 | 1 | 0% | 3,360 | 3,986 | +19% | 0 | 0 | — |
case-08 | fail→fail | 17,219 | 14,421 | -16% | 1 | 1 | 0% | 3,506 | 5,157 | +47% | 0 | 0 | — |
case-09 | fail→fail | 20,799 | 16,404 | -21% | 1 | 1 | 0% | 4,115 | 5,610 | +36% | 0 | 0 | — |
case-10 | fail→pass | 14,742 | 17,347 | +18% | 1 | 1 | 0% | 3,073 | 5,586 | +82% | 0 | 0 | — |
case-11 | fail→fail | 21,968 | 14,965 | -32% | 1 | 1 | 0% | 4,348 | 5,373 | +24% | 0 | 0 | — |
case-12 | fail→pass | 17,596 | 32,714 | +86% | 1 | 1 | 0% | 2,782 | 4,554 | +64% | 0 | 0 | — |
case-13 | fail→fail | 22,177 | 16,859 | -24% | 1 | 1 | 0% | 3,523 | 5,343 | +52% | 0 | 0 | — |
case-14 | fail→pass | 20,637 | 14,247 | -31% | 1 | 1 | 0% | 3,334 | 5,002 | +50% | 0 | 0 | — |
case-15 | fail→pass | 19,459 | 22,723 | +17% | 1 | 1 | 0% | 3,962 | 6,288 | +59% | 0 | 0 | — |
case-16 | fail→pass | 13,763 | 10,225 | -26% | 1 | 1 | 0% | 2,206 | 4,290 | +94% | 0 | 0 | — |
case-17 | fail→pass | 21,525 | 12,596 | -41% | 1 | 1 | 0% | 3,569 | 4,620 | +29% | 0 | 0 | — |
case-18 | fail→fail | 16,280 | 12,003 | -26% | 1 | 1 | 0% | 3,404 | 4,726 | +39% | 0 | 0 | — |
case-19 | fail→fail | 15,026 | 17,269 | +15% | 1 | 1 | 0% | 2,955 | 5,974 | +102% | 0 | 0 | — |
case-20 | pass→pass | 18,359 | 19,408 | +6% | 1 | 1 | 0% | 3,950 | 6,330 | +60% | 0 | 0 | — |
case-21 | pass→pass | 26,786 | 30,528 | +14% | 1 | 1 | 0% | 5,757 | 8,622 | +50% | 0 | 0 | — |
case-22 | pass→pass | 17,379 | 18,413 | +6% | 1 | 1 | 0% | 3,352 | 5,239 | +56% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +36 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.