brutalist-typography – Documents & Office skill for AI agents
Web and App implementation guide for Brutalist Typography. Trigger when user wants huge fonts, raw presentation, and aggressive layout decisions.
Install the brutalist-typography skill with one command
Pick the tool you use, copy the command and paste it in your terminal. The skill lands in that tool's skills folder and is ready in your next session.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/brutalist-typography-2bcf7.tgz | tar xz -C ~/.claude/skills
Call it in Claude Code: /brutalist-typography – then describe the task you want done.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/brutalist-typography-2bcf7.tgz | tar xz -C ~/.codex/skills
Call it in Codex: $brutalist-typography – then describe the task you want done.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/brutalist-typography-2bcf7.tgz | tar xz -C ~/.hermes/skills
Call it in Hermes Agent: /brutalist-typography – then describe the task you want done.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/brutalist-typography-2bcf7.tgz | tar xz -C ~/.deepcode/skills
Call it in DeepSeek: /brutalist-typography – then describe the task you want done.
SKILL.md content
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.
Related skills
- byagent – Publish agent-written Markdown or HTML as a shareable link with the byagent CLI, then…
- pptx-posters – Creates and audits editable scientific posters in macro-free PowerPoint (.pptx) from…
- calc – Spreadsheet creation, format conversion (ODS/XLSX/CSV), formulas, data automation with…
- check-identity-pack – Run an AFP 100-point or AUSTRAC safe-harbour identity check over a set of documents, and…
- pdf – PDF files: create, read, merge, fill, OCR, edit text.
- rag-implementation – Build Retrieval-Augmented Generation (RAG) systems for LLM applications with vector…
- pptx-author – Build PowerPoint decks headless with python-pptx.
- compile-knowledge – Compile durable, non-obvious findings into an interlinked markdown knowledge store —…