三大框架 × 三步接入:用 Taste-Skill 给 AI 界面做品味升级的完整指南
2026/9/7 16:54:48 网站建设 项目流程

三大框架 × 三步接入:用 Taste-Skill 给 AI 界面做品味升级的完整指南

【免费下载链接】taste-skillTaste-Skill - gives your AI good taste. stops the AI from generating boring, generic slop项目地址: https://gitcode.com/GitHub_Trending/ta/taste-skill

AI 生成的界面长得都太像了:深色网格背景、居中大标题、三张等宽卡片、紫蓝渐变按钮——模板感强到分不清是哪个模型出的。Taste-Skill 是一套给 AI 界面注入设计品味的规则 + 模式库,接入 React、Vue、Svelte 等前端框架后,它会把布局、排版、配色、动画都约束到"有品味"的方向,让 AI 不再交作业式的通用 UI。这篇文章按实战顺序走:先三步统一流程跑通,再看每个框架的适配要点,最后给出参数速查表和三条硬规则。

它不是一个 npm 包,而是一份给 AI 读的规格文档(SKILL.md)。你的项目不需要改架构,改的是"AI 怎么理解你的项目"。

🚀 三步快速上手

三个框架的流程完全一致:建项目 → 引入 Taste-Skill 规则 → 加载参数调风格

git clone https://gitcode.com/gh_mirrors/ta/taste-skill cp taste-skill/skills/taste-skill/SKILL.md your-project/
  1. 建项目:Vite、create-react-app、npm create vuenpm create svelte,任何脚手架都行,与 Taste-Skill 无耦合。
  2. 引入规则:把SKILL.md拷进项目,再随每次 AI 对话附上(或放进 Cursor / Codex 的规则目录),AI 就会按规格生成代码。
  3. 加载参数:在SKILL.md顶部声明三个"旋钮",数值决定整体风格走向,改数字即可切换气质,不用重写规则。

三种框架,三种接法

规则是通用的,落地差异集中在状态、动画、样式隔离三件事上。下面每节先列适配要点,再给同一段"磁悬浮按钮"逻辑的框架惯用写法。

React 适配要点

  • RSC 优先:Server Components 渲染静态布局,动效组件必须是独立的'use client'叶子节点
  • 连续动画禁用useState:鼠标位置、指针物理这类每帧都变的数据,必须走 Framer Motion 的useMotionValue/useTransform,让值活在渲染循环之外;用 state 存的话每帧整树重渲染,移动端直接卡死
  • 动态列表包进<AnimatePresence>,进出场动画才能跑满 60fps
  • 无限循环动画用React.memo记忆化,并隔离在独立 Client Component,避免它拖垮周边静态内容
'use client'; import { memo } from 'react'; import { motion, useMotionValue, useTransform } from 'framer-motion'; const MagneticButton = memo(({ children }) => { const x = useMotionValue(0); const y = useMotionValue(0); const transform = useTransform( [x, y], ([vx, vy]) => `translate(${vx}px, ${vy}px)` ); const onMove = (e) => { const r = e.currentTarget.getBoundingClientRect(); x.set(((e.clientX - r.left) / r.width - 0.5) * 10); y.set(((e.clientY - r.top) / r.height - 0.5) * 10); }; return ( <motion.button style={{ transform }} className="px-6 py-3 bg-emerald-600 text-white rounded-lg" onMouseMove={onMove} onMouseLeave={() => { x.set(0); y.set(0); }} > {children} </motion.button> ); }); export default MagneticButton;

Vue 适配要点

  • 组合式 API 对标 hooksref/reactive承接动画状态,逻辑写在<script setup>里,和 React hooks 一一对应
  • 响应式系统天然管理状态transform字符串随x/y自动更新模板,不需要手动同步 DOM
  • 组件级记忆化:SFC 本身就是编译后的独立组件,配合shallowRef可避免高频数值触发深层响应式开销
  • 动画库不是必须项——低强度动效用 ref + CSS transition 就够,见下方 Vue 动画组件写法
<template> <button class="px-6 py-3 bg-emerald-600 text-white rounded-lg shadow-lg transition-transform duration-150 ease-out" :style="{ transform: `translate(${x}px, ${y}px)` }" @mousemove="onMove" @mouseleave="reset" > <slot /> </button> </template> <script setup> import { ref } from 'vue' const x = ref(0) const y = ref(0) const onMove = (e) => { const r = e.currentTarget.getBoundingClientRect() x.value = ((e.clientX - r.left) / r.width - 0.5) * 10 y.value = ((e.clientY - r.top) / r.height - 0.5) * 10 } const reset = () => { x.value = 0; y.value = 0 } </script>

Svelte 适配要点

  • 编译时优化:没有虚拟 DOM diff,高频状态更新直接编译成精准 DOM 赋值,磁悬浮这类每帧动效天生更轻
  • 响应式声明简化状态:普通let变量就是响应式的,不需要 ref / state 包装
  • 生命周期函数管理动画onMount里挂事件、onDestroy里清理,避免泄漏
  • CSS 作用域隔离样式<style>里的规则自动只作用于当前组件,不需要 CSS Modules 或 BEM 约定,这是 Svelte 样式隔离最省事的地方
<script> let x = 0; let y = 0; const onMove = (e) => { const r = e.currentTarget.getBoundingClientRect(); x = ((e.clientX - r.left) / r.width - 0.5) * 10; y = ((e.clientY - r.top) / r.height - 0.5) * 10; }; const reset = () => { x = 0; y = 0; }; </script> <button class="px-6 py-3 bg-emerald-600 text-white rounded-lg shadow-lg transition-transform duration-150 ease-out" style="transform: translate({x}px, {y}px)" on:mousemove={onMove} on:mouseleave={reset} > <slot /> </button> <style> /* 只作用于本组件,天然隔离 */ button:active { transform: scale(0.98); } </style>

🎛️ 参数速查表

参数含义适用场景
DESIGN_VARIANCE布局多样性,1 = 完全对称 → 10 = 艺术化混沌数值 > 4 时禁用居中 Hero,强制分屏 / 左文右图 / 不对称留白
MOTION_INTENSITY动画强度,1 = 静态 → 10 = 电影级物理1–3 只留 hover 态;> 5 才上磁悬浮、打字机等持续微交互
VISUAL_DENSITY视觉密度,1 = 画廊式留白 → 10 = 驾驶舱式数据密集产品落地页常取 3–5;数据看板可拉到 8 以上(禁用通用卡片容器)

调参建议:从中间值起步,然后让结果说话。官方规则里有条很狠的自检——"Motion claimed, motion shown":写了MOTION_INTENSITY: 7页面就必须真的在动,做不出来就把旋钮调低,交付干净的静态页,永远不要交一个动了一半的动画。

✅ 界面质量的三条硬规则

排版

  • ✅ 大标题text-4xl md:text-6xl tracking-tighter leading-none,收紧字距才有"展示感"
  • ✅ 正文text-base text-gray-600 leading-relaxed max-w-[65ch],行宽锁在 65 个字符
  • ✅ 字体选 Geist、Outfit、Cabinet Grotesk、Satoshi
  • ❌ 默认 Inter——它是 LLM 的安全选项,只在用户明确要求时才用

配色

  • ✅ 全站至多 1 个强调色,饱和度压到 80% 以下,选完就"上锁"用到最后一页
  • ❌ "AI 紫蓝"光晕美学、随机霓虹渐变,这是识别 AI 页面的第一信号
  • ❌ 暖灰站点中途冒出一颗蓝色 CTA、页脚又混进青色徽章——冷暖基调全项目统一

布局

  • DESIGN_VARIANCE > 4时上分屏(50/50)、左对齐内容 + 右侧资产、不对称留白
  • ✅ 复杂多栏优先 CSS Grid,少写 flexbox 百分比算式
  • ❌ 居中 Hero / H1,❌ 三张等宽 feature 卡片

⚡ 性能与常见坑

  1. 只对transformopacity做动画,这两项走 GPU 合成;动top/width之类的布局属性必卡。
  2. grain / noise 滤镜别加在滚动容器上——持续重绘会毁掉移动端帧率;只允许挂在fixedpointer-events-none的伪元素上。
  3. z-index 只给系统层:粘性导航、模态框、覆盖层。不要随手撒z-50,把层级标尺写进项目常量文件。
  4. 移动端强制回退:高方差布局在< 768px必须塌成严格单列(w-full px-4 py-8),每个多栏组件里显式声明,不能赌"Tailwind 会处理的"。
  5. MOTION_INTENSITY > 3必须响应prefers-reduced-motion,官方规则里标着 non-negotiable。
  6. 别用window.addEventListener('scroll')手写滚动监听,逐帧触发且不可批处理;用useScroll、GSAP ScrollTrigger 或 IntersectionObserver 替代。

小结

Taste-Skill 的本质是把"设计品味"从玄学变成一份可执行的规格:参数管方向,硬规则管底线,框架适配管落地。React、Vue、Svelte 的差异只是状态与动画的实现习惯,规则本身一份通用。

行动建议:把你正在做的项目里那个最"模板脸"的落地页,先拉DESIGN_VARIANCE到 6、MOTION_INTENSITY到 4,让 AI 重生成一遍,对比再决定要不要调参。

参考资料

  • 核心规则:skills/taste-skill/SKILL.md
  • 高端视觉(soft)变体:skills/soft-skill/SKILL.md
  • 极简 UI 变体:skills/minimalist-skill/SKILL.md

【免费下载链接】taste-skillTaste-Skill - gives your AI good taste. stops the AI from generating boring, generic slop项目地址: https://gitcode.com/GitHub_Trending/ta/taste-skill

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询