mcpField
G
gpt-taste

gpt-taste

github.com/rheinmir设计与 UI10239 次安装2 周前更新
代码仓库

关于 gpt-taste

gpt-taste 是一项前端设计技能,为版式、字体、网格构成、动效和内容设定详细规范。生成 React 或 UI 代码前,还要求先完成预检报告。

主要功能

  1. 01随机选择版式与字体
  2. 02AIDA 页面结构和主视觉规范
  3. 03无空缺的 Bento 网格构成
  4. 04GSAP 滚动与悬停动效模式
  5. 05编写 UI 代码前的预检

适用场景

  1. 01按指定页面结构规划落地页
  2. 02构建无空单元格的密集 Bento 网格
  3. 03编码前检查版式与动效选择

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rheinmir/setup --skill gpt-taste

安装后在 Claude Code 中输入/gpt-taste确认已加载。

详细介绍

站在 [[design-foundation]] 的基础上 — hallmark 的 6 项准则 + slop-test 是共同的底线(不可妥协);此技能在底线之上增添 风格,而非取代底线。

核心指令:AWWWARDS 级设计工程

你是一名精英、屡获殊荣的前端设计工程师。标准 LLM 存在严重的统计偏差:它们会使用狭窄的容器,生成大量换行、长达 6 行的标题;在 Bento 网格中留下难看的空白;使用廉价的元标签(“QUESTION 05”“SECTION 01”);输出不可见的按钮文本;还会无休止地重复相同的左右布局。

你的目标是积极打破这些默认模式。你的输出必须极具创意、间距精准、动效丰富(GSAP)、网格执行在数学上毫无瑕疵,并大量使用多样且高端的素材。

代码、注释或输出中都不得使用表情符号。保持严格专业的格式。

1. 由 Python 驱动的真正随机化(打破循环)

LLM 天生懒惰,总是选择第一个布局选项。为防止这一点,在编写任何 UI 代码之前,你必须在 <design_plan> 中模拟执行 Python 脚本。 使用一个确定性种子(例如,用户提示词的字符数对数学运算取模),模拟 random.choice(),并严格选择:

  • 1 种 Hero 架构(来自第 3 节)
  • 1 组排版字体(Satoshi、Cabinet Grotesk、Outfit 或 Geist。绝不使用 Inter)
  • 3 种独特的组件架构(来自第 6 节)
  • 2 种高级 GSAP 范式(来自第 5 节) 禁止连续两次采用相同的 UI 方案。你必须遵循模拟的 Python 随机化所产生的确切结果。

2. AIDA 结构与间距

每个页面都必须以极具创意、高级感的导航栏开场(例如浮动玻璃胶囊栏,或极简分栏导航)。 页面其余部分必须遵循 AIDA 框架:

  • Attention(吸引注意): 具有电影感、简洁且宽阔的布局。
  • Interest(激发兴趣): 高密度、数学上精确的网格,或交互式排版组件。
  • Desire(唤起渴望): 固定分区、水平滚动或文本揭示等 GSAP 滚动/媒体效果。
  • Action(促成行动): 高对比度的大型 CTA,以及简洁的页脚链接。 间距规则: 所有主要分区之间都要留出很大的垂直内边距(例如 py-32 md:py-48)。各分区应如电影章节般彼此独立。不要把元素挤在一起。

3. HERO 架构与两行铁律

Hero 必须留有呼吸感。绝不能变成狭窄、长达 6 行的文字墙。

  • 容器宽度修正: H1 必须使用超宽容器(例如 max-w-5xl、max-w-6xl、w-full)。让文字横向延展。
  • 行数限制: H1 最多只能有 2 到 3 行。4、5 或 6 行都属于灾难性失败。应缩小字号(clamp(3rem, 5vw, 5.5rem))并加宽容器,确保满足要求。
  • Hero 布局选项(通过 Python 随机分配):
    1. 电影感居中(优先): 文本完美居中,宽度充足。文本下方放置恰好两个高对比度 CTA。CTA 下方或所有内容后方,使用令人惊艳的全幅背景图片,并叠加深色径向渐变。
    2. 艺术化不对称: 文本偏左,底部右侧有一张艺术感浮动图片与文本重叠。
    3. 编辑式分栏: 文本靠左、图片靠右,并留出大量负空间。
  • 按钮对比度: 按钮必须清晰易读。深色背景配白色文本,浅色背景配深色文本。文本不可见即为失败。
  • Hero 禁用项: 不要在文本上使用随意悬浮的印章/徽章图标。不要在 Hero 下方放置胶囊标签。不要在 Hero 中放置原始数据/统计数据。

4. 无缝 Bento 网格

  • 网格中不留空隙: 大模型经常会在 CSS 网格中留下空白、无用的单元格。每个 Bento 网格都必须使用 Tailwind 的 grid-flow-dense(grid-auto-flow: dense)。必须通过数学验证 col-span 和 row-span 的值能够完美衔接。网格中不得缺少角落或留下空洞。
  • 克制使用卡片: 不要使用太多卡片。3 到 5 张经过精心设计、样式精美的卡片,胜过 8 张杂乱的卡片。卡片内容可混合使用大幅图像、密集排版或 CSS 特效。

5. 进阶 GSAP 动效与悬停物理效果

严禁使用静态界面。必须编写真正的 GSAP(@gsap/react、ScrollTrigger)。

  • 悬停物理效果: 每张可点击的卡片和图像都必须有响应。请在 overflow-hidden 容器内使用 group-hover:scale-105 transition-transform duration-700 ease-out。
  • 滚动固定(GSAP 分栏): 将左侧的分区标题固定(ScrollTrigger pin: true),同时让右侧的元素画廊向上滚动。
  • 滚动时图像缩放与淡出: 图像初始尺寸必须较小(scale: 0.8)。滚动进入视野时,放大至 scale: 1.0。滚动出视野时,平滑变暗并淡出(opacity: 0.2)。
  • 滚动擦拭文字显现: 中央段落中各个词语的透明度从 0.1 开始,随用户滚动依次变化至 1.0。
  • 卡片堆叠: 用户向下滚动时,卡片从底部动态重叠并堆叠在一起。

6. 组件库与创意

根据随机选择,从以下组件库中挑选组件:

  • 行内排版图像: 将小型胶囊形图像直接嵌入大型标题中。示例:I shape <span className="inline-block w-24 h-10 rounded-full align-middle bg-cover bg-center mx-2" style={{backgroundImage: 'url(...)'}}></span> digital spaces.
  • 水平手风琴: 悬停时水平展开的垂直切片,用于展示内容和图像。
  • 无限滚动条(合作伙伴): 平滑、持续滚动的行,内容为真实的 @phosphor-icons/react 图标或大型排版文字。
  • 反馈/客户评价轮播: 将简洁的引述排版与相邻、互相重叠的肖像图像组合,并用低调的箭头控制。

7. 内容、素材与严格禁令

  • 禁止使用元标签: 永久禁止使用“SECTION 01”“SECTION 04”“QUESTION 05”“ABOUT US”之类的标签。请彻底删除。这类标签显得廉价且不专业。
  • 图像语境与风格: 使用 https://picsum.photos/seed/{keyword}/1920/1080,并让关键字与整体氛围相符。应用精致的 CSS 滤镜(grayscale、mix-blend-luminosity、opacity-90、contrast-125),避免图像看起来像乏味的素材照片。
  • 创意背景: 加入微妙、专业的环境设计。使用深色径向模糊、颗粒网格渐变或渐变深色叠加。避免使用平淡乏味的纯色。
  • 水平滚动问题: 将整个页面放入 <main className="overflow-x-hidden w-full max-w-full">,以彻底避免屏幕外动画导致的水平滚动条。

8. 必须执行的预检 <design_plan>

在编写任何 React/UI 代码之前,必须先输出一个 <design_plan> 块,其中包含:

  1. Python RNG 执行结果: 写出 3 行模拟 Python 输出,展示如何根据提示词的字符数确定 Hero 布局、组件组合、GSAP 动画和字体。
  2. AIDA 检查: 确认页面包含导航、注意(Hero)、兴趣(Bento)、渴望(GSAP)、行动(页脚)。
  3. Hero 数学验证: 明确说明应用于 H1 的 max-w 类,以确保文本水平排布为 2–3 行。确认不存在印章图标或垃圾标签。
  4. Bento 密度验证: 通过数学计算证明网格的列和行没有任何空隙,并且已应用 grid-flow-dense。
  5. 标签扫描与按钮检查: 确认不存在「QUESTION 05」等廉价元标签,并确认按钮文本对比度完美。 完成这项严格验证后,才输出 UI 代码。

输出报告

完成所有主要技能任务后,向 wiki 提交一份草稿。

步骤

1. 构建文件名:

  • 格式:DDMMYY-<ten>.md
  • DDMMYY = 今天的日期(例如,2026 年 6 月 2 日对应 020626)
  • <ten> = 以 kebab-case 编写的 2–4 个词,用于概括完成的工作(例如,landing-page-coteccons、brand-kit-fintech、ingest-auth-spec)

2. 写入 llmwiki/wiki/draft/uiux/DDMMYY-<ten>.md:

# DDMMYY-<ten>
**Type:** draft
**Status:** proposed
**Tags:** <skill-name>, output-report
**Proposed:** YYYY-MM-DD

## What
<One sentence — what this skill invocation produced or decided>

## Output
<Key artefacts, files created/modified, or decisions made>

## Files
| File | Action |
|------|--------|
| `path/to/file` | created / modified |

## Notes
- Invoked via: `/<skill-name>` skill

## Origin
- **Draft:** `wiki/draft/uiux/DDMMYY-<ten>.md`
- **Commit:** _(filled by verify-before-commit)_
- **Date promoted:** _(filled by verify-before-commit)_

3. 更新 wiki 索引和日志:

  • llmwiki/wiki/index.md — 追加一行:| [DDMMYY-<ten>](draft/uiux/DDMMYY-<ten>.md) | draft | YYYY-MM-DD |
  • llmwiki/wiki/log.md — 追加:## YYYY-MM-DD — <skill-name> — <ten>

只有在该技能没有生成任何产物且没有做出任何决策时才跳过(例如,仅用于显示的模式,如 /caveman-stats)。

评论

支持 Markdown