ai-native-ui – skill Thiết kế & UI cho agent AI
Hướng dẫn triển khai AI Native UI cho Web và App. Kích hoạt khi người dùng muốn giao diện hội thoại, bố cục thích ứng và thẩm mỹ generative AI.
Cài skill ai-native-ui 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/ai-native-ui-f83d1.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /ai-native-ui – 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/ai-native-ui-f83d1.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $ai-native-ui – 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/ai-native-ui-f83d1.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /ai-native-ui – 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/ai-native-ui-f83d1.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /ai-native-ui – 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.
AI Native UI
> "Fluid, adaptive, and conversational. The interface morphs to serve the content."
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. Conversational First: The chat input or voice prompt is the primary navigation method, not a sidebar of links.
2. Generative States: Loading states aren't spinners; they are shimmering text, morphing gradients, or skeletal layouts that resolve smoothly into content.
3. Adaptive Components: Cards and blocks size themselves dynamically based on the generated content length.
Visual DNA
- Colors: Minimalist Slate combined with a custom indigo or neon accent gradient (these are descriptions, not additional bundled palettes) for the AI elements. The background is clean (white or dark grey), while the AI "presence" is represented by a shifting, iridescent gradient.
- Typography: Highly readable system fonts (
Inter,SF Pro). - Styling: Subtle glowing borders to indicate AI generation in progress.
Web Implementation
- CSS Example:
body {
background-color: #FAFAFA;
color: #1A1A1A;
font-family: 'Inter', sans-serif;
}
/* The AI Chat Input */
.ai-prompt-box {
background: #ffffff;
border-radius: 24px;
padding: 16px 24px;
box-shadow: 0 8px 30px rgba(0,0,0,0.05);
border: 1px solid transparent;
/* AI Glow Border */
background-clip: padding-box, border-box;
background-origin: padding-box, border-box;
background-image:
linear-gradient(#ffffff, #ffffff),
linear-gradient(90deg, #8A2387, #E94057, #F27121);
transition: all 0.3s ease;
}
.ai-prompt-box:focus-within {
box-shadow: 0 12px 40px rgba(233, 64, 87, 0.15);
}
/* Generative Shimmer Text */
.ai-generating-text {
background: linear-gradient(90deg, #aaa 0%, #333 50%, #aaa 100%);
background-size: 200% auto;
color: transparent;
-webkit-background-clip: text;
animation: shine 1.5s linear infinite;
}
@keyframes shine {
to { background-position: 200% center; }
}App Implementation
SwiftUI
struct AINativeInput: View {
@State private var isGenerating = true
@State private var gradientOffset = 0.0
@State private var prompt = ""
var body: some View {
VStack {
// Generative Text Shimmer
if isGenerating {
Text("Synthesizing response...")
.font(.headline)
.foregroundStyle(
LinearGradient(
colors: [.gray.opacity(0.3), .gray, .gray.opacity(0.3)],
startPoint: UnitPoint(x: gradientOffset - 1, y: 0),
endPoint: UnitPoint(x: gradientOffset + 1, y: 0)
)
)
.onAppear {
withAnimation(.linear(duration: 1.5).repeatForever(autoreverses: false)) {
gradientOffset = 1.0
}
}
}
// AI Input Box
HStack {
TextField("Ask anything...", text: $prompt)
Image(systemName: "sparkles")
.foregroundColor(.purple)
}
.padding()
.background(Color.white)
.cornerRadius(24)
.overlay(
RoundedRectangle(cornerRadius: 24)
.stroke(
LinearGradient(colors: [.purple, .pink, .orange], startPoint: .topLeading, endPoint: .bottomTrailing),
lineWidth: 2
)
)
.shadow(color: .pink.opacity(0.15), radius: 20)
}
.padding()
}
}- A shifting
LinearGradientmask over text creates a beautiful "thinking" state. - Use a gradient
.strokeon aRoundedRectangleoverlay to create the signature AI glowing border around input fields.
Flutter
import 'package:shimmer/shimmer.dart';
class AINativeInput extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
// Generative Shimmer
Shimmer.fromColors(
baseColor: Colors.grey[300]!,
highlightColor: Colors.grey[600]!,
child: const Text('Synthesizing response...',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold)),
),
const SizedBox(height: 16),
// AI Input Box
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(24),
boxShadow: [
BoxShadow(color: Colors.pink.withOpacity(0.15), blurRadius: 20),
],
),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(24),
// Gradient border simulation
gradient: const LinearGradient(
colors: [Colors.purple, Colors.pink, Colors.orange],
),
),
padding: const EdgeInsets.all(2), // Border width
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(22),
),
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4),
child: Row(
children: const [
Expanded(
child: TextField(
decoration: InputDecoration(
hintText: 'Ask anything...',
border: InputBorder.none,
),
),
),
Icon(Icons.auto_awesome, color: Colors.purple),
],
),
),
),
),
],
),
);
}
}- The
shimmerpackage is the absolute standard for AI loading states in Flutter. - Gradient borders natively don't exist on
BoxDecoration; simulate them by nesting containers with a gradient background and a solid white inner container.
React Native
// Requires react-native-linear-gradient and react-native-shimmer-placeholder
import LinearGradient from 'react-native-linear-gradient';
import { createShimmerPlaceholder } from 'react-native-shimmer-placeholder';
const ShimmerPlaceHolder = createShimmerPlaceholder(LinearGradient);
const AINativeInput = () => {
return (
<View style={{ padding: 16 }}>
{/* Generative Shimmer */}
<ShimmerPlaceHolder
style={{ width: 200, height: 20, borderRadius: 10, marginBottom: 16 }}
shimmerColors={['#ebebeb', '#c5c5c5', '#ebebeb']}
/>
{/* AI Input Box with Gradient Border */}
<LinearGradient
colors={['#8A2387', '#E94057', '#F27121']}
style={{ borderRadius: 24, padding: 2, shadowColor: '#E94057', shadowRadius: 20, shadowOpacity: 0.2 }}
>
<View style={{
backgroundColor: '#FFF',
borderRadius: 22,
flexDirection: 'row',
alignItems: 'center',
paddingHorizontal: 16,
height: 50
}}>
<TextInput
placeholder="Ask anything..."
style={{ flex: 1, fontSize: 16 }}
/>
<Text style={{ fontSize: 20 }}>✨</Text>
</View>
</LinearGradient>
</View>
);
};react-native-shimmer-placeholderis the best way to handle the morphing skeleton states.- Like Flutter, React Native doesn't have native gradient borders. Wrap the input in a
LinearGradientview withpadding: 2to create the stroke.
Jetpack Compose
@Composable
fun AINativeInput() {
var prompt by remember { mutableStateOf("") }
val infiniteTransition = rememberInfiniteTransition()
val gradientOffset by infiniteTransition.animateFloat(
initialValue = 0f,
targetValue = 1000f,
animationSpec = infiniteRepeatable(
animation = tween(1500, easing = LinearEasing),
repeatMode = RepeatMode.Restart
)
)
Column(modifier = Modifier.padding(16.dp)) {
// Generative Shimmer Text
val shimmerBrush = Brush.linearGradient(
colors = listOf(Color.LightGray, Color.Gray, Color.LightGray),
start = Offset(gradientOffset - 500f, 0f),
end = Offset(gradientOffset, 0f)
)
Text("Synthesizing response...", style = TextStyle(brush = shimmerBrush, fontWeight = FontWeight.Bold))
Spacer(Modifier.height(16.dp))
// AI… (nội dung đầy đủ có trong gói tải về)
Skill liên quan
- voltagent-awesome-design-md – Tập hợp trích xuất DESIGN.md từ 73 website thực tế (Claude / Cursor / Vercel / Stripe /…
- web-artifacts-builder – Bộ công cụ tạo artifact HTML claude.ai nhiều thành phần, phức tạp, bằng công nghệ…
- ai-product – Thiết kế và đánh giá tính năng sản phẩm LLM, truy xuất, đầu ra đã xác thực, độ trễ và…
- ai-studio-image – Tạo hình ảnh người thật qua Google AI Studio (Gemini). Ảnh chân thực theo phong cách…
- canvas – Lấy khóa học và bài tập từ Canvas LMS qua API token.
- brand-guidelines – Khi người dùng muốn áp dụng, ghi lại hoặc thực thi hướng dẫn thương hiệu cho bất kỳ sản…
- slack-gif-creator – Bộ công cụ tạo GIF động tối ưu cho Slack, có trình kiểm tra ràng buộc kích thước và các…
- android-jetpack-compose-expert – Hướng dẫn chuyên sâu xây dựng giao diện Android hiện đại với Jetpack Compose, gồm quản…