Token导航 LogoToken导航

Agent Skill · 前端设计

tui-designer(途设计师)

tui-designer 用于辅助前端页面、组件、样式和交互逻辑开发,适合在 Local Agent 中需要维护前端项目、生成组件或检查界面实现时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

tui-designer 是前端设计类 Agent Skill,可用宿主为 Local Agent,通过unknown获取,权限为执行命令;许可证信息还不明确,暂无第三方扫描结果,按安装量在前端设计类的 10,216 个 Skill 里排第 8,606。

总安装 272周安装 11下载 85核验 2026-05-01
前端设计执行命令unknown未标认证来源可访问许可证需确认审计未展示Local Agent

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:tui-designer(途设计师)
来源仓库:https://smithery.ai
仓库路径:tui-designer
安装命令:
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。当前暂无明确安装命令,请以来源页面说明为准。

这个 Skill 是做什么的

前端设计类 Skill 关注页面结构、视觉规范和组件写法,输出通常是可运行的界面代码。

tui-designer 用于辅助前端页面、组件、样式和交互逻辑开发,适合在 Local Agent 中维护终端用户界面时使用。支持命令行界面布局设计与响应式排布优化。可用于生成 CUI 组件或调试终端渲染效果。使用前需确认是否依赖特定终端模拟器或色彩配置。建议结合 ANSI 标准验证兼容性。

tui-designer 属于前端设计类 Skill,可作为该场景下的辅助能力补充。

来源仓库内路径:tui-designer

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Local Agent;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    没有现成安装命令,按unknown的说明从来源页面获取,仓库路径是 tui-designer。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要执行命令,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

tui-designer 怎么安装?

公开资料没有给出可以直接复制的命令,需要按来源页面说明手动安装,仓库内路径为 tui-designer。

tui-designer 支持哪些 AI 工具?

公开资料标注支持 Local Agent。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

tui-designer 需要什么权限?

权限级别是执行命令。安装流程涉及命令执行,可能通过 第三方 CLI 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

tui-designer 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

tui-designer 用的人多吗?

公开数据是累计安装 272 次,近一周安装 11 次,下载 85 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

tui-designer 安全吗?

没有查到第三方扫描结果,安全性无法从公开资料判断,安装前请自行审查源码、依赖和命令行为。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 Local Agent 一种宿主,触发方式和使用习惯不用来回切换。

先想清楚的地方

  • 需要执行命令,装到常用环境前要先评估影响面。
  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 没有第三方扫描结果,安全性只能靠自己读源码判断。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Local Agent,想直接扩展它能力的人。
  • 需要处理前端设计类任务、又不想每次都手写提示词的人。

不太适合

  • 不能接受 Skill 在你机器上执行命令的人。
  • 需要明确授权才能用到公司项目里的场景。
  • 要求有安全扫描结论才肯安装的团队。

前端设计类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
frontend-design

前端设计 · Codex、Claude

8,823,360126,072只读MIT通过
vercel-composition-patterns

Vercel 组合模式 · Codex、Claude

3,858,81625,893需要联网MIT通过
vercel-react-native-skills

Vercel React native skills 前端 · Codex、Claude

2,468,66425,878只读MIT通过
adapt

adapt 搜索 · Codex、Claude

2,027,04023,125操作浏览器未明确通过
bolder

bolder 分析 · Codex、Claude

2,004,28823,130只读未明确通过
tui-designer

途设计师 · 本页

272—执行命令未明确未收录

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

TUI Designer - Retro/Cyberpunk Terminal UI Expert

Expert guidance for designing and implementing text-based user interfaces with authentic retro computing aesthetics: CRT monitors, phosphor glow, scanlines, and cyberpunk neon.

When to Use This Skill

Use this skill when:

  • Creating terminal-style or hacker aesthetic UIs
  • Implementing CRT monitor effects (scanlines, glow, barrel distortion)
  • Building cyberpunk/synthwave/retrowave interfaces
  • Using Tuimorphic components in React
  • Implementing Metal shaders for retro effects in SwiftUI
  • Designing neon glow text and UI elements
  • Choosing color palettes for retro computing aesthetics
  • Working with monospace fonts and box-drawing characters

Design Principles

The Retro/Cyberpunk Aesthetic

This aesthetic draws from:

  • CRT monitors: Phosphor glow, scanlines, screen curvature, flicker
  • Terminal interfaces: Monospace fonts, box-drawing characters, green/amber text
  • Cyberpunk fiction: Neon colors, dark backgrounds, high contrast
  • 1980s computing: ASCII art, limited color palettes, blocky graphics

Visual Elements Checklist

  • Dark background (near-black with subtle color tint)
  • Monospace typography throughout
  • Box-drawing characters for borders and frames
  • Neon glow on text and/or borders
  • Scanline effect (subtle horizontal lines)
  • Limited color palette (1-3 accent colors)
  • High contrast between text and background
  • Optional: CRT curvature, chromatic aberration, flicker

Quick Reference: Color Palettes

Phosphor Green (Classic Terminal)

RoleHexUsage
Bright#00ff00Primary text, highlights
Medium#00cc00Secondary text
Dark#009900Dimmed elements
Background#001100Main background
Deep BG#000800Panel backgrounds

Cyberpunk Neon

RoleHexUsage
Cyan#00ffffPrimary accent
Magenta#ff00ffSecondary accent
Electric Blue#0066ffTertiary
Hot Pink#ff1493Warnings
Background#0a0a1aMain background

Amber CRT

RoleHexUsage
Bright#ffb000Primary text
Medium#cc8800Secondary
Dark#996600Dimmed
Background#1a1000Main background

See color-palettes.md for complete specifications.

Typography

Recommended Fonts

Web:

font-family: 'GNU Unifont', 'IBM Plex Mono', 'JetBrains Mono',
             'SF Mono', 'Consolas', monospace;

SwiftUI:

.font(.system(size: 14, weight: .regular, design: .monospaced))

Box-Drawing Characters

Light:   ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼
Heavy:   ━ ┃ ┏ ┓ ┗ ┛ ┣ ┫ ┳ ┻ ╋
Double:  ═ ║ ╔ ╗ ╚ ╝ ╠ ╣ ╦ ╩ ╬
Rounded: ╭ ╮ ╰ ╯

See typography-guide.md for complete reference.

Copywriting

Terminal interfaces have a distinct voice: terse, technical, authoritative. Use these defaults unless the project specifies otherwise.

Core Principles

  1. Terse and Direct - Every word earns its place
  2. Technical Authority - The system knows what it's doing
  3. Mechanical Precision - No hedging, apologies, or filler

Text Formatting

ElementCaseExample
Headers/TitlesUPPERCASESYSTEM STATUS
LabelsUPPERCASECPU USAGE:
Status indicatorsUPPERCASEONLINE, OFFLINE
Commands/Inputlowercase> run diagnostic
Body textSentence caseConnection established

Message Prefixes

[SYS] System message       [ERR] Error
[USR] User action          [WRN] Warning
[INF] Information          [NET] Network

Vocabulary Quick Reference

ActionTerminal Verbs
StartINITIALIZE, BOOT, LAUNCH, ACTIVATE
StopTERMINATE, HALT, ABORT, KILL
SaveWRITE, COMMIT, STORE, PERSIST
LoadREAD, FETCH, RETRIEVE, LOAD
DeletePURGE, REMOVE, CLEAR, WIPE
StateTerminal Words
WorkingPROCESSING, EXECUTING, RUNNING
DoneCOMPLETE, SUCCESS, FINISHED
FailedERROR, FAULT, ABORTED
ReadyONLINE, AVAILABLE, ARMED

Common Patterns

> INITIALIZING SYSTEM...
> LOADING MODULES [████████░░] 80%
> AUTHENTICATION COMPLETE
> SYSTEM READY

ERROR: ACCESS DENIED
ERR_CONNECTION_REFUSED: Timeout after 30s
WARNING: Low disk space (< 10%)

CONFIRM DELETE? [Y/N]
SELECT OPTION [1-5]:

Avoid

  • "Please", "Sorry", "Oops"
  • "Just", "Maybe", "Might"
  • Excessive exclamation points
  • Emoji (unless specifically requested)

See copywriting-guide.md for complete voice and tone reference.


Platform: React with Tuimorphic

Tuimorphic is a React component library providing 37 terminal-styled, accessible UI components.

Quick Start

npm install tuimorphic
import { Button, Card, Input } from 'tuimorphic';
import 'tuimorphic/styles.css';

function App() {
  return (
    <div className="theme-dark tint-green">
      <Card>
        <h1>SYSTEM ACCESS</h1>
        <Input placeholder="Enter command..." />
        <Button variant="primary">EXECUTE</Button>
      </Card>
    </div>
  );
}

Theme Configuration

Apply themes via CSS classes on a parent element:

// Dark mode with green tint
<div className="theme-dark tint-green">

// Light mode with cyan tint
<div className="theme-light tint-blue">

Available tints: tint-green, tint-blue, tint-red, tint-yellow, tint-purple, tint-orange, tint-pink

Key Components

ComponentUsage
ButtonActions with `variant="primary\secondary\ghost"`
InputText input with terminal styling
CardContainer with box-drawing borders
DialogModal dialogs
MenuDropdown menus
CodeBlockSyntax-highlighted code
TableData tables
TabsTabbed navigation
TreeViewFile tree display

See tuimorphic-reference.md for complete API.

Adding Neon Glow

Enhance Tuimorphic with CSS glow effects:

/* Neon text glow */
.neon-text {
  color: #0ff;
  text-shadow:
    0 0 5px #fff,
    0 0 10px #fff,
    0 0 20px #0ff,
    0 0 40px #0ff,
    0 0 80px #0ff;
}

/* Neon border glow */
.neon-border {
  border-color: #0ff;
  box-shadow:
    0 0 5px #0ff,
    0 0 10px #0ff,
    inset 0 0 5px #0ff;
}

/* Flickering animation */
@keyframes flicker {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.95; }
  52% { opacity: 1; }
  54% { opacity: 0.9; }
}

.flicker {
  animation: flicker 3s infinite;
}

Platform: SwiftUI with Metal Shaders

iOS 17+ supports Metal shaders directly in SwiftUI via .colorEffect(), .distortionEffect(), and .layerEffect().

CRT Effect Implementation

CRT.metal:

#include <metal_stdlib>
#include <SwiftUI/SwiftUI.h>
using namespace metal;

[[stitchable]] half4 crtEffect(
    float2 position,
    SwiftUI::Layer layer,
    float time,
    float2 size,
    float scanlineIntensity,
    float distortionStrength
) {
    float2 uv = position / size;

    // Barrel distortion
    float2 center = uv - 0.5;
    float dist = length(center);
    float2 distorted = center * (1.0 + distortionStrength * dist * dist);
    float2 samplePos = (distorted + 0.5) * size;

    // Bounds check
    if (samplePos.x < 0 || samplePos.x > size.x ||
        samplePos.y < 0 || samplePos.y > size.y) {
        return half4(0, 0, 0, 1);
    }

    // Sample color
    half4 color = layer.sample(samplePos);

    // Scanlines
    float scanline = sin(position.y * 3.14159 * 2.0) * scanlineIntensity;
    color.rgb *= 1.0 - scanline;

    // Subtle color shift (chromatic aberration)
    color.r *= 1.0 + 0.02 * sin(time * 2.0);
    color.b *= 1.0 - 0.02 * sin(time * 2.0);

    // Slight flicker
    color.rgb *= 1.0 + 0.01 * sin(time * 60.0);

    return color;
}

SwiftUI View Modifier:

struct CRTEffectModifier: ViewModifier {
    @State private var startTime = Date()
    var scanlineIntensity: Float = 0.1
    var distortionStrength: Float = 0.1

    func body(content: Content) -> some View {
        TimelineView(.animation) { timeline in
            let time = Float(timeline.date.timeIntervalSince(startTime))
            GeometryReader { geo in
                content
                    .layerEffect(
                        ShaderLibrary.crtEffect(
                            .float(time),
                            .float2(geo.size),
                            .float(scanlineIntensity),
                            .float(distortionStrength)
                        ),
                        maxSampleOffset: .init(width: 10, height: 10)
                    )
            }
        }
    }
}

extension View {
    func crtEffect(
        scanlines: Float = 0.1,
        distortion: Float = 0.1
    ) -> some View {
        modifier(CRTEffectModifier(
            scanlineIntensity: scanlines,
            distortionStrength: distortion
        ))
    }
}

Usage:

Text("SYSTEM ONLINE")
    .font(.system(size: 24, weight: .bold, design: .monospaced))
    .foregroundColor(.green)
    .crtEffect(scanlines: 0.15, distortion: 0.08)

Neon Glow in SwiftUI

extension View {
    func neonGlow(color: Color, radius: CGFloat = 10) -> some View {
        self
            .shadow(color: color.opacity(0.8), radius: radius / 4)
            .shadow(color: color.opacity(0.6), radius: radius / 2)
            .shadow(color: color.opacity(0.4), radius: radius)
            .shadow(color: color.opacity(0.2), radius: radius * 2)
    }
}

// Usage
Text("NEON")
    .font(.system(size: 48, design: .monospaced))
    .foregroundColor(.cyan)
    .neonGlow(color: .cyan, radius: 15)

See metal-shaders-ios.md for complete shader code.


Platform: CSS/Vanilla Web

Scanlines Overlay

.crt-container {
    position: relative;
    background: #000800;
}

.crt-container::after {
    content: '';
    position: absolute;
    inset: 0;
    background: repeating-linear-gradient(
        0deg,
        rgba(0, 0, 0, 0.15),
        rgba(0, 0, 0, 0.15) 1px,
        transparent 1px,
        transparent 2px
    );
    pointer-events: none;
}

Neon Text Effect

.neon-text {
    color: #0ff;
    text-shadow:
        /* White core */
        0 0 5px #fff,
        0 0 10px #fff,
        /* Colored glow layers */
        0 0 20px #0ff,
        0 0 30px #0ff,
        0 0 40px #0ff,
        0 0 55px #0ff,
        0 0 75px #0ff;
}

CRT Curvature (CSS Transform)

.crt-screen {
    border-radius: 20px;
    transform: perspective(1000px) rotateX(2deg);
    box-shadow:
        inset 0 0 50px rgba(0, 255, 0, 0.1),
        0 0 20px rgba(0, 255, 0, 0.2);
}

WebGL CRT with CRTFilter.js

<script type="module">
import { CRTFilterWebGL } from 'crtfilter';

const canvas = document.getElementById('crt-canvas');
const crt = new CRTFilterWebGL(canvas, {
    scanlineIntensity: 0.15,
    glowBloom: 0.3,
    chromaticAberration: 0.002,
    barrelDistortion: 0.1,
    staticNoise: 0.03,
    flicker: true,
    retraceLines: true
});

crt.start();
</script>

See crt-effects-web.md for complete techniques.


Effect Patterns

Scanlines

PlatformImplementation
CSSrepeating-linear-gradient pseudo-element
SwiftUIMetal shader with sin(position.y * frequency)
WebGLFragment shader brightness modulation

Bloom/Glow

PlatformImplementation
CSSMultiple text-shadow with increasing blur
SwiftUIMultiple .shadow() modifiers
WebGLGaussian blur pass + additive blend
Three.jsUnrealBloomPass with luminanceThreshold

Chromatic Aberration

PlatformImplementation
CSSThree overlapping elements with color channel offset
SwiftUISample texture at offset positions per RGB channel
WebGLSample UV with slight offset per channel

Flicker

PlatformImplementation
CSS@keyframes animation varying opacity 0.9-1.0
SwiftUITimer-driven opacity or shader time-based
WebGLTime-based noise multiplier

Performance Considerations

CSS Effects

  • box-shadow and text-shadow are GPU-accelerated but expensive with many layers
  • Limit to 4-5 shadow layers for glow effects
  • Use will-change: transform for animated elements
  • Consider prefers-reduced-motion media query

SwiftUI/Metal

  • Metal shaders run at 60-120fps on all devices supporting iOS 17+
  • .layerEffect() processes every pixel - keep shaders simple
  • Pre-compile shaders with .compile() (iOS 18+)
  • Test on older devices (A12 minimum for iOS 17)

WebGL

  • CRTFilter.js uses hardware acceleration, minimal performance impact
  • Bloom effects in Three.js require render-to-texture passes
  • Consider lower resolution render targets for mobile

General

  • Reduce effect intensity on mobile devices
  • Provide option to disable effects for accessibility
  • Profile with actual content, not just empty screens

Templates

Ready-to-use starter files:


Common Pitfalls

This section documents real failure modes and edge cases that break TUI implementations. These are non-obvious gotchas discovered through practical use across platforms.

Terminal Compatibility Issues

Problem: Escape sequences vary across terminal emulators. What works in iTerm2 may fail in older xterm, SSH terminals, or Windows Terminal.

Common failures:

  • 256-color vs ANSI: Terminals support different color depths. Code using #rgb hex colors works in modern terminals but falls back to 16-color ANSI on older systems.
  • Reset sequences: Forgetting to reset text attributes (\x1b[0m or \x1b[m) can poison the terminal state for subsequent output.
  • Unicode box-drawing on Windows: Windows PowerShell/Terminal may not render ─ │ ┌ ┐ correctly. Test on Windows before shipping.
  • VT100 incompleteness: SSH to older Linux systems often hits VT100-only support. Box-drawing characters render as gibberish.

Prevention:

  • Test on target terminals: iTerm2, Terminal.app, Windows Terminal, SSH Linux, Alacritty
  • Fall back to ASCII when box-drawing fails: use +, -, | as fallback
  • Always reset attributes after styled text: \x1b[0m is your friend
  • Detect terminal capability: Check TERM env var (TERM=xterm-256color vs TERM=xterm)

Example safe wrapper:

const supportsUnicode = process.env.TERM && process.env.TERM.includes('256');
const border = supportsUnicode ? '─' : '-';

Layout Breaks on Resize

Problem: Fixed-width layouts collapse when terminal resizes. Common in web-based TUI where aspect ratio changes unexpectedly.

Common failures:

  • Hardcoded line widths: A centered header assuming 80-column width breaks on a 60-column terminal.
  • Overflow hidden without truncation: Content that's 100% width + padding exceeds container, causing text to spill or wrap unexpectedly.
  • Aspect ratio assumptions: Scanline overlays, CRT curves assume 16:9. On ultra-wide or mobile, artifacts become obvious.
  • Grid layouts with fixed items: Using display: grid with grid-template-columns: 100px 200px 100px fails to adapt to small screens.

Prevention:

  • Use viewport-relative units: vw, vh, or calc(100% - Xpx)
  • Implement text truncation with ellipsis: overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  • Test at: 120 columns, 80 columns, 40 columns (mobile), ultra-wide
  • For scanline effects, use percentage-based frequency that scales with viewport
  • Use CSS @media or JS ResizeObserver to adapt layout dynamically

Scanline example that fails:

/* ❌ Breaks on narrow screens */
background: repeating-linear-gradient(0deg, transparent, transparent 20px, black 20px, black 21px);

Better approach:

/* ✅ Scales with viewport height */
background: repeating-linear-gradient(0deg, transparent, transparent calc(2% of height), black calc(2% of height), black calc(2% of height + 1px));

Input Handling Edge Cases

Problem: User input isn't just alphanumeric. Real-world input includes multi-byte UTF-8, special keys, paste buffers, and autocomplete.

Common failures:

  • UTF-8 character counting: JavaScript's string.length counts UTF-16 code units, not characters. A 4-byte emoji 🎮 has length: 2, breaking cursor positioning and validation.
  • Paste buffer handling: Users paste large blocks of text. Input handlers without streaming cause UI to freeze.
  • Arrow keys vs WASD: Terminal-based games assume WASD but users expect arrow keys. Missing support = bad UX.
  • Special keys lost in translation: Ctrl+C, Ctrl+Z, Tab work differently across platforms. SSH terminals lose some meta-keys.
  • IME composition: Input Method Engine (for Chinese, Japanese, Korean) sends partial characters before final composition. Validating on every keystroke breaks IME input.

Prevention:

  • Use grapheme-aware libraries: Intl.Segmenter (modern), or graphemesplitter npm package
  • Implement paste as multi-character stream, not a single event
  • Support both arrow keys AND WASD for navigation
  • Handle IME: validate only on final compositionend, not compositionupdate
  • Test on macOS (Command key), Windows (Alt), Linux (various WM behavior)

Correct UTF-8 cursor positioning:

// ❌ Wrong: counts UTF-16 code units
const cursorPos = input.value.length;  // "🎮🎮" = length: 4

// ✅ Correct: counts grapheme clusters
const segmenter = new Intl.Segmenter();
const cursorPos = [...segmenter.segment(input.value)].length;  // "🎮🎮" = 2

Performance Issues

Problem: TUI effects (scanlines, glow, flicker) are expensive. Naive implementations cause jank and CPU/battery drain.

Common failures:

  • Continuous redraws: Updating DOM every frame via JS (not GPU) causes 60+ reflows per second. Leads to choppy animation, 100%+ CPU.
  • Too many text-shadow layers: Each text-shadow: 0 0 5px, 0 0 10px, 0 0 20px,... requires a separate GPU pass. 10+ shadows = measurable lag.
  • Flickering at high frequency: setInterval(..., 16ms) for flicker ties to animation frame time, causing stutter if main thread is busy.
  • Scanline overlay recompute: Recalculating repeating-linear-gradient on every resize (without debounce) causes jank.
  • WebGL without throttling: Full-screen CRT shaders running at 120fps on low-end mobile = instant battery drain.

Prevention:

  • Use CSS @keyframes for continuous effects (GPU-accelerated)
  • Limit neon glow to 3-4 text-shadow layers; test on mobile
  • Debounce resize handlers: ResizeObserver with throttle, or window.requestAnimationFrame
  • Use will-change: transform, filter sparingly on elements that animate
  • Provide reduced-motion option: prefers-reduced-motion: reduce
  • On mobile, detect CPU capacity: throttle effects on low-power devices

Flicker that performs well:

/* ✅ GPU-accelerated, smooth */
@keyframes flicker {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.95; }
}
.flicker { animation: flicker 3s infinite; }

Flicker that causes jank:

// ❌ Main thread blocked, stutter
setInterval(() => {
  element.style.opacity = Math.random() > 0.5 ? 1 : 0.9;
}, 50);

Accessibility Gaps

Problem: Terminal UIs often ignore accessibility. Screen readers, keyboard navigation, color contrast all suffer.

Common failures:

  • No keyboard navigation: Clickable elements only respond to mouse. Screen reader users and keyboard-only users are blocked.
  • Color-only status indicators: Red text for error, green for success. Colorblind users (8% of males, 0.5% of females) can't distinguish.
  • Missing ARIA labels: Screen readers announce "Button" instead of "Execute command". Confusing for blind users.
  • Fixed-size text: Neon glow at 48px looks cool but breaks at 14px for visually impaired users. No zoom support = inaccessible.
  • No focus indicators: After Tab-navigating to a button, there's no visible focus ring. Users lose their place.
  • Animated elements without pause: Flicker and scanlines can trigger photosensitive epilepsy. Missing prefers-reduced-motion support = legal/safety risk.

Prevention:

  • Implement full keyboard navigation: Tab/Shift+Tab, Enter to activate, Arrow keys for lists
  • Test with screen reader: VoiceOver (macOS), NVDA (Windows), JAWS
  • Add ARIA labels: aria-label="Start system", aria-describedby="help-text"
  • Ensure 4.5:1 contrast ratio for text (WCAG AA standard)
  • Provide prefers-reduced-motion alternative: disable flicker, scanlines, animations
  • Focus indicators: :focus {outline: 2px solid #0ff;} is mandatory

Accessible neon button:

<button
  aria-label="Execute diagnostic"
  className="neon-button"
  onClick={handleClick}
  onKeyDown={(e) => e.key === 'Enter' && handleClick()}
>
  EXECUTE
</button>

<style>
  .neon-button:focus {
    outline: 2px solid #0ff;
    outline-offset: 2px;
  }

  @media (prefers-reduced-motion: reduce) {
    .neon-button {
      text-shadow: none; /* Remove glow */
      animation: none;   /* Remove flicker */
    }
  }
</style>

Terminal Emulator Differences

Quick reference for platform-specific behaviors:

EmulatorNotable QuirksFix
iTerm2 (macOS)Renders all Unicode correctly; true-color supportNone needed
Terminal.app (macOS)Limited color palette; older xterm behaviorTest with 256-color mode
AlacrittyUltra-fast; true-color; may not render some UnicodeWorks reliably if iTerm2 works
Windows TerminalSupports true-color; WSL integration works wellNone needed for modern code
PowerShellOld versions render box-drawing as ?; use fallbackCheck $PSVersionTable
SSH/xtermVT100 only; no true-color; no mouse eventsFall back to ASCII + ANSI colors
TmuxPassthrough mode required for true-color: set -g default-terminal "tmux-256color"Configure tmux.conf
ScreenEven older terminal support; avoid fancy effectsUse ASCII-only mode

Platform detection example:

if [[ "$TERM" == "xterm" ]]; then
  # Old terminal: use ASCII
  BORDER="+"
  COLORS="ANSI"
elif [[ "$TERM" == *"256color"* ]]; then
  # Modern terminal: use box-drawing + 256 colors
  BORDER="─"
  COLORS="256"
else
  # Unknown: default to safe
  BORDER="+"
  COLORS="ANSI"
fi

When CRT Effects Backfire

Problem: Scanlines, glow, and distortion look cool in mockups but cause problems in practice.

Common failures:

  • Scanlines reduce readability: Fine horizontal lines over text make it harder to read, especially on mobile or at distance. People with low vision can't read it.
  • Glow hides text: Heavy neon glow (text-shadow with 10+ layers) blurs text edges, reducing legibility.
  • Barrel distortion breaks alignment: CRT curvature looks authentic but makes content appear misaligned. Users think UI is broken.
  • Flicker induces motion sickness: Subtle flicker causes nausea in some users. Photosensitive epilepsy is a real safety concern.

Prevention:

  • Use subtle scanlines: 10-15% opacity, visible but not interfering with text
  • Limit glow intensity: if glow radius > 20px, text becomes unreadable
  • Distortion is decorative only: never use it for critical layout
  • Always provide prefers-reduced-motion escape hatch
  • Test with actual users: "Can you read this comfortably?"

Resources

Libraries

Documentation

Inspiration

平台分布

Local Agent

87.79%
按下载量换算75

安全审计

暂无安全审计结果可展示。

权限和风险

执行命令

安装流程涉及命令执行,可能通过 第三方 CLI 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills