claude的有一个很有用的skill,就是frontend-design,这个skill能够让我们平时展示,数据输出,小工具制作都可以轻松制作,虽然不能做非常商业化的前端,但是绝对可以说能够替代99%需要前端的场景。甚至于说,前端已死毫不为过,本文以一个通俗的例子来介绍这个skill的使用
但是值得注意的是,这个skill,在工作中非常高效,因为你不需要花任何时间来设计展示内容,claude后台就把必要的信息前端化提供给你了。
frontend-design 是一个生产级的前端skill,这个skill覆盖所有人,包括不懂前端的使用者和懂前端的使用者。这里重点解析。
如果用户没有注重前端设计的提示词,那么默认的界面效果如下

他会把必要的信息通过上述样式展示出来
如果提示词带 RPG ,那么就会提供RPG的复古前端样式如下

如果提示词带 SaaS,或登录页,那么前端样式如下

如果强调独特的排版,那么样式如下

如果提示词带 博客,那么样式如下

如果提示词是 深度,博客,那么样式如下

如果提示词是仪表盘,那么样式如下

如果提示词是仪表盘,且说明要提示,亮点,有目的的展示,那么样式如下

claude的这个技能主要做到两点
也就是说,在这个skill前,前端几乎已死
下面通过实际演示一个 音乐播放器 的开发
> 我要做一个酷炫的音乐播放器前端,后台是读取指定目录下的mp3文件列表,提供随机播放和顺序播放
这是一个简单的提示词,但是我命中了酷炫和音乐播放器两个关键提示词,看看claude会给我设计什么出来
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ Plan to implement │ │ │ │ Music Player - Implementation Plan │ │ │ │ Context │ │ │ │ 构建一个视觉震撼的本地音乐播放器 Web 应用,后端读取 │ │ ~/music 目录的 MP3 文件,前端提供沉浸式 Retro-Futuristic Neon 风格播放体验。 │ │ │ │ 遵循 frontend-design skill 的设计哲学:大胆的最大化主义 (Bold Maximalism),避免 AI Slop 美学。 │ │ │ │ 项目结构 │ │ │ │ ~/ │ │ music-player.html # 前端:单文件 HTML/CSS/JS │ │ music-server.py # 后端:Python stdlib HTTP 服务器 │ │ │ │ 参考文件: │ │ - ~/adb-server.py — HTTP handler、CORS、JSON API 模式 │ │ - ~/adb-manager.html — CSS 设计系统、class 控制器、面包屑导航 │ │ - ~\.claude\skills\frontend-design\references\design-philosophy.md — 反 AI Slop 设计哲学 │ │ │ │ --- │ │ 1. 设计系统(基于 frontend-design skill 规范) │ │ │ │ 美学方向:Retro-Futuristic Neon Maximalism │ │ │ │ 核心情感:沉浸式太空 DJ 控制台 — 深邃黑暗中的霓虹光芒 │ │ │ │ 1.1 色彩设计(Palette Spec) │ │ │ │ { │ │ "seedColors": { │ │ "primary": "#FF2D78", │ │ "secondary": "#00F0FF", │ │ "accent": "#A855F7" │ │ }, │ │ "theme": "dark", │ │ "style": "bold", │ │ "generateShades": true, │ │ "generateSemantics": true │ │ } │ │ │ │ CSS 自定义属性: │ │ │ │ :root { │ │ /* 背景 - 深空层次 */ │ │ --bg-void: #030508; │ │ --bg-deep: #070C18; │ │ --bg-surface: #0C1225; │ │ --bg-elevated: #111A35; │ │ --bg-hover: #162040; │ │ --bg-active: #1C2A55; │ │ │ │ /* 霓虹主色 - 洋红 */ │ │ --neon-magenta: #FF2D78; │ │ --neon-magenta-50: rgba(255, 45, 120, 0.05); │ │ --neon-magenta-15: rgba(255, 45, 120, 0.15); │ │ --neon-magenta-30: rgba(255, 45, 120, 0.30); │ │ --neon-magenta-glow: 0 0 20px rgba(255, 45, 120, 0.4), 0 0 60px rgba(255, 45, 120, 0.15); │ │ │ │ /* 霓虹副色 - 青 */ │ │ --neon-cyan: #00F0FF; │ │ --neon-cyan-50: rgba(0, 240, 255, 0.05); │ │ --neon-cyan-15: rgba(0, 240, 255, 0.15); │ │ --neon-cyan-30: rgba(0, 240, 255, 0.30); │ │ --neon-cyan-glow: 0 0 20px rgba(0, 240, 255, 0.4), 0 0 60px rgba(0, 240, 255, 0.15); │ │ │ │ /* 桥接色 - 紫 */ │ │ --neon-purple: #A855F7; │ │ --neon-purple-glow: 0 0 20px rgba(168, 85, 247, 0.3); │ │ │ │ /* 点缀色 - 琥珀 */ │ │ --neon-amber: #FBBF24; │ │ --neon-amber-glow: 0 0 12px rgba(251, 191, 36, 0.3); │ │ │ │ /* 文本 */ │ │ --text-primary: #E8ECF4; │ │ --text-secondary: #7888A8; │ │ --text-muted: #3A4A6A; │ │ --text-glow: 0 0 8px rgba(232, 236, 244, 0.3); │ │ │ │ /* 边框 */ │ │ --border: #152040; │ │ --border-glow: 0 0 1px rgba(0, 240, 255, 0.3); │ │ } │ │ │ │ 1.2 字体系统(Typography Spec) │ │ │ │ 反 AI Slop 原则:避免 Inter/Roboto/Arial,选择有个性的字体 │ │ │ │ Display: 'Orbitron' — 未来感几何字体,用于 Logo、时间码 │ │ Heading: 'Exo 2' — 科幻风格,用于曲目标题、面包屑 │ │ Body: 'Space Grotesk' — 现代几何无衬线,文件名和正文 │ │ Mono: 'JetBrains Mono' — 时间戳、技术数据 │ │ │ │ 字体层级(major-third scale, ratio 1.250): │ │ 4xl: 2.441rem — Logo │ │ 3xl: 1.953rem — 当前播放标题 │ │ 2xl: 1.563rem — 区域标题 │ │ xl: 1.25rem — 副标题 │ │ lg: 1.125rem — 文件名 │ │ base: 1rem — 正文 │ │ sm: 0.875rem — 辅助文本 │ │ xs: 0.75rem — 时间码、文件大小 │ │ │ │ 1.3 动画 Token │ │ │ │ :root { │ │ --ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1); │ │ --ease-smooth: cubic-bezier(0.25, 0.46, 0.45, 0.94); │ │ --ease-elastic: cubic-bezier(0.68, -0.55, 0.27, 1.55); │ │ --duration-instant: 100ms; │ │ --duration-fast: 200ms; │ │ --duration-normal: 350ms; │ │ --duration-slow: 600ms; │ │ --duration-glacial: 1200ms; │ │ } │ │ │ │ --- │ │ 2. 后端 music-server.py │ │ │ │ 端口 8924,默认音乐目录 E:\workspace\music,可通过命令行参数覆盖。 │ │ │ │ API │ │ │ │ ┌────────────────────────┬─────────────────────────────────────────────────┐ │ │ │ 端点 │ 功能 │ │ │ ├────────────────────────┼─────────────────────────────────────────────────┤ │ │ │ GET / │ 返回 music-player.html │ │ │ ├────────────────────────┼─────────────────────────────────────────────────┤ │ │ │ GET /api/browse?path=/ │ 列出文件夹 + .mp3 文件(文件夹优先,排序) │ │ │ ├────────────────────────┼─────────────────────────────────────────────────┤ │ │ │ GET /api/tree │ 递归返回所有 .mp3 文件(随机播放+搜索) │ │ │ ├────────────────────────┼─────────────────────────────────────────────────┤ │ │ │ GET /api/stream?file= │ 流式传输 MP3,HTTP Range 支持(进度条拖拽必须) │ │ │ └────────────────────────┴─────────────────────────────────────────────────┘ │ │ │ │ 关键实现 │ │ │ │ - 路径安全:os.path.realpath + startswith 防目录穿越 │ │ - Range 请求:解析 Range: bytes=START-END,返回 206 + Content-Range │ │ - 分块传输:64KB chunks,不一次性加载大文件 │ │ - CORS headers │ │ - 中文文件名:ensure_ascii=False,urllib.parse.quote/unquote │ │ │ │ --- │ │ 3. 前端布局 │ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ ┌────────────────┐ ┌──────────────────────────────┐ │ │ │ │ │ SIDEBAR │ │ MAIN PLAYER AREA │ │ │ │ │ │ (360px) │ │ │ │ │ │ │ │ ╔════════════╗ │ │ ┌────────────────────────┐ │ │ │ │ │ │ ║ 🎵 Logo ║ │ │ │ │ │ │ │ │ │ │ ╚════════════╝ │ │ │ Audio Visualizer │ │ │ │ │ │ │ ┌────────────┐ │ │ │ (Canvas 圆形频率) │ │ │ │ │ │ │ │ 🔍 Search │ │ │ │ ╔══════╗ │ │ │ │ │ │ │ └────────────┘ │ │ │ ║ Vinyl║ ← 旋转 │ │ │ │ │ │ │ / > Rock > ... │ │ │ ║ Art ║ 唱片 │ │ │ │ │ │ │ ────────────── │ │ │ ╚══════╝ │ │ │ │ │ │ │ 📁 Classic │ │ │ │ │ │ │ │ │ │ 📁 Modern │ │ └────────────────────────┘ │ │ │ │ │ │ ≡≡ song1.mp3 │ │ │ │ │ │ │ │ 🎵 song2.mp3 │ │ ♪ Stairway to Heaven │ │ │ │ │ │ 🎵 song3.mp3 │ │ Led Zeppelin │ │ │ │ │ │ │ │ │ │ │ │ │ │ ≡≡ = 正在播放 │ │ ⟨🔀⟩ ⟨⏮⟩ ⟨ ▶ ⟩ ⟨⏭⟩ ⟨🔁⟩ │ │ │ │ │ │ 动态均衡条 │ │ ← 64px 主按钮 → │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ 🔊 ═══════════════ │ │ │ │ │ └────────────────┘ └──────────────────────────────┘ │ │ │ │ │ │ │ │ 0:00 ══════════════════●═══════════════════ 3:45 │ │ │ │ ↑ 固定底部 56px 霓虹进度条,可拖拽 │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ --- │ │ 4. 视觉特效详细设计(核心亮点) │ │ │ │ 4.1 背景氛围层(3层叠加) │ │ │ │ Layer 1 - 渐变网格: │ │ - 深空黑底 + 20x20px 点阵网格(rgba 白色 0.03 透明度) │ │ - 3个径向渐变光源:左下洋红(0.04)、右上青(0.03)、中心紫(0.02) │ │ │ │ Layer 2 - 粒子星场(Canvas): │ │ - 50-80 个缓慢漂浮粒子(1-3px,白色 0.05-0.2 透明度) │ │ - 音乐响应:低频(20-200Hz)时粒子亮度和速度瞬间提升 │ │ - 粒子之间距离 < 120px 时绘制连接线(白色 0.03) │ │ - requestAnimationFrame 60fps │ │ │ │ Layer 3 - 光晕呼吸: │ │ - 两个大型模糊圆形(洋红 + 青),以 15s 周期缓慢移动位置 │ │ - filter: blur(80px),极低透明度 (0.03) │ │ - 播放时呼吸频率随 BPM 微调 │ │ │ │ 4.2 播放按钮(主视觉焦点) │ │ │ │ 静态: │ │ .btn-play { │ │ width: 72px; height: 72px; │ │ border-radius: 50%; │ │ background: linear-gradient(135deg, #FF2D78 0%, #A855F7 50%, #FF2D78 100%); │ │ background-size: 200% 200%; │ │ box-shadow: 0 0 30px rgba(255,45,120,0.3), 0 0 60px rgba(255,45,120,0.1); │ │ position: relative; │ │ } │ │ │ │ 播放中 - 渐变动画: │ │ - background-position 在 3s 内从 0%,0% → 100%,100% 循环,产生颜色流动效果 │ │ │ │ 播放中 - 外圈脉冲: │ │ - ::before 伪元素产生 2px 边框圆圈,以 2.5s 周期 scale(1) → scale(1.3) + opacity 1→0 │ │ - ::after 第二圈延迟 1.25s,形成双重脉冲 │ │ │ │ 点击 Ripple Burst(JS 动态创建): │ │ - 点击瞬间:按钮 scale(0.85) → scale(1.05) → scale(1),用 --ease-bounce │ │ - 5 个圆形 ripple 从中心扩散(不同延迟 0/60/120/180/240ms),每个 600ms │ │ - Ripple 颜色:洋红 → 透明 │ │ │ │ Play/Pause 图标变形: │ │ - 使用 SVG path + CSS transition morphing │ │ - 播放三角 ↔ 暂停双竖线,300ms --ease-smooth │ │ │ │ 4.3 随机播放按钮 │ │ │ │ 激活动画: │ │ - 按钮图标做 360° Y 轴 3D 翻转(rotateY),500ms │ │ - 同时发射 6 个微型粒子从按钮中心四散(CSS @keyframes) │ │ - 激活后持续青色 text-shadow 发光 + 图标缓慢旋转(8s/圈) │ │ │ │ 未激活: │ │ - 灰色 --text-muted,无发光 │ │ │ │ 4.4 顺序播放 / 循环按钮 │ │ │ │ 模式切换动画: │ │ - 切换时图标做 180° X 轴翻转(rotateX),同时颜色渐变到目标色 │ │ - 顺序 → 琥珀色;循环全部 → 青色;单曲循环 → 洋红色 │ │ - 单曲循环模式:右上角小数字 "1" 弹入动画 │ │ │ │ 4.5 音频可视化器(Canvas,核心特效) │ │ │ │ 使用 Web Audio API AnalyserNode(fftSize=512,256个频率数据点)。 │ │ │ │ 模式 A — 圆形频率光柱(默认): │ │ - 128 根光柱围成 360° 圆形,从中心向外辐射 │ │ - 每根光柱高度 = 对应频率振幅 × 比例 │ │ - 颜色渐变:低频(0°)洋红 → 中频(180°)紫色 → 高频(360°)青色 │ │ - 每根光柱顶端有 2px 圆形小光球 │ │ - 光柱有 shadowBlur: 8 的发光效果 │ │ - 无音乐时光柱缓慢"呼吸"(微小随机振幅) │ │ │ │ 模式 B — 波形环: │ │ - 围绕唱片的平滑波形曲线 │ │ - 线宽 2px,gradient stroke 从洋红到青 │ │ - shadowBlur: 15 霓虹发光 │ │ - 波形数据取自 getByteTimeDomainData │ │ │ │ 模式 C — 柱状均衡器: │ │ - 底部 64 根垂直条,高度映射频率 │ │ - 条宽 4px,间距 2px,圆角顶部 │ │ - 颜色从底部(暗紫)到顶部(亮青/洋红)渐变 │ │ - 每根条有余晖效果(顶部小方块缓慢下落) │ │ │ │ 点击可视化区域切换模式,带 fade 过渡(300ms opacity 交叉) │ │ │ │ 4.6 唱片旋转动画 │ │ │ │ - 无专辑封面时显示默认黑胶唱片 SVG(同心圆环 + 反光线条) │ │ - 旋转速度:播放时 20s/圈 │ │ - 暂停时:animation-play-state: paused,CSS transition 模拟减速 │ │ - 唱片外圈有 1px 反光条纹,旋转时产生光泽变化 │ │ - 唱片中心有一个小圆点(洋红色),像真正的黑胶 │ │ │ │ 4.7 进度条霓虹效果 │ │ │ │ 轨道: │ │ - 高 3px,hover 过渡到 5px │ │ - 背景:--bg-elevated │ │ - 圆角全角 │ │ │ │ 已播放部分: │ │ - linear-gradient(90deg, #FF2D78, #A855F7, #00F0FF) — 三色霓虹渐变 │ │ - background-size: 200%,以 3s 周期水平移动产生流动效果 │ │ │ │ 发光反射: │ │ - 填充条下方 8px 处有一个模糊副本(filter: blur(8px); opacity: 0.4) │ │ - 产生霓虹灯管照射地面的反光效果 │ │ │ │ 拖拽手柄: │ │ - 16px 圆形,默认 scale(0) 隐藏 │ │ - hover 轨道时 scale(1) + 白色 + 青色发光阴影 │ │ - 拖动中 scale(1.3) + 更强发光 │ │ │ │ 时间悬浮提示: │ │ - 鼠标悬停在轨道上时,光标位置上方显示 tooltip 显示对应时间 │ │ │ │ 4.8 侧边栏文件列表特效 │ │ │ │ 文件夹 hover: │ │ - 左边框从透明渐变为 2px 琥珀色 │ │ - 图标从 📁 切换为 📂(打开状态)CSS content 变化 │ │ - 背景渐变发光 │ │ │ │ MP3 文件 hover: │ │ - 左边框 2px 青色 │ │ - 右侧淡入播放三角图标 │ │ │ │ 当前播放文件(最重要的视觉指示): │ │ - 左边框 2px 洋红色 + 洋红色发光 │ │ - 图标替换为 CSS 动态均衡器(3根条 + 不同频率动画): │ │ @keyframes eq1 { 0%,100% { height: 3px; } 25% { height: 14px; } 50% { height: 8px; } 75% { height: 18px; } } │ │ @keyframes eq2 { 0%,100% { height: 10px; } 30% { height: 4px; } 60% { height: 16px; } } │ │ @keyframes eq3 { 0%,100% { height: 6px; } 40% { height: 18px; } 70% { height: 3px; } } │ │ - 文件名洋红色 + text-shadow 发光 │ │ │ │ 列表进入动画(staggered reveal): │ │ - 每次浏览新文件夹,文件项依次从右侧滑入 + 淡入 │ │ - 每项延迟 30ms,--ease-smooth │ │ │ │ 4.9 曲目切换过渡 │ │ │ │ - 旧标题 → 左滑 + 淡出 (300ms) │ │ - 新标题 → 右侧滑入 + 淡入 (400ms, 延迟 150ms) │ │ - 可视化器短暂 pulse 闪烁 │ │ - 背景光晕颜色微调(随机在洋红/青/紫间变化) │ │ │ │ 4.10 Toast 通知 │ │ │ │ - 右下角浮出,背景 backdrop-filter: blur(12px) + 半透明深色 │ │ - 左边框 3px 对应颜色(成功=青,信息=紫,警告=琥珀) │ │ - 滑入动画:从右外 translateX(120%) → 0 │ │ - 3秒后自动滑出消失 │ │ │ │ 4.11 音量控制 │ │ │ │ - 扬声器图标 + 水平滑条 │ │ - 滑条样式与进度条一致(但更短更细) │ │ - 静音时图标变为划线样式 + 灰色 │ │ - 音量条颜色:青色渐变 │ │ │ │ --- │ │ 5. 交互功能 │ │ │ │ 播放模式(循环切换) │ │ │ │ 顺序播放 → 列表循环 → 单曲循环 → 随机播放 │ │ │ │ 键盘快捷键 │ │ │ │ Space=播放/暂停, ←→=快进退5s, ↑↓=音量±10%, N=下一首, P=上一首, S=随机, M=静音 │ │ │ │ 文件浏览 │ │ │ │ - 面包屑导航,可点击各级目录 │ │ - 搜索框:实时过滤全部文件(调用 /api/tree 缓存后客户端过滤) │ │ │ │ AudioContext │ │ │ │ - 延迟到首次用户交互时创建(浏览器自动播放策略) │ │ - createMediaElementSource 连接 AnalyserNode │ │ │ │ --- │ │ 6. 实施步骤 │ │ │ │ Step 1: 后端 music-server.py │ │ │ │ 创建完整后端,包含所有 API 端点和 Range 请求支持。 │ │ │ │ Step 2: 前端 HTML 骨架 + 设计系统 │ │ │ │ HTML 结构 + 完整 CSS 自定义属性 + 布局 + 字体加载。 │ │ │ │ Step 3: 核心 JS — MusicPlayer 类 │ │ │ │ 文件浏览、播放控制、进度条拖拽、播放模式。 │ │ │ │ Step 4: 视觉特效 — Canvas 可视化器 │ │ │ │ 音频可视化器(3种模式)、唱片旋转、背景粒子星场。 │ │ │ │ Step 5: 按钮特效 + 过渡动画 │ │ │ │ Ripple burst、3D 翻转、均衡器指示器、staggered reveal。 │ │ │ │ Step 6: 打磨 │ │ │ │ 搜索、Toast、响应式(<768px 侧边栏折叠为底部 Tab)、错误处理、prefers-reduced-motion 支持。 │ │ │ │ --- │ │ 7. 验证 │ │ │ │ python music-server.py "E:\workspace\music" │ │ # 浏览器打开 http://localhost:8924 │ │ │ │ 验证清单: │ │ - 页面加载 — 背景粒子动画、光晕呼吸 │ │ - 文件浏览 — 文件夹进入/返回、面包屑、staggered reveal 动画 │ │ - 点击 mp3 — 立即播放、均衡器指示器显示 │ │ - 进度条 — 实时更新、拖拽跳转、霓虹发光 │ │ - 播放按钮 — ripple burst、脉冲环、图标变形 │ │ - 随机/顺序按钮 — 3D 翻转动画、状态发光 │ │ - 可视化器 — 3种模式切换、频率响应 │ │ - 唱片旋转 — 播放旋转、暂停减速 │ │ - 曲目切换 — 滑入滑出过渡 │ │ - 键盘快捷键 — 全部可用 │ │ - 搜索 — 实时过滤 │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
我想酷炫两个字,命中了claude的大胆设计的提示词区间了,所以给我设计了如下的音乐播放器,效果非常好,功能也非常棒,完全可以替代音乐播放器付费软件

https://claude.com/blog/improving-frontend-design-through-skills https://claude.com/plugins/frontend-design