brutalist-typography – skill Tài liệu & Office cho agent AI
Hướng dẫn triển khai web và app theo Brutalist Typography. Kích hoạt khi người dùng muốn font chữ khổng lồ, cách trình bày thô mộc và bố cục táo bạo.
Cài skill brutalist-typography 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/brutalist-typography-2bcf7.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /brutalist-typography – 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/brutalist-typography-2bcf7.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $brutalist-typography – 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/brutalist-typography-2bcf7.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /brutalist-typography – 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/brutalist-typography-2bcf7.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /brutalist-typography – 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.
Brutalist Typography
> "Aggressive, unpolished, and unapologetic. Text that demands attention by breaking the rules."
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. Rule Breaking: Text that overlaps, ignores margins, or deliberately clips off the edge of the screen.
2. Anti-Design: Intentional use of system fonts or "ugly" fonts (Times New Roman, Courier) in massive sizes.
3. Harsh Contrast: Clashing colors or stark monochrome.
Visual DNA
- Colors: Industrial Chic (Black, White, Red) or aggressive neon clashing (e.g., pure blue on pure red).
- Typography: System default fonts (
Times New Roman,Arial,Courier New) blown up to 150px. - Styling: Marquees, blinking text, underlines that cut through descenders.
Web Implementation
- Break the grid. Use absolute positioning or negative margins.
- CSS Example:
body {
background-color: #fff;
color: #000;
font-family: 'Times New Roman', serif;
}
.brutalist-headline {
font-size: 15vw;
line-height: 0.7;
letter-spacing: -5px;
margin-left: -10px; /* Bleeds off screen intentionally */
word-wrap: break-word; /* Let words break awkwardly */
}
.brutalist-highlight {
background-color: #ff0000;
color: #fff;
padding: 0 10px;
}
.marquee-container {
border-top: 5px solid #000;
border-bottom: 5px solid #000;
overflow: hidden;
white-space: nowrap;
font-family: 'Courier New', monospace;
font-size: 2rem;
font-weight: bold;
padding: 10px 0;
}
/* A nod to early 90s web */
.brutalist-link {
color: #0000ee;
text-decoration: underline;
text-transform: uppercase;
}
.brutalist-link:hover {
background-color: #0000ee;
color: #fff;
}App Implementation
SwiftUI
struct BrutalistTypeView: View {
var body: some View {
ScrollView {
VStack(alignment: .leading, spacing: -20) {
// Bleeds off the edge intentionally
Text("BREAK")
.font(.custom("Times New Roman", size: 120))
.padding(.leading, -20)
Text("THE")
.font(.custom("Arial", size: 140))
.fontWeight(.black)
.foregroundColor(.clear)
.overlay(
Text("THE").foregroundColor(.red) // Solid fallback: Text has no Shape.stroke API
)
.offset(x: 40)
Text("GRID.")
.font(.custom("Courier New", size: 100))
.background(Color.blue)
.foregroundColor(.white)
.rotationEffect(.degrees(-5))
.offset(y: -40)
}
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.top, 50)
}
.ignoresSafeArea() // Critical for Brutalist type
.background(Color.white)
}
}- Keep readable text and controls within safe areas. Only decorative artwork may extend behind system cutouts.
- Use negative
spacinginVStackor explicit negative.offset()to force text elements to overlap each other aggressively. - SwiftUI Text does not implement Shape.stroke. Use solid text as shown, or a separately implemented and tested text-path renderer for true outlines.
Flutter
class BrutalistTypeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
// Scaffold without SafeArea
return Scaffold(
backgroundColor: Colors.white,
body: Stack(
children: [
Positioned(
top: -20,
left: -20,
child: const Text(
'BREAK',
style: TextStyle(
fontFamily: 'Times New Roman',
fontSize: 150,
height: 0.8, // Negative line-spacing
color: Colors.black,
),
),
),
Positioned(
top: 100,
left: 40,
child: Text(
'THE',
style: TextStyle(
fontFamily: 'Arial',
fontSize: 140,
fontWeight: FontWeight.w900,
foreground: Paint()
..style = PaintingStyle.stroke
..strokeWidth = 3
..color = Colors.red,
),
),
),
Positioned(
top: 220,
left: 10,
child: Transform.rotate(
angle: -0.1,
child: Container(
color: Colors.blue,
child: const Text(
'GRID.',
style: TextStyle(
fontFamily: 'Courier',
fontSize: 120,
color: Colors.white,
),
),
),
),
),
],
),
);
}
}- Do not use
SafeArea. - Absolute positioning via
StackandPositionedis the easiest way to break the grid and force overlaps. - Use
height: 0.8(or less than 1.0) inTextStyleto smash lines of text together.
React Native
const BrutalistTypeScreen = () => {
return (
<View style={{ flex: 1, backgroundColor: '#FFF' }}>
{/*
Note: React Native text clipping can be tricky on Android.
Ensure parent views don't have overflow: 'hidden'.
*/}
<Text style={{
fontFamily: 'Times New Roman',
fontSize: 130,
lineHeight: 110,
color: '#000',
marginLeft: -15, // Bleed off edge
marginTop: 40
}}>
BREAK
</Text>
<Text style={{
fontFamily: 'Arial',
fontSize: 140,
fontWeight: '900',
color: 'transparent',
textShadowColor: '#FF0000',
textShadowRadius: 1, // Fake stroke effect
marginLeft: 40,
marginTop: -30 // Overlap previous text
}}>
THE
</Text>
<Text style={{
fontFamily: 'monospace',
fontSize: 100,
backgroundColor: '#0000FF',
color: '#FFF',
transform: [{ rotate: '-5deg' }],
marginTop: -20,
alignSelf: 'flex-start'
}}>
GRID.
</Text>
</View>
);
};- React Native doesn't have a native text-stroke property, so you either simulate it with text shadows or use
@shopify/react-native-skiafor true stroked text. - Use negative
marginTopandmarginLeftto force the layout chaos.
Jetpack Compose
@Composable
fun BrutalistTypeScreen() {
// Use Box for absolute overlapping layouts
Box(
modifier = Modifier
.fillMaxSize()
.background(Color.White)
) {
Text(
text = "BREAK",
fontFamily = FontFamily.Serif, // Times New Roman equivalent
fontSize = 130.sp,
color = Color.Black,
lineHeight = 100.sp,
modifier = Modifier.offset(x = (-15).dp, y = (-20).dp)
)
Text(
text = "THE",
fontFamily = FontFamily.SansSerif,
fontSize = 140.sp,
fontWeight = FontWeight.Black,
style = TextStyle(
drawStyle = Stroke(width = 5f)
),
color = Color.Red,
modifier = Modifier.offset(x = 40.dp, y = 100.dp)
)
Text(
text = "GRID.",
fontFamily = FontFamily.Monospace,
fontSize = 100.sp,
color = Color.White,
modifier = Modifier
.offset(x = 10.dp, y = 220.dp)
.rotate(-5f)
.background(Color.Blue)
)
}
}- A
Boxwith explicitModifier.offset(x, y)allows freeform overlapping placement, breaking away from standardColumn/Rowgrids. - Compose
TextStylesupportsdrawStyle = Stroke(width = 5f), making outline typography incredibly simple.
Do's and Don'ts
- DO: Mix serif and monospace fonts aggressively.
- DON'T: Add drop shadows, gradients, or rounded corners. The design must look raw and unstyled.
Limitations
- This is a styling reference and does not replace environment-specific validation, accessibility testing, or expert review.
- Ensure appropriate contrast ratios and responsive behaviors are verified separately.
Skill liên quan
- byagent – Xuất bản Markdown hoặc HTML do agent viết thành liên kết chia sẻ bằng CLI byagent, sau…
- pptx-posters – Tạo và kiểm tra poster khoa học có thể chỉnh sửa trong PowerPoint (.pptx) không chứa…
- calc – Tạo bảng tính, chuyển đổi định dạng (ODS/XLSX/CSV), công thức, tự động hóa dữ liệu với…
- check-identity-pack – Chạy kiểm tra nhận dạng theo chuẩn AFP 100 điểm hoặc AUSTRAC safe-harbour trên một bộ…
- pdf – File PDF: tạo, đọc, gộp, điền biểu mẫu, OCR, chỉnh sửa văn bản.
- rag-implementation – Xây dựng hệ thống Retrieval-Augmented Generation (RAG) cho ứng dụng LLM với cơ sở dữ…
- pptx-author – Tạo bản trình chiếu PowerPoint ở chế độ headless bằng python-pptx.
- compile-knowledge – Biên soạn các phát hiện bền vững, không hiển nhiên thành kho kiến thức markdown liên kết…