编辑
2026-03-29
记录知识
0
请注意,本文编写于 41 天前,最后修改于 39 天前,其中某些信息可能已经过时。

目录

skill重要点解析
总结
演示
参考

claude的有一个很有用的skill,就是frontend-design,这个skill能够让我们平时展示,数据输出,小工具制作都可以轻松制作,虽然不能做非常商业化的前端,但是绝对可以说能够替代99%需要前端的场景。甚至于说,前端已死毫不为过,本文以一个通俗的例子来介绍这个skill的使用

但是值得注意的是,这个skill,在工作中非常高效,因为你不需要花任何时间来设计展示内容,claude后台就把必要的信息前端化提供给你了。

skill重要点解析

frontend-design 是一个生产级的前端skill,这个skill覆盖所有人,包括不懂前端的使用者和懂前端的使用者。这里重点解析。

如果用户没有注重前端设计的提示词,那么默认的界面效果如下

image.png

他会把必要的信息通过上述样式展示出来

如果提示词带 RPG ,那么就会提供RPG的复古前端样式如下

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

总结

claude的这个技能主要做到两点

  1. 让不懂前端的角色,一句提示词就提供生产级的前端页面
  2. 让懂前端的角色,能够基于这个skill扩展开发,做出更优秀的前端

也就是说,在这个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的大胆设计的提示词区间了,所以给我设计了如下的音乐播放器,效果非常好,功能也非常棒,完全可以替代音乐播放器付费软件

image.png

参考

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