Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Web and App implementation guide for Sci-Fi Interface Design. Trigger when user wants HUDs, spacecraft dashboards, or tactical military readouts.
.claude/skills/lingxling-sci-fi-interface/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 49% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 148% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 116% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 104% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 88% | 0% |
> "Heads-Up Display. Tactical, precise, and highly analytical."
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.
Share Tech Mono, VT323, Space Mono). All caps.[ ], framing lines, precise pixel coordinates).cssbody { background-color: #000b18; /* Deep space navy */ color: #4df; /* Holographic cyan */ font-family: 'Share Tech Mono', monospace; text-transform: uppercase; } /* The HUD Frame */ .hud-container { border: 1px solid rgba(68, 221, 255, 0.3); position: relative; padding: 30px; } /* Corner brackets */ .hud-container::before { content: ''; position: absolute; top: -2px; left: -2px; width: 20px; height: 20px; border-top: 2px solid #4df; border-left: 2px solid #4df; } .hud-container::after { content: ''; position: absolute; bottom: -2px; right: -2px; width: 20px; height: 20px; border-bottom: 2px solid #4df; border-right: 2px solid #4df; } .hud-value { font-size: 3rem; text-shadow: 0 0 10px rgba(68, 221, 255, 0.8); } .hud-warning { color: #ff3333; text-shadow: 0 0 10px rgba(255, 51, 51, 0.8); animation: blink 1s step-end infinite; } @keyframes blink { 50% { opacity: 0; } }
swiftstruct SciFiHUDView: View { @State private var bootUp = false var body: some View { ZStack { Color(hex: "000b18").ignoresSafeArea() // Deep space navy VStack { // Circular Radar/Dial ZStack { Circle() .stroke(Color(hex: "4df").opacity(0.3), lineWidth: 1) Circle() .trim(from: 0.0, to: bootUp ? 0.75 : 0.0) .stroke(Color(hex: "4df"), style: StrokeStyle(lineWidth: 4, lineCap: .round)) .rotationEffect(.degrees(-90)) Text("SYS.OK") .font(.custom("Space Mono", size: 24)) .foregroundColor(Color(hex: "4df")) .shadow(color: Color(hex: "4df"), radius: 5) } .frame(width: 200, height: 200) .padding(.bottom, 40) // HUD Data Frame HStack { Text("COORD: 45.22, 12.8") Spacer() Text("[ LOCK ]") } .font(.custom("Space Mono", size: 16)) .foregroundColor(Color(hex: "4df")) .padding() .border(Color(hex: "4df").opacity(0.5), width: 1) .overlay( // Corner bracket accents Path { path in path.move(to: CGPoint(x: 0, y: 15)); path.addLine(to: CGPoint(x: 0, y: 0)); path.addLine(to: CGPoint(x: 15, y: 0)) path.move(to: CGPoint(x: 300, y: 15)); path.addLine(to: CGPoint(x: 300, y: 0)); path.addLine(to: CGPoint(x: 285, y: 0)) } .stroke(Color(hex: "4df"), lineWidth: 2) ) } .padding() } .onAppear { withAnimation(.easeInOut(duration: 2.0)) { bootUp = true } } } }
Circle().trim(from: to:) lets you build complex sweeping circular progress rings.Path overlays to draw the exact 90-degree corner brackets ([ ]) that define the HUD look.dartclass SciFiHUDScreen extends StatefulWidget { @override State<SciFiHUDScreen> createState() => _SciFiHUDScreenState(); } class _SciFiHUDScreenState extends State<SciFiHUDScreen> with SingleTickerProviderStateMixin { late AnimationController _ctrl; @override void initState() { super.initState(); _ctrl = AnimationController(vsync: this, duration: const Duration(seconds: 2))..forward(); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: const Color(0xFF000B18), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ // Circular Radar SizedBox( width: 200, height: 200, child: Stack( fit: StackFit.expand, children: [ CircularProgressIndicator(value: 1.0, strokeWidth: 1, color: const Color(0xFF44DDFF).withOpacity(0.3)), AnimatedBuilder( animation: _ctrl, builder: (context, _) => CircularProgressIndicator( value: _ctrl.value * 0.75, // 75% full strokeWidth: 4, color: const Color(0xFF44DDFF), ), ), const Center( child: Text('SYS.OK', style: TextStyle(fontFamily: 'SpaceMono', color: Color(0xFF44DDFF), fontSize: 24, shadows: [Shadow(color: Color(0xFF44DDFF), blurRadius: 5)])), ) ], ), ), const SizedBox(height: 40), // HUD Data Frame (requires CustomPaint for true corner brackets) Container( width: 300, padding: const EdgeInsets.all(16), decoration: BoxDecoration(border: Border.all(color: const Color(0xFF44DDFF).withOpacity(0.5))), child: const Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text('COORD: 45.22, 12.8', style: TextStyle(fontFamily: 'SpaceMono', color: Color(0xFF44DDFF))), Text('[ LOCK ]', style: TextStyle(fontFamily: 'SpaceMono', color: Color(0xFF44DDFF))), ], ), ) ], ), ), ); } }
CircularProgressIndicator is an easy hack for circular HUD rings, but for true Sci-Fi interfaces in Flutter, you should build a CustomPainter to draw concentric stroked circles and arcs.#44DDFF).jsx// Requires react-native-svg import Svg, { Circle, Path } from 'react-native-svg'; const SciFiHUDScreen = () => { return ( <View style={{ flex: 1, backgroundColor: '#000B18', justifyContent: 'center', alignItems: 'center' }}> {/* Circular Radar */} <View style={{ width: 200, height: 200, justifyContent: 'center', alignItems: 'center', marginBottom: 40 }}> <Svg height="200" width="200" style={{ position: 'absolute' }}> <Circle cx="100" cy="100" r="90" stroke="rgba(68, 221, 255, 0.3)" strokeWidth="1" fill="none" /> <Circle cx="100" cy="100" r="90" stroke="#4df" strokeWidth="4" strokeDasharray="565" strokeDashoffset="140" fill="none" /> </Svg> <Text style={{ fontFamily: 'monospace', color: '#4df', fontSize: 24, textShadowColor: '#4df', textShadowRadius: 5 }}> SYS.OK </Text> </View> {/* HUD Frame */} <View style={{ width: 300, padding: 16, flexDirection: 'row', justifyContent: 'space-between', borderColor: 'rgba(68, 221, 255, 0.5)', borderWidth: 1 }}> <Text style={{ fontFamily: 'monospace', color: '#4df' }}>COORD: 45.22, 12.8</Text> <Text style={{ fontFamily: 'monospace', color: '#4df' }}>[ LOCK ]</Text> {/* Pseudo Corner Brackets using absolute views */} <View style={{ position: 'absolute', top: -2, left: -2, width: 15, height: 15, borderTopWidth: 2, borderLeftWidth: 2, borderColor: '#4df' }} /> <View style={{ position: 'absolute', bottom: -2, right: -2, width: 15, height: 15, borderBottomWidth: 2, borderRightWidth: 2, borderColor: '#4df' }} /> </View> </View> ); };
react-native-svg to draw circular HUD dials. Use strokeDasharray and strokeDashoffset on the <Circle> to draw arcs.Views with 2 active borders over the corners of a container.kotlin@Composable fun SciFiHUDScreen() { // Animation for boot up val transition = rememberInfiniteTransition() val sweep by transition.animateFloat(initialValue = 0f, targetValue = 270f, animationSpec = infiniteRepeatable(tween(2000), RepeatMode.Restart)) Column( modifier = Modifier.fillMaxSize().background(Color(0xFF000B18)), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { // Circular Radar Box(contentAlignment = Alignment.Center, modifier = Modifier.size(200.dp)) { Canvas(modifier = Modifier.fillMaxSize()) { drawCircle(color = Color(0xFF44DDFF).copy(alpha = 0.3f), style = Stroke(width = 2f)) drawArc( color = Color(0xFF44DDFF), startAngle = -90f, sweepAngle = sweep, useCenter = false, style = Stroke(width = 8f, cap = StrokeCap.Round) ) } Text("SYS.OK", color = Color(0xFF44DDFF), fontFamily = FontFamily.Monospace, fontSize = 24.sp) } Spacer(Modifier.height(40.dp)) // HUD Frame Box(modifier = Modifier.width(300.dp)) { Row( modifier = Modifier.fillMaxWidth().border(1.dp, Color(0xFF44DDFF).copy(alpha = 0.5f)).padding(16.dp), horizontalArrangement = Arrangement.SpaceBetween ) { Text("COORD: 45.22, 12.8", color = Color(0xFF44DDFF), fontFamily = FontFamily.Monospace) Text("[ LOCK ]", color = Color(0xFF44DDFF), fontFamily = FontFamily.Monospace) } // Corner brackets via Canvas Canvas(modifier = Modifier.fillMaxSize()) { val path = Path().apply { moveTo(0f, 40f); lineTo(0f, 0f); lineTo(40f, 0f) // Top Left moveTo(size.width, size.height - 40f); lineTo(size.width, size.height); lineTo(size.width - 40f, size.height) // Bottom Right } drawPath(path, color = Color(0xFF44DDFF), style = Stroke(width = 4f)) } } } }
Canvas is incredibly powerful here. Use drawArc for the circular HUD rings.Canvas overlaying the Box using Path().apply { moveTo... lineTo... }.text-shadow for glows instead.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 26,183 | 45,565 | +74% | 1 | 1 | 0% | 5,970 | 11,188 | +87% | 0 | 0 | — |
case-02 | fail→fail | 29,292 | 20,795 | -29% | 1 | 1 | 0% | 5,026 | 7,908 | +57% | 0 | 0 | — |
case-03 | fail→fail | 38,727 | 43,628 | +13% | 1 | 1 | 0% | 8,240 | 10,692 | +30% | 0 | 0 | — |
case-04 | pass→pass | 22,926 | 28,270 | +23% | 1 | 1 | 0% | 4,485 | 8,319 | +85% | 0 | 0 | — |
case-05 | fail→pass | 30,006 | 21,976 | -27% | 1 | 1 | 0% | 4,705 | 7,032 | +49% | 0 | 0 | — |
case-06 | pass→pass | 28,656 | 20,089 | -30% | 1 | 1 | 0% | 5,555 | 7,631 | +37% | 0 | 0 | — |
case-07 | fail→pass | 15,287 | 17,753 | +16% | 1 | 1 | 0% | 2,704 | 6,693 | +148% | 0 | 0 | — |
case-08 | fail→pass | 18,630 | 12,496 | -33% | 1 | 1 | 0% | 2,670 | 5,766 | +116% | 0 | 0 | — |
case-09 | pass→pass | 25,309 | 34,541 | +36% | 1 | 1 | 0% | 4,085 | 8,952 | +119% | 0 | 0 | — |
case-10 | pass→fail | 41,131 | 22,469 | -45% | 1 | 1 | 0% | 6,323 | 7,796 | +23% | 0 | 0 | — |
case-11 | fail→pass | 21,431 | 17,371 | -19% | 1 | 1 | 0% | 2,939 | 5,983 | +104% | 0 | 0 | — |
case-12 | fail→fail | 24,365 | 25,629 | +5% | 1 | 1 | 0% | 4,742 | 7,500 | +58% | 0 | 0 | — |
case-13 | pass→pass | 15,659 | 13,044 | -17% | 1 | 1 | 0% | 2,648 | 5,683 | +115% | 0 | 0 | — |
case-14 | fail→pass | 26,171 | 21,157 | -19% | 1 | 1 | 0% | 4,078 | 7,649 | +88% | 0 | 0 | — |
case-15 | fail→pass | 14,311 | 9,006 | -37% | 1 | 1 | 0% | 2,242 | 5,153 | +130% | 0 | 0 | — |
case-16 | pass→pass | 27,221 | 30,517 | +12% | 1 | 1 | 0% | 4,602 | 8,370 | +82% | 0 | 0 | — |
case-17 | pass→pass | 21,674 | 34,089 | +57% | 1 | 1 | 0% | 4,292 | 10,876 | +153% | 0 | 0 | — |
case-18 | pass→pass | 20,211 | 21,628 | +7% | 1 | 1 | 0% | 2,974 | 7,041 | +137% | 0 | 0 | — |
case-19 | fail→pass | 7,419 | 5,484 | -26% | 1 | 1 | 0% | 1,268 | 4,318 | +241% | 0 | 0 | — |
case-20 | pass→pass | 18,295 | 13,623 | -26% | 1 | 1 | 0% | 4,241 | 6,561 | +55% | 0 | 0 | — |
case-21 | pass→pass | 7,411 | 19,568 | +164% | 1 | 1 | 0% | 1,075 | 6,599 | +514% | 0 | 0 | — |
case-22 | pass→pass | 19,526 | 16,788 | -14% | 1 | 1 | 0% | 3,189 | 7,022 | +120% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +27 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.