Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Web and App implementation guide for Soft Pastel Design. Trigger when user wants gentle colors, calming UI, baby/lifestyle branding, or low-contrast aesthetics.
.claude/skills/lingxling-soft-pastel/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 71% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 41% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 127% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 98% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 193% | 0% |
> "Calm, airy, and gentle. A low-stress interface built on washed-out, cheerful hues."
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.
#FFFBF7) rather than clinical #FFFFFF.Quicksand, Nunito) or elegant, low-contrast serifs. Avoid aggressive, ultra-bold fonts.css:root { --pastel-bg: #FFFBF7; --pastel-pink: #FFD1DC; --pastel-blue: #AEC6CF; --pastel-green: #B7E4C7; --pastel-text: #4A4A4A; /* Soft dark grey, NOT pure black */ } body { background-color: var(--pastel-bg); color: var(--pastel-text); font-family: 'Nunito', sans-serif; line-height: 1.6; } .pastel-card { background-color: #ffffff; border-radius: 24px; padding: 40px; /* Tinted, very soft shadow */ box-shadow: 0 20px 40px rgba(174, 198, 207, 0.15); } .pastel-pill { background-color: var(--pastel-pink); color: #a05a6c; /* Darker version of the pink for contrast */ border-radius: 50px; padding: 8px 24px; font-weight: 700; display: inline-block; } .pastel-btn { background-color: var(--pastel-blue); color: #2b5563; /* Darker text */ border: none; border-radius: 12px; padding: 16px 32px; transition: transform 0.2s; } .pastel-btn:hover { transform: translateY(-2px); box-shadow: 0 10px 20px rgba(174, 198, 207, 0.4); }
swiftstruct SoftPastelView: View { // Pastel Palette let bg = Color(hex: "FFFBF7") let pink = Color(hex: "FFD1DC") let blue = Color(hex: "AEC6CF") let textDark = Color(hex: "4A4A4A") var body: some View { ScrollView { VStack(spacing: 32) { // Pastel Card VStack(alignment: .leading, spacing: 16) { Text("Calm & Airy") .font(.custom("Nunito-Bold", size: 28)) .foregroundColor(textDark) Text("Generous whitespace and soft corners prevent the desaturated colors from feeling muddy.") .font(.custom("Nunito-Regular", size: 16)) .foregroundColor(textDark.opacity(0.8)) .lineSpacing(6) } .padding(40) .frame(maxWidth: .infinity, alignment: .leading) .background(Color.white) .cornerRadius(32) // Soft, large radius // Tinted pastel shadow instead of black/gray .shadow(color: blue.opacity(0.2), radius: 30, y: 15) // Pastel Button Button(action: {}) { Text("Gentle Action") .font(.custom("Nunito-Bold", size: 18)) .foregroundColor(Color(hex: "2B5563")) // Darker contrast of the blue .frame(maxWidth: .infinity) .padding(.vertical, 20) .background(blue) .cornerRadius(20) } } .padding(24) } .background(bg.ignoresSafeArea()) } }
shadow(color:) must be tinted with one of your pastel palette colors, never black or gray.dartclass SoftPastelScreen extends StatelessWidget { final Color bg = const Color(0xFFFFFBF7); final Color pink = const Color(0xFFFFD1DC); final Color blue = const Color(0xFFAEC6CF); final Color textDark = const Color(0xFF4A4A4A); @override Widget build(BuildContext context) { return Scaffold( backgroundColor: bg, body: SingleChildScrollView( padding: const EdgeInsets.all(24.0), child: Column( children: [ // Pastel Card Container( width: double.infinity, padding: const EdgeInsets.all(40), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(32), // Soft edges boxShadow: [ // Tinted shadow BoxShadow(color: blue.withOpacity(0.2), blurRadius: 30, offset: const Offset(0, 15)) ], ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text('Calm & Airy', style: TextStyle(fontFamily: 'Nunito', fontSize: 28, fontWeight: FontWeight.bold, color: textDark)), const SizedBox(height: 16), Text('Generous whitespace and soft corners.', style: TextStyle(fontFamily: 'Nunito', fontSize: 16, height: 1.6, color: textDark.withOpacity(0.8))), ], ), ), const SizedBox(height: 32), // Pastel Button ElevatedButton( onPressed: () {}, style: ElevatedButton.styleFrom( backgroundColor: blue, foregroundColor: const Color(0xFF2B5563), // Darker text for contrast minimumSize: const Size(double.infinity, 60), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), elevation: 0, // Remove default harsh shadow ), child: const Text('Gentle Action', style: TextStyle(fontFamily: 'Nunito', fontSize: 18, fontWeight: FontWeight.bold)), ), ], ), ), ); } }
elevation on Flutter buttons and cards if you want to apply custom tinted drop shadows. Default elevations cast black shadows.jsxconst SoftPastelScreen = () => { const colors = { bg: '#FFFBF7', blue: '#AEC6CF', textDark: '#4A4A4A' }; return ( <ScrollView style={{ flex: 1, backgroundColor: colors.bg, padding: 24 }}> {/* Pastel Card */} <View style={{ backgroundColor: '#FFFFFF', borderRadius: 32, padding: 40, marginBottom: 32, // iOS tinted shadow shadowColor: colors.blue, shadowOffset: { width: 0, height: 15 }, shadowOpacity: 0.2, shadowRadius: 30, // Android tinted shadow (Requires Android 9+) elevation: 10, shadowColor: colors.blue, }}> <Text style={{ fontFamily: 'Nunito-Bold', fontSize: 28, color: colors.textDark, marginBottom: 16 }}> Calm & Airy </Text> <Text style={{ fontFamily: 'Nunito-Regular', fontSize: 16, lineHeight: 26, color: colors.textDark, opacity: 0.8 }}> Generous whitespace and soft corners prevent the desaturated colors from feeling muddy. </Text> </View> {/* Pastel Button */} <TouchableOpacity style={{ backgroundColor: colors.blue, borderRadius: 20, paddingVertical: 20, alignItems: 'center' }}> <Text style={{ fontFamily: 'Nunito-Bold', fontSize: 18, color: '#2B5563' }}> Gentle Action </Text> </TouchableOpacity> </ScrollView> ); };
#FFFBF7) so that pure #FFFFFF cards pop nicely against it without harsh borders.shadowColor combined with elevation.kotlin@Composable fun SoftPastelScreen() { val bg = Color(0xFFFFFBF7) val blue = Color(0xFFAEC6CF) val textDark = Color(0xFF4A4A4A) Column( modifier = Modifier.fillMaxSize().background(bg).verticalScroll(rememberScrollState()).padding(24.dp) ) { // Pastel Card Box( modifier = Modifier .fillMaxWidth() .shadow( elevation = 20.dp, shape = RoundedCornerShape(32.dp), ambientColor = blue, // Tinted shadow spotColor = blue ) .background(Color.White, RoundedCornerShape(32.dp)) .padding(40.dp) ) { Column { Text( text = "Calm & Airy", fontSize = 28.sp, fontWeight = FontWeight.Bold, color = textDark, fontFamily = FontFamily.SansSerif // Replace with Nunito ) Spacer(Modifier.height(16.dp)) Text( text = "Generous whitespace and soft corners.", fontSize = 16.sp, lineHeight = 26.sp, color = textDark.copy(alpha = 0.8f), fontFamily = FontFamily.SansSerif ) } } Spacer(Modifier.height(32.dp)) // Pastel Button Button( onClick = { }, colors = ButtonDefaults.buttonColors(containerColor = blue, contentColor = Color(0xFF2B5563)), shape = RoundedCornerShape(20.dp), modifier = Modifier.fillMaxWidth().height(60.dp), elevation = null ) { Text("Gentle Action", fontSize = 18.sp, fontWeight = FontWeight.Bold) } } }
shadow modifier in Compose takes ambientColor and spotColor. Set both to your pastel accent color to achieve the soft tinted glow.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | pass→pass | 13,172 | 13,608 | +3% | 1 | 1 | 0% | 2,345 | 5,017 | +114% | 0 | 0 | — |
case-01 | fail→fail | 31,566 | 28,716 | -9% | 1 | 1 | 0% | 4,958 | 7,264 | +47% | 0 | 0 | — |
case-02 | pass→pass | 19,281 | 16,358 | -15% | 1 | 1 | 0% | 2,824 | 5,498 | +95% | 0 | 0 | — |
case-03 | fail→pass | 18,943 | 23,297 | +23% | 1 | 1 | 0% | 3,871 | 6,608 | +71% | 0 | 0 | — |
case-04 | fail→pass | 23,537 | 20,560 | -13% | 1 | 1 | 0% | 4,330 | 6,103 | +41% | 0 | 0 | — |
case-06 | pass→pass | 17,492 | 19,650 | +12% | 1 | 1 | 0% | 3,369 | 5,787 | +72% | 0 | 0 | — |
case-07 | pass→pass | 9,604 | 9,234 | -4% | 1 | 1 | 0% | 1,654 | 4,602 | +178% | 0 | 0 | — |
case-08 | pass→pass | 13,477 | 13,152 | -2% | 1 | 1 | 0% | 2,597 | 4,721 | +82% | 0 | 0 | — |
case-09 | pass→pass | 17,120 | 11,397 | -33% | 1 | 1 | 0% | 2,477 | 4,628 | +87% | 0 | 0 | — |
case-10 | fail→pass | 14,738 | 10,663 | -28% | 1 | 1 | 0% | 2,201 | 4,989 | +127% | 0 | 0 | — |
case-11 | pass→pass | 13,908 | 11,184 | -20% | 1 | 1 | 0% | 2,009 | 4,990 | +148% | 0 | 0 | — |
case-12 | fail→pass | 18,148 | 17,428 | -4% | 1 | 1 | 0% | 2,724 | 5,393 | +98% | 0 | 0 | — |
case-13 | fail→pass | 8,082 | 8,067 | -0% | 1 | 1 | 0% | 1,335 | 3,914 | +193% | 0 | 0 | — |
case-14 | fail→pass | 18,084 | 15,218 | -16% | 1 | 1 | 0% | 3,586 | 5,730 | +60% | 0 | 0 | — |
case-15 | fail→pass | 16,137 | 21,984 | +36% | 1 | 1 | 0% | 2,999 | 6,547 | +118% | 0 | 0 | — |
case-16 | pass→pass | 18,057 | 12,501 | -31% | 1 | 1 | 0% | 2,748 | 5,379 | +96% | 0 | 0 | — |
case-17 | pass→pass | 18,606 | 16,232 | -13% | 1 | 1 | 0% | 3,763 | 6,476 | +72% | 0 | 0 | — |
case-18 | fail→fail | 24,193 | 18,929 | -22% | 1 | 1 | 0% | 3,487 | 6,593 | +89% | 0 | 0 | — |
case-19 | pass→pass | 23,271 | 29,484 | +27% | 1 | 1 | 0% | 3,555 | 8,255 | +132% | 0 | 0 | — |
case-20 | pass→pass | 14,964 | 16,070 | +7% | 1 | 1 | 0% | 2,449 | 6,429 | +163% | 0 | 0 | — |
case-21 | pass→pass | 24,155 | 17,395 | -28% | 1 | 1 | 0% | 4,173 | 6,569 | +57% | 0 | 0 | — |
case-22 | pass→pass | 38,374 | 35,344 | -8% | 1 | 1 | 0% | 6,149 | 8,859 | +44% | 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 +32 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.