frutiger-aero – skill Thiết kế & UI cho agent AI
Hướng dẫn triển khai web và app theo phong cách Frutiger Aero. Kích hoạt khi người dùng muốn gradient bóng bẩy, phong cách công nghệ đầu những năm 2000 lấy cảm hứng từ thiên nhiên, cùng các họa tiết kính và nước.
Cài skill frutiger-aero 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/frutiger-aero-65526.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /frutiger-aero – 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/frutiger-aero-65526.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $frutiger-aero – 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/frutiger-aero-65526.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /frutiger-aero – 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/frutiger-aero-65526.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /frutiger-aero – 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.
Frutiger Aero
> "The aesthetic of mid-2000s optimism. Glossy plastic, clear water, blue skies, and eco-friendly technology."
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. Hyper-Glossy Textures: Buttons look like polished glass or wet plastic. Extensive use of convex gradients and specular highlights.
2. Skeuomorphic Nature: Motifs of green grass, blue skies, water droplets, and bubbles intersecting with sleek glass technology (think Windows Aero or early iOS).
3. Translucency: Frosted glass effects, but much more saturated and reflective than modern glassmorphism.
Visual DNA
- Colors: Cyan, sky blue, lime green, and pure white. Avoid dark themes entirely.
- Typography: Clean, highly legible humanist sans-serifs (like the font *Frutiger*,
Segoe UI, orMyriad Pro). - Styling: Drop shadows are deep. Highlights are bright, sharp white lines at the top of buttons.
Web Implementation
- Use multiple box-shadows (inset for the gloss, outset for depth) and linear-gradients.
- CSS Example:
body {
/* Classic blue sky / green grass gradient */
background: linear-gradient(to bottom, #87CEEB 0%, #E0F6FF 60%, #98FB98 100%);
font-family: 'Segoe UI', Tahoma, sans-serif;
}
.aero-btn {
background: linear-gradient(to bottom, #73c8f8 0%, #1583d7 50%, #0361a3 50%, #299eef 100%);
color: white;
border: 1px solid #024b7f;
border-radius: 20px;
padding: 12px 32px;
font-weight: 600;
text-shadow: 0 -1px 1px rgba(0,0,0,0.5);
/* The Glossy Highlight and Depth */
box-shadow:
inset 0 1px 1px rgba(255,255,255,0.8), /* Top edge highlight */
inset 0 15px 15px rgba(255,255,255,0.3), /* Convex plastic shine */
0 4px 6px rgba(0,0,0,0.2); /* Drop shadow */
}
.aero-panel {
/* Windows Vista/7 Aero Glass */
background: rgba(255, 255, 255, 0.4);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.8);
border-top-color: #ffffff; /* Brighter top edge */
border-radius: 8px;
box-shadow: 0 10px 20px rgba(0,0,0,0.1);
}App Implementation
SwiftUI
struct FrutigerAeroView: View {
var body: some View {
ZStack {
// Classic sky to grass gradient
LinearGradient(
colors: [Color(hex: "87CEEB"), Color(hex: "E0F6FF"), Color(hex: "98FB98")],
startPoint: .top, endPoint: .bottom
).ignoresSafeArea()
// Glossy Button
Button(action: {}) {
Text("Windows Vista")
.font(.headline)
.foregroundColor(.white)
.shadow(color: .black.opacity(0.5), radius: 1, y: -1) // Inset text shadow effect
.padding(.horizontal, 40)
.padding(.vertical, 16)
.background(
// Base gradient
LinearGradient(
stops: [
.init(color: Color(hex: "73c8f8"), location: 0.0),
.init(color: Color(hex: "1583d7"), location: 0.5),
.init(color: Color(hex: "0361a3"), location: 0.5), // Sharp color stop
.init(color: Color(hex: "299eef"), location: 1.0)
],
startPoint: .top, endPoint: .bottom
)
)
.cornerRadius(25)
.overlay(
// Top white specular highlight
RoundedRectangle(cornerRadius: 25)
.stroke(
LinearGradient(colors: [.white, .clear], startPoint: .top, endPoint: .bottom),
lineWidth: 1.5
)
)
.shadow(color: .black.opacity(0.3), radius: 5, y: 4)
}
}
}
}
// Note: Color(hex:) requires a custom extension in SwiftUI.- The signature Frutiger Aero "gel" look requires a sharp color transition right in the middle. Set two gradient stops at
0.5with different colors. - An
.overlaywith a top-down white-to-clear gradient stroke creates the glass highlight edge.
Flutter
class FrutigerAeroScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
// Sky/Grass background
decoration: const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter, end: Alignment.bottomCenter,
colors: [Color(0xFF87CEEB), Color(0xFFE0F6FF), Color(0xFF98FB98)],
),
),
child: Center(
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(25),
boxShadow: const [BoxShadow(color: Colors.black38, blurRadius: 6, offset: Offset(0, 4))],
// Glossy Gel Button
gradient: const LinearGradient(
begin: Alignment.topCenter, end: Alignment.bottomCenter,
stops: [0.0, 0.5, 0.5, 1.0], // Sharp transition at 50%
colors: [
Color(0xFF73C8F8), // Light top
Color(0xFF1583D7), // Mid top
Color(0xFF0361A3), // Dark mid (creates the glass horizon)
Color(0xFF299EEF), // Bright bottom reflection
],
),
border: Border.all(color: Colors.white.withOpacity(0.5), width: 1),
),
child: Material(
color: Colors.transparent,
child: InkWell(
borderRadius: BorderRadius.circular(25),
onTap: () {},
child: const Padding(
padding: EdgeInsets.symmetric(horizontal: 40, vertical: 16),
child: Text(
'Media Player',
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
shadows: [Shadow(color: Colors.black54, offset: Offset(0, -1))],
),
),
),
),
),
),
),
),
);
}
}- Flutter's
LinearGradientstopsarray is perfect for this. Providing0.5twice creates a hard line that mimics a curved glass reflection. - Use
Textshadows with a negativeoffset: Offset(0, -1)to recreate the classic etched-text look of the 2000s.
React Native
import LinearGradient from 'react-native-linear-gradient';
const FrutigerAeroScreen = () => {
return (
<LinearGradient
colors={['#87CEEB', '#E0F6FF', '#98FB98']}
style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}
>
<View style={{
shadowColor: '#000', shadowOffset: { width: 0, height: 4 },
shadowOpacity: 0.3, shadowRadius: 5, elevation: 8
}}>
<LinearGradient
colors={['#73C8F8', '#1583D7', '#0361A3', '#299EEF']}
locations={[0, 0.5, 0.5, 1]} // The sharp glass horizon
style={{
borderRadius: 25,
paddingVertical: 16,
paddingHorizontal: 40,
borderWidth: 1,
borderColor: 'rgba(255,255,255,0.6)',
borderTopWidth: 2 // Stronger specular highlight on top
}}
>
<Text style={{
color: '#FFF',
fontWeight: 'bold',
textShadowColor: 'rgba(0,0,0,0.5)',
textShadowOffset: { width: 0, height: -1 },
textShadowRadius: 1
}}>
Glossy Button
</Text>
</LinearGradient>
</View>
</LinearGradient>
);
};react-native-linear-gradientsupportslocations. Set them to[0, 0.5, 0.5, 1]to create the two-tone convex reflection.- Setting
borderTopWidth: 2with a white border color effectively simulates the bright white top-edge highlight of a shiny plastic object.
Jetpack Compose
@Composable
fun FrutigerAeroScreen() {
Box(
modifier = Modifier
.fillMaxSize()
.background(
Brush.verticalGradient(listOf(Color(0xFF87CEEB), Color(0xFFE0F6FF), Color(0xFF98FB98)))
),
contentAlignment = Alignment.Center
) {
// Glossy Button
val glassBrush = Brush.verticalGradient(
0.0f to Color(0xFF73C8F8),
0.49f to Color(0xFF1583D7),
0.5f to Color(0xFF0361A3), // Sharp reflection line
1.0f to Color(0xFF299EEF)
)
Box(
modifier = Modifier
.shadow(8.dp, RoundedCornerShape(25.dp))
.background(gla… (nội dung đầy đủ có trong gói tải về)
Skill liên quan
- game-art – Nguyên tắc nghệ thuật game. Lựa chọn phong cách hình ảnh, quy trình tài nguyên, quy…
- game-audio – Nguyên tắc âm thanh game. Thiết kế âm thanh, tích hợp nhạc nền, hệ thống âm thanh thích…
- senior-computer-vision – Skill kỹ thuật thị giác máy tính cho phát hiện đối tượng, phân đoạn ảnh và hệ thống thị…
- game-design – Nguyên tắc thiết kế game. Cấu trúc GDD, cân bằng game, tâm lý người chơi, hệ thống tiến…
- game-development – Bộ điều phối phát triển game. Định tuyến theo nền tảng, chiều không gian và mức phù hợp…
- generate-nanobanana – Tạo và chỉnh sửa hình ảnh/video bằng model media của Gemini (Nano Banana 2/Pro, Gemini…
- geo-brand-mentions – Công cụ quét đề cập thương hiệu và độ uy tín cho khả năng hiển thị trên AI.
- senior-frontend – Skill phát triển frontend cho ứng dụng React, Next.js, TypeScript và Tailwind CSS. Dùng…