Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Web and App implementation guide for Swiss Design (International Typographic Style). Trigger when user wants strict grid systems, strong typography, and clean, asymmetrical alignment.
.claude/skills/lingxling-swiss-design/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 92% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 38% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 64% | 0% |
> "Form follows function. The grid is absolute. Typography is the primary visual element."
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.
Helvetica Neue, Inter, or Roboto. Huge contrast in font sizes (e.g., massive 6rem headers paired with 1rem body text).cssbody { background-color: #f4f4f4; color: #111; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 1.4; } .swiss-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 20px; padding: 40px; } .swiss-header { grid-column: 1 / 11; /* spans across multiple columns, leaving right side empty */ font-size: 6vw; font-weight: 700; text-transform: lowercase; /* Optional, but common in brutalist/swiss */ margin-bottom: 2rem; line-height: 0.9; letter-spacing: -0.04em; } .swiss-content { grid-column: 4 / 9; /* Indented alignment */ font-size: 1.25rem; text-align: left; /* Flush left, ragged right */ } .swiss-accent { color: #E2001A; /* Classic Swiss Red */ }
swiftstruct SwissDesignView: View { var body: some View { ScrollView { VStack(alignment: .leading, spacing: 0) { // Header Block VStack(alignment: .leading, spacing: 8) { Text("the grid") .font(.custom("Helvetica Neue", size: 60)) .fontWeight(.heavy) .tracking(-2) // Tight letter spacing Text("is absolute.") .font(.custom("Helvetica Neue", size: 60)) .fontWeight(.heavy) .tracking(-2) .foregroundColor(Color(hex: "E2001A")) // Swiss Red } .padding(.horizontal, 24) .padding(.top, 60) .padding(.bottom, 40) Divider().background(Color.black) // Asymmetrical Content Block HStack(alignment: .top, spacing: 20) { // Empty left column (negative space is structural) Spacer().frame(width: 40) VStack(alignment: .leading, spacing: 16) { Text("Form follows function.") .font(.custom("Helvetica Neue", size: 24)) .fontWeight(.bold) Text("Typography is the primary visual element. Everything aligns to a strict underlying grid. Asymmetry is preferred over centered text.") .font(.custom("Helvetica Neue", size: 16)) .lineSpacing(6) } .padding(.vertical, 40) .padding(.trailing, 24) } Divider().background(Color.black) } .frame(maxWidth: .infinity, alignment: .leading) } .background(Color(white: 0.96)) .foregroundColor(.black) } }
alignment: .leading everywhere. Never use .center.Spacer().frame(width: X) in HStacks to intentionally push content off the left margin, creating the classic Swiss indented asymmetrical grid.dartclass SwissDesignScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( backgroundColor: const Color(0xFFF4F4F4), body: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 80), // Header Padding( padding: const EdgeInsets.symmetric(horizontal: 24.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: const [ Text('the grid', style: TextStyle(fontFamily: 'Helvetica', fontSize: 60, fontWeight: FontWeight.w900, height: 0.9, letterSpacing: -2)), Text('is absolute.', style: TextStyle(fontFamily: 'Helvetica', fontSize: 60, fontWeight: FontWeight.w900, height: 0.9, letterSpacing: -2, color: Color(0xFFE2001A))), ], ), ), const SizedBox(height: 40), const Divider(color: Colors.black, thickness: 1, height: 1), // Asymmetrical Content Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ // Structural empty column const SizedBox(width: 64), // Content column Expanded( child: Padding( padding: const EdgeInsets.only(top: 40.0, bottom: 40.0, right: 24.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: const [ Text('Form follows function.', style: TextStyle(fontFamily: 'Helvetica', fontSize: 24, fontWeight: FontWeight.bold)), SizedBox(height: 16), Text('Typography is the primary visual element. Everything aligns to a strict underlying grid.', style: TextStyle(fontFamily: 'Helvetica', fontSize: 16, height: 1.4)), ], ), ), ), ], ), const Divider(color: Colors.black, thickness: 1, height: 1), ], ), ), ); } }
CrossAxisAlignment.start is mandatory on all Columns.Row with a fixed SizedBox width on the left and an Expanded widget on the right to enforce the asymmetrical grid column.jsxconst SwissDesignScreen = () => { return ( <ScrollView style={{ flex: 1, backgroundColor: '#F4F4F4' }}> {/* Header */} <View style={{ paddingHorizontal: 24, paddingTop: 80, paddingBottom: 40 }}> <Text style={{ fontFamily: 'HelveticaNeue-CondensedBlack', fontSize: 60, lineHeight: 60, letterSpacing: -2, color: '#111' }}> the grid </Text> <Text style={{ fontFamily: 'HelveticaNeue-CondensedBlack', fontSize: 60, lineHeight: 60, letterSpacing: -2, color: '#E2001A' }}> is absolute. </Text> </View> <View style={{ height: 1, backgroundColor: '#111' }} /> {/* Asymmetrical Layout */} <View style={{ flexDirection: 'row', paddingVertical: 40 }}> {/* Empty left column */} <View style={{ width: 64 }} /> {/* Content */} <View style={{ flex: 1, paddingRight: 24 }}> <Text style={{ fontFamily: 'HelveticaNeue-Bold', fontSize: 24, color: '#111', marginBottom: 16 }}> Form follows function. </Text> <Text style={{ fontFamily: 'HelveticaNeue-Regular', fontSize: 16, lineHeight: 24, color: '#111' }}> Typography is the primary visual element. Everything aligns to a strict underlying grid. </Text> </View> </View> <View style={{ height: 1, backgroundColor: '#111' }} /> </ScrollView> ); };
HelveticaNeue-CondensedBlack for headers and HelveticaNeue-Regular for body copy defines this style.flexDirection: 'row' to build the strict column structure.kotlin@Composable fun SwissDesignScreen() { Column( modifier = Modifier.fillMaxSize().background(Color(0xFFF4F4F4)).verticalScroll(rememberScrollState()) ) { Spacer(Modifier.height(80.dp)) // Header Column(modifier = Modifier.padding(horizontal = 24.dp, vertical = 40.dp)) { Text( text = "the grid", fontFamily = FontFamily.SansSerif, // Replace with Helvetica fontSize = 60.sp, fontWeight = FontWeight.Black, letterSpacing = (-2).sp, lineHeight = 60.sp, color = Color.Black ) Text( text = "is absolute.", fontFamily = FontFamily.SansSerif, fontSize = 60.sp, fontWeight = FontWeight.Black, letterSpacing = (-2).sp, lineHeight = 60.sp, color = Color(0xFFE2001A) ) } Divider(color = Color.Black, thickness = 1.dp) // Asymmetrical Grid Row Row(modifier = Modifier.fillMaxWidth().padding(vertical = 40.dp)) { // Empty grid column Spacer(modifier = Modifier.width(64.dp)) // Content Column(modifier = Modifier.weight(1f).padding(right = 24.dp)) { Text( text = "Form follows function.", fontSize = 24.sp, fontWeight = FontWeight.Bold, color = Color.Black ) Spacer(Modifier.height(16.dp)) Text( text = "Typography is the primary visual element. Everything aligns to a strict underlying grid.", fontSize = 16.sp, color = Color.Black ) } } Divider(color = Color.Black, thickness = 1.dp) } }
Divider(color = Color.Black, thickness = 1.dp) to create the harsh horizontal structural rules.Row, a fixed Spacer width, and a Column with Modifier.weight(1f) to enforce the asymmetrical design.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-11 | fail→fail | 24,224 | 23,315 | -4% | 1 | 1 | 0% | 4,552 | 6,554 | +44% | 0 | 0 | — |
case-01 | fail→pass | 34,113 | 27,442 | -20% | 1 | 1 | 0% | 5,392 | 6,843 | +27% | 0 | 0 | — |
case-02 | fail→pass | 30,283 | 27,600 | -9% | 1 | 1 | 0% | 4,674 | 8,979 | +92% | 0 | 0 | — |
case-03 | fail→fail | 22,812 | 22,414 | -2% | 1 | 1 | 0% | 4,572 | 6,261 | +37% | 0 | 0 | — |
case-04 | fail→pass | 37,595 | 33,935 | -10% | 1 | 1 | 0% | 5,839 | 8,031 | +38% | 0 | 0 | — |
case-05 | fail→pass | 46,234 | 28,690 | -38% | 1 | 1 | 0% | 8,008 | 7,417 | -7% | 0 | 0 | — |
case-06 | fail→pass | 19,987 | 22,665 | +13% | 1 | 1 | 0% | 3,754 | 6,138 | +64% | 0 | 0 | — |
case-07 | fail→pass | 11,005 | 24,076 | +119% | 1 | 1 | 0% | 1,978 | 4,987 | +152% | 0 | 0 | — |
case-08 | fail→pass | 25,167 | 20,718 | -18% | 1 | 1 | 0% | 4,119 | 5,971 | +45% | 0 | 0 | — |
case-09 | fail→pass | 35,284 | 19,800 | -44% | 1 | 1 | 0% | 5,848 | 6,767 | +16% | 0 | 0 | — |
case-10 | fail→pass | 48,319 | 26,644 | -45% | 1 | 1 | 0% | 8,228 | 7,018 | -15% | 0 | 0 | — |
case-12 | fail→pass | 28,148 | 19,268 | -32% | 1 | 1 | 0% | 6,028 | 6,418 | +6% | 0 | 0 | — |
case-13 | fail→pass | 38,843 | 26,574 | -32% | 1 | 1 | 0% | 8,225 | 7,189 | -13% | 0 | 0 | — |
case-14 | fail→pass | 18,982 | 15,739 | -17% | 1 | 1 | 0% | 3,912 | 5,893 | +51% | 0 | 0 | — |
case-15 | fail→pass | 24,302 | 21,603 | -11% | 1 | 1 | 0% | 3,960 | 7,167 | +81% | 0 | 0 | — |
case-16 | fail→pass | 18,196 | 24,492 | +35% | 1 | 1 | 0% | 3,539 | 7,781 | +120% | 0 | 0 | — |
case-17 | fail→pass | 50,638 | 29,782 | -41% | 1 | 1 | 0% | 7,680 | 8,699 | +13% | 0 | 0 | — |
case-18 | fail→pass | 22,570 | 28,354 | +26% | 1 | 1 | 0% | 3,557 | 6,976 | +96% | 0 | 0 | — |
case-19 | fail→fail | 23,194 | 19,816 | -15% | 1 | 1 | 0% | 3,557 | 5,807 | +63% | 0 | 0 | — |
case-20 | pass→pass | 22,662 | 23,902 | +5% | 1 | 1 | 0% | 4,648 | 7,638 | +64% | 0 | 0 | — |
case-21 | pass→pass | 18,944 | 17,157 | -9% | 1 | 1 | 0% | 3,712 | 6,349 | +71% | 0 | 0 | — |
case-22 | pass→pass | 31,180 | 29,137 | -7% | 1 | 1 | 0% | 5,053 | 7,280 | +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 +73 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.