Web and App implementation guide for Cyberpunk UI. Trigger when user wants neon colors, dark backgrounds, high-tech dystopian aesthetics, and hacking interfaces.
Scanned 9/3/2026
Install to Claude Code
npx -y skills add sickn33/agentic-awesome-skills --skill cyberpunk-ui --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Cyberpunk Ui?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/sickn33-cyberpunk-ui-c2a44531)More formats (shields.io, HTML) on the badges page.
---
name: cyberpunk-ui
description: Web and App implementation guide for Cyberpunk UI. Trigger when user wants neon colors, dark backgrounds, high-tech dystopian aesthetics, and hacking interfaces.
date_added: "2026-06-17"
risk: safe
source: self
source_type: self
---
# Cyberpunk UI
> "High tech, low life. Neon signs cutting through the smog of a dystopian megacity."
## 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. **Neon on Black**: The foundation is absolute black (`#000000`) or deep charcoal, cut by searingly bright neon accents.
2. **Angled Geometries**: Clipped corners (chamfers) rather than rounded corners. UI elements often look like they were cut from metal plates.
3. **Glitch and Data**: Random streams of hexadecimal data, barcode accents, and intentional visual tearing.
## Visual DNA
- **Colors**: Acid Yellow (`#FCE205`), Cyan (`#00FFFF`), Hot Pink (`#FF003C`), against Black.
- **Typography**: Industrial, squared-off sans-serifs (like `Rajdhani`, `Blender Pro`, or `Teko`), mixed with small monospace fonts for data.
- **Styling**: Diagonal stripes, warning tape patterns, and heavy outer glows.
## Web Implementation
- Rely on `clip-path` for the angled cuts.
- **CSS Example**:
```css
body {
background-color: #050505;
color: #00FFFF;
font-family: 'Rajdhani', sans-serif;
background-image: repeating-linear-gradient(
45deg,
#050505,
#050505 10px,
#0a0a0a 10px,
#0a0a0a 20px
);
}
.cyberpunk-button {
background-color: #FF003C; /* Cyberpunk Red/Pink */
color: #FFF;
font-size: 1.5rem;
font-weight: bold;
text-transform: uppercase;
border: none;
padding: 16px 32px;
/* The signature clipped corner */
clip-path: polygon(
0 0,
calc(100% - 15px) 0,
100% 15px,
100% 100%,
15px 100%,
0 calc(100% - 15px)
);
position: relative;
transition: all 0.2s ease;
}
/* The glitch/shadow effect */
.cyberpunk-button:hover {
background-color: #FCE205; /* Acid Yellow */
color: #000;
box-shadow:
-4px 0 0 #00FFFF,
4px 0 0 #FF003C;
}
.data-stream {
font-family: monospace;
font-size: 0.8rem;
color: rgba(0, 255, 255, 0.5);
}
```
## App Implementation
### SwiftUI
```swift
struct CyberpunkShape: Shape {
let cutSize: CGFloat = 15
func path(in rect: CGRect) -> Path {
var path = Path()
// Top left
path.move(to: CGPoint(x: 0, y: 0))
// Top right (cut)
path.addLine(to: CGPoint(x: rect.maxX - cutSize, y: 0))
path.addLine(to: CGPoint(x: rect.maxX, y: cutSize))
// Bottom right
path.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY))
// Bottom left (cut)
path.addLine(to: CGPoint(x: cutSize, y: rect.maxY))
path.addLine(to: CGPoint(x: 0, y: rect.maxY - cutSize))
path.closeSubpath()
return path
}
}
struct CyberButton: View {
var body: some View {
Button(action: {}) {
Text("SYS.OVERRIDE")
.font(.custom("Rajdhani", size: 24))
.fontWeight(.bold)
.foregroundColor(.white)
.padding(.horizontal, 32)
.padding(.vertical, 16)
}
.background(Color(red: 1.0, green: 0.0, blue: 0.24)) // Cyberpunk Red
.clipShape(CyberpunkShape())
.overlay(
CyberpunkShape()
.stroke(Color(red: 0.0, green: 1.0, blue: 1.0), lineWidth: 2) // Cyan border
)
}
}
```
- Define a custom `Shape` that physically cuts off the corners, bypassing standard `cornerRadius`.
- Use `.clipShape()` for the background, and `.overlay()` with `.stroke()` for high-tech borders.
### Flutter
```dart
class CyberpunkClipper extends CustomClipper<Path> {
final double cutSize = 15.0;
@override
Path getClip(Size size) {
Path path = Path();
path.lineTo(size.width - cutSize, 0); // Top right cut start
path.lineTo(size.width, cutSize); // Top right cut end
path.lineTo(size.width, size.height);
path.lineTo(cutSize, size.height); // Bottom left cut start
path.lineTo(0, size.height - cutSize);// Bottom left cut end
path.close();
return path;
}
@override
bool shouldReclip(CustomClipper<Path> oldClipper) => false;
}
class CyberButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ClipPath(
clipper: CyberpunkClipper(),
child: Container(
color: const Color(0xFFFF003C), // Cyberpunk Red
padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16),
child: const Text(
'SYS.OVERRIDE',
style: TextStyle(
color: Colors.white,
fontSize: 24,
fontWeight: FontWeight.bold,
fontFamily: 'Rajdhani',
),
),
),
);
}
}
```
- Extend `CustomClipper<Path>` to calculate the precise angular cuts.
- Wrap your containers in `ClipPath`.
- For borders, you must use a `CustomPaint` with a `CustomPainter` that traces the exact same path.
### React Native
```jsx
import Svg, { Polygon } from 'react-native-svg';
const CyberButton = () => {
return (
<View style={{ alignItems: 'center', justifyContent: 'center', width: 200, height: 60 }}>
{/* Background SVG to achieve the clipped corner look */}
<View style={{ position: 'absolute', top: 0, bottom: 0, left: 0, right: 0 }}>
<Svg height="100%" width="100%" viewBox="0 0 200 60" preserveAspectRatio="none">
<Polygon
points="0,0 185,0 200,15 200,60 15,60 0,45"
fill="#FF003C"
stroke="#00FFFF"
strokeWidth="2"
/>
</Svg>
</View>
<Text style={{
color: '#FFF',
fontSize: 20,
fontWeight: 'bold',
fontFamily: 'Rajdhani-Bold'
}}>
SYS.OVERRIDE
</Text>
</View>
);
};
```
- React Native does not natively support clipping paths on views easily.
- **Solution**: Use `react-native-svg` to draw a `<Polygon>` that acts as the absolute-positioned background behind transparent text.
### Jetpack Compose
```kotlin
class CyberpunkShape(private val cutSize: Dp) : Shape {
override fun createOutline(
size: Size,
layoutDirection: LayoutDirection,
density: Density
): Outline {
val cutPx = with(density) { cutSize.toPx() }
val path = Path().apply {
moveTo(0f, 0f)
lineTo(size.width - cutPx, 0f)
lineTo(size.width, cutPx)
lineTo(size.width, size.height)
lineTo(cutPx, size.height)
lineTo(0f, size.height - cutPx)
close()
}
return Outline.Generic(path)
}
}
@Composable
fun CyberButton() {
Box(
modifier = Modifier
.clip(CyberpunkShape(15.dp))
.background(Color(0xFFFF003C))
.border(2.dp, Color(0xFF00FFFF), CyberpunkShape(15.dp))
.clickable { }
.padding(horizontal = 32.dp, vertical = 16.dp)
) {
Text(
text = "SYS.OVERRIDE",
color = Color.White,
fontSize = 24.sp,
fontWeight = FontWeight.Bold,
// Assuming custom font is loaded
)
}
}
```
- Create a custom `Shape` by overriding `createOutline` and tracing the `Path`.
- Pass this shape directly into `Modifier.clip()` and `Modifier.background()`.
- You can elegantly apply a border stroke directly to the custom shape using `Modifier.border()`.
## Do's and Don'ts
- **DO**: Include tiny, meaningless technical details (crosshairs, serial numbers, "SYS.OVERRIDE" text).
- **DON'T**: Use soft, organic curves or gradients. It must be sharp and aggressive.
## 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.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!