swiss-design – skill Thiết kế & UI cho agent AI
Hướng dẫn triển khai web và app theo Swiss Design (International Typographic Style). Kích hoạt khi người dùng muốn hệ lưới chặt chẽ, typography mạnh và căn lề sạch, không đối xứng.
Cài skill swiss-design bằng một lệnh
Chọn công cụ bạn đang dùng, copy lệnh và dán vào terminal. Skill sẽ nằm trong thư mục skills của công cụ đó và sẵn sàng dùng ở phiên làm việc tiếp theo.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/swiss-design-81559.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /swiss-design – rồi mô tả công việc bạn muốn làm.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/swiss-design-81559.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $swiss-design – rồi mô tả công việc bạn muốn làm.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/swiss-design-81559.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /swiss-design – rồi mô tả công việc bạn muốn làm.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/swiss-design-81559.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /swiss-design – rồi mô tả công việc bạn muốn làm.
Nội dung SKILL.md
Nội dung SKILL.md gốc bằng tiếng Anh.
Swiss Design (International Typographic Style)
> "Form follows function. The grid is absolute. Typography is the primary visual element."
When to Use
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.
Core Principles
1. Mathematical Grids: Everything aligns to a strict underlying grid. Asymmetry is preferred over centered text.
2. Sans-Serif Typography: Helvetica is the king, but any clean, neutral sans-serif works. Flush left, ragged right text alignment.
3. Objective Photography: If images are used, they should be objective, documentary-style photos, not stylized illustrations.
Visual DNA
- Colors: Very limited. Usually just black, white, and ONE highly saturated accent color (often primary red, blue, or yellow). The Industrial Chic palette works perfectly.
- Typography:
Helvetica Neue,Inter, orRoboto. Huge contrast in font sizes (e.g., massive 6rem headers paired with 1rem body text). - Layout: Do NOT center text. Ever.
Web Implementation
- Use CSS Grid extensively. Let columns dictate the layout.
- CSS Example:
body {
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: clamp(2rem, 6vw, 6rem);
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 */
}App Implementation
SwiftUI
struct 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)
}
}- Strict
alignment: .leadingeverywhere. Never use.center. - Use
Spacer().frame(width: X)inHStacks to intentionally push content off the left margin, creating the classic Swiss indented asymmetrical grid.
Flutter
class 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.startis mandatory on all Columns.- Use a
Rowwith a fixedSizedBoxwidth on the left and anExpandedwidget on the right to enforce the asymmetrical grid column.
React Native
const 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>
);
};- Use a licensed, registered Helvetica Neue font family or a system sans-serif fallback. The contrast between
HelveticaNeue-CondensedBlackfor headers andHelveticaNeue-Regularfor body copy defines this style. - Use
flexDirection: 'row'to build the strict column structure.
Jetpack Compose
@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
… (nội dung đầy đủ có trong gói tải về)
Skill liên quan
- synthwave – Hướng dẫn triển khai web và app theo phong cách Synthwave. Kích hoạt khi người dùng muốn…
- tailwind-design-system – Xây dựng design system sẵn sàng production với Tailwind CSS, gồm design token, biến thể…
- tailwind-patterns – Nguyên tắc Tailwind CSS v4. Cấu hình ưu tiên CSS, container query, pattern hiện đại…
- tastegate – Xây dựng hoặc sửa frontend để trông có thiết kế, không giống do AI tạo ra, rồi kiểm…
- theme-factory – Skill này cung cấp bộ sưu tập theme font và màu chuyên nghiệp, mỗi theme có bảng màu và…
- threejs-animation – Hoạt ảnh Three.js - hoạt ảnh keyframe, hoạt ảnh skeletal, morph targets, pha trộn…
- threejs-shaders – Shader trong Three.js - GLSL, ShaderMaterial, uniforms, hiệu ứng tùy chỉnh. Dùng khi tạo…
- threejs-skills – Tạo cảnh 3D, trải nghiệm tương tác và hiệu ứng hình ảnh bằng Three.js. Dùng khi người…