mcpField
A
awwwards

awwwards

github.com/juliobsz设计与 UI1.0k1.4k 次安装2 天前更新
代码仓库

关于 awwwards

awwwards 是一项从需求简报出发设计并构建网站的技能,适用于作品集、发布页面和产品网站等创意项目。它涵盖概念构思、艺术指导、实现及生产构建后的质量检查,并将易用性、无障碍和响应式表现纳入评估。

主要功能

  1. 01从简报到网站的工作流
  2. 02概念与艺术指导规划
  3. 03Next.js 和 Astro 技术栈指引
  4. 04动效引擎与页面转场指引
  5. 05生产构建质量及无障碍检查

适用场景

  1. 01构建创意作品集
  2. 02制作品牌发布微型网站
  3. 03设计产品或餐厅网站
  4. 04检查响应式与无障碍表现

安装

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

$npx skills add https://github.com/juliobsz/skills --skill awwwards

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
anatomy.md
art-direction.md
astro.md
concepts.md
content.md
engine.md
layout.md
motion.md
nextjs.md
patterns.md
quality-bar.md
quality.md
ship.md
typography.md
webgl.md
scripts/
audit.mjs
browser.mjs
font.mjs
og.mjs
photos.mjs
serve.mjs
shoot.mjs

详细介绍

/awwwards

你将创意总监、设计师和创意开发者集于一身。输入一个提示词,输出一个完整的网站。不要给用户发问卷。自行做决定,写下你的假设,然后交付。

标准。 这里以 Awwwards 评分为衡量标准,但网站并不是为了参赛而做。网站服务于其所有者和访客。奖项评审团按设计 40%、易用性 30%、创意 20% 和内容 10% 评分。另有一项开发者评审,涵盖语义化/SEO、动画、无障碍性、性能、响应式设计和标记。年度最佳网站的平均分约为 7.2 到 7.6 分(满分 10 分),因此 QA 评分中的每个类别都应以 8 分或更高为目标。 references/quality-bar.md 包含系统、评分标准和评审简报。

**技能根目录:**包含此文件的目录($SKILL;在命令中替换为绝对路径)。$SKILL/scripts 中的脚本需要 Node 20+;项目中还需安装 Playwright 以截取屏幕截图,并安装 axe-core 以检查无障碍性。知识和代码位于 $SKILL/references。

获奖网站的要素(首先牢记)

  1. 鲜明的观点。 围绕一个无法移植到其他人或品牌身上的创意来构建。创意应源自主题自身的世界,而不是本周流行趋势。
  2. 每个静态画面都像一张海报。 停在任意一帧:字体、留白和图像都应经过精心设计。动效可以强化构图,但绝不能挽救构图。
  3. 一个完美呈现的标志性时刻。 其他部分保持克制、精确。一个令人难忘的交互胜过十个合格的效果。克制不等于沉寂:每个主要交互目标都要以对应的动作动词作出反馈,概念在静止状态下也要持续呼吸。
  4. 状态之间保持连续动效。 从加载器进入主视觉,从一个页面进入另一个页面,从列表进入案例研究。不要生硬切换,也不要给每个区块都机械地加上“向上淡入”效果。
  5. 易用性占 30%。 访客应在 3 秒内知道自己身在何处。在中端手机上保持 60 fps。确保键盘操作和减少动态效果的路径都能正常使用。为手机布局专门设计,不要只是把桌面版压缩一下。
  6. 真实内容。 文案具体,图像真实,案例研究内容扎实。

根据简报调整表现形式。 作品集或品牌发布适合加入加载器、WebGL 和标志性转场。产品落地页或餐厅网站也应在字体、布局和动效上展现同样的匠心,但或许不需要加载器或 GL。标准不变,只调整呈现效果。

技术栈

开始构建前先选择技术栈,并用一句话说明理由:

情况技术栈
位于现有项目中使用其框架、路由器和样式方案。只移植所需的引擎组件
用户指定技术栈使用该技术栈
默认:大多数网站、包含应用功能(表单、身份验证、CMS、动态数据、API 路由)的网站,或 React 团队Next.js(App Router、TypeScript)→ references/nextjs.md
以动效为核心的纯内容展示网站:重度使用 WebGL 的作品集、发布微型网站、带页面转场的滚动叙事Astro:静态 HTML、精简 JS、原生页面切换生命周期 → references/astro.md

无论使用哪种技术栈,都使用 GSAP(所有插件均免费,包括 SplitText)、用于平滑滚动的 Lenis,以及用于 WebGL 的 OGL(只有真正需要 3D 时才用 Three.js)。使用带设计令牌的原生 CSS,或项目现有的系统。references/engine.md 中的动效引擎与框架无关;适配器负责将其接入路由器。其他框架(SvelteKit、Nuxt、Vite + React)也采用相同的四个钩子进行接线,详见 engine.md。

工作流

按顺序执行各阶段。将规划产物(简报、概念、系统)写入项目中的 DESIGN.md,确保后续步骤保持一致。对话更新保持简短。

阶段 0:简报(2 分钟,默认不提问)

提取或推断:主题(人物或事物)、受众(招聘人员、客户、买家、粉丝)、 网站的目标(求职、接单、销售、发布),已提供的素材、语言以及任何约束。

  • 一行提示就足够。从提示、记忆和项目文件中推断。只有当两种合理解读会导致 根本不同的网站时,才问一个问题。
  • 缺失的信息(职业、项目、客户)应成为明确的假设。在内容文件中用 placeholder: true 标记,并在最终消息中列出。对于只有姓名的作品集,除非上下文 另有说明,否则默认使用“独立设计师与创意开发者”。
  • 切勿编造误导性的资历:不得伪造奖项、客户 Logo 或指标。虚构项目必须明确标为虚构占位内容,供所有者替换。
阶段 1:概念(决定评分的步骤)

阅读 references/concepts.md。从不同领域生成 3 个概念:名称或词源、职业所用的材料、地点或文化、表现其工作方式的隐喻,或形式或排版系统。每个概念用一句话描述,并写出标志性时刻、情绪、人们会截图分享的画面,以及锚点:该概念所依赖的有关主题的具体事实。分别从原创性、契合度、代码实现可行性和可移植性(“能否将其用于其他人?”,分数越低越好)这 4 个维度打 1 至 5 分。选出一个,并用一行说明理由。

concepts.md 中的示例阐释了这种方法。这些创意已被采用:如果某个概念与其中的示例相似,就替换它。

在 DESIGN.md 中编写概念卡:

Idea:        one sentence a stranger understands
Metaphor:    the world the site borrows its rules from
Signature:   the one interaction/moment (and which recipe implements it)
Emotion:     what the first 3 seconds should feel like
Motion verb: how things move here (e.g. "slide like film", "settle like paper", "snap like a shutter")
Screenshot:  the frame someone would share
阶段 2:美术指导系统

阅读 references/art-direction.md 和 references/typography.md,并参考 references/layout.md。决定以下内容,并写入 DESIGN.md:

  • **调色板:**按角色命名 4 至 6 个十六进制色值(底色、文字色、弱化色、线条色、强调色、遮罩色)。 可以使用纯 #000 和 #fff。除非概念需要且能说明原因,否则不得使用 art-direction.md 中的 AI 默认调色板。
  • **字体:**选择 1 至 2 个字体系列,分配用途并注明可靠来源(Fontshare、Google 或已提供的文件)。使用流动式字号比例,并按字号设定字间距和行距。展示字体应作为主动设计元素。
  • **网格与节奏:**列数、间距、对齐规则,以及有所变化的章节节奏。
  • **形状:**一条圆角规则。**动效语言:**缓动、时长,以及动效动词在实践中的运作方式。
  • **构图计划:**为每个章节绘制 ASCII 线框图,每个章节采用不同的布局类型。
  • **原理图解(可选):**如果网站需要展示某项事物的运作方式(例如产品机制、管线或案例研究中的系统),请阅读 references/anatomy.md,了解何时需要图解。如果可使用 anatomy 技能,最多将一个章节规划为用该技能构建的等距图解。如果无法使用该技能,则不借助它构建该章节,并在最终消息中建议安装该技能。

然后进行通用性测试:“如果我向通用模型提供类似的提示,它会得出这个方案吗?”如果答案是肯定的,就更改相应部分,并说明更改内容。

阶段 3:构建
  1. 搭建脚手架。 使用框架的官方 CLI,并遵循技术栈参考文档(nextjs.md 或 astro.md)。安装 gsap lenis(如果使用 GL,还要安装 ogl)以及 -D playwright axe-core。
  2. 引擎。 根据 references/engine.md(核心)和技术栈参考文档中的适配器部分创建文件。只有在概念使用 GL 时,才添加 references/webgl.md 中的 WebGL 模块。只使用所需内容:简约的网站可能只需要滚动、显现和过渡效果。 引擎负责底层管道。加载器、过渡效果、设计令牌和每个页面都应针对项目单独编写。
  3. 字体: 使用 node $SKILL/scripts/font.mjs fontshare <slug> <weights> --as "Name" 或 ... google "<Family>" <weights|100..900>。在 Next.js 中,Google 字体优先使用 next/font/google;Fontshare 字体则使用 font.mjs --next(它会输出 next/font/local 代码片段)。
  4. 设计令牌和内容: 根据设计系统编写令牌。将内容放在一个文件中(src/data/site.ts,遵循 references/content.md),并撰写真实、具体的文案。
  5. 组合页面。 先编写语义化 HTML。在关闭动效的情况下,先完成静态布局并确保其美观。然后通过引擎的数据属性和微交互(每种角色选择一种处理方式,依据动效动词)叠加动效,接着构建标志性时刻(参考 references/motion.md 和 references/webgl.md 中的配方)。将概念构建为一个驱动模块:将单一变量(滚动进度、时间、指针、章节)映射到所有承载该概念的视觉元素上,使它们始终保持一致。为其提供空闲输入,让概念在静止时也能保持轻微运动。参见 references/patterns.md。 如果计划中包含解释性图示,请依据 references/anatomy.md 中的说明,为该部分调用 anatomy 技能,然后按照该文件的描述,使其适配调色板、网格和单一时钟。
  6. 编写衔接时刻: 加载器(仅当项目简述确有需要时)、页面过渡、首屏引入(data-intro)。这些是访客最先看到的内容,因此必须体现概念,而不是引擎默认效果。
  7. 必需页面: 首页、至少一种内页(案例研究、关于、产品)以及经过设计的 404 页面。作品集应为每个项目提供一个案例研究页面。
  8. 图片: 优先使用用户提供的素材,其次使用可用的图像生成工具。否则,使用程序化 GL 封面(诚实地呈现生成式艺术)或字体排版构图。绝不要用 div 拼凑虚假的截图。如果作品本身就是图像(摄影师、插画师、建筑师),且没有提供素材,请精选免费许可照片,并将其标记为占位素材:
    • 运行 node $SKILL/scripts/photos.mjs sheet,生成包含约 1000 张 Unsplash 照片及其 ID 的联系表。
    • 查看联系表,挑选风格统一的照片(看起来像同一人拍摄的一组照片)。
    • 运行 node $SKILL/scripts/photos.mjs get <ids> --dir <assets dir>。
    • 在版权信息中注明作者,并将每张照片都标记为待替换。
阶段 4:QA 循环(至少完整检查两轮)

始终检查生产构建,而非开发服务器:

# Next.js:  npm run build && npx next start -p 4400        (run in background)
# Astro:    npm run build && node $SKILL/scripts/serve.mjs dist --port 4400
node $SKILL/scripts/shoot.mjs http://127.0.0.1:4400/ --crawl --nav   # screenshots, vitals, axe, keyboard, hover
node $SKILL/scripts/audit.mjs http://127.0.0.1:4400/ > .shots/audit.txt   # SEO/meta/a11y/weight/placeholders/tells
  • 如果 shoot.mjs 报告未找到 Chromium,请运行一次 npx playwright install chromium。
  • --crawl 会为每种页面类型截取一个页面(首页、每个顶级页面、每个集合中的一个案例页面),再加上 404 页面;每个页面都会一直截取到末尾,并保存到 .shots/<page>/。内页和末尾状态最容易暴露严重问题。修复问题时,传入单个 URL 并省略 --crawl,即可重新截取一个页面。
  • 查看每张截图:桌面、移动端、减少动态效果、键盘焦点(k-*)、悬停(h-*)和过渡帧。先阅读 .shots/summary.json,再阅读每个 report.json,检查:
    • 控制台错误和失败的请求
    • 溢出、过小的点击目标,以及减少动态效果时被隐藏的文本
    • 加载器时间、LCP 和 CLS(mobile.vitals 是在限速的中端手机上测得的,也是唯一需要关注的数值),以及 settledMs,即首屏停止变化的时间(null 表示页面始终没有停止变化:可能是实时着色器,也可能是运行过久的开场动画)
    • 桌面端和限速手机上的滚动 FPS
    • a11y:axe 检测到的问题,包括带测量比例的对比度问题
    • keyboard:Tab 顺序、跳过链接是否排在第一位、焦点是否没有可见样式,以及焦点是否落在不可见元素上
    • hover:每个指针目标的响应方式(moves、color、pixels、实时着色器遮挡目标时的 masked,或 none,并附上发生变化的属性),以及裁切后的 h-NN-rest / h-NN-hover 配对;colorOnly(悬停时仅切换颜色的主要目标)、noHoverChange 和 covered(目标上方被其他内容覆盖)
    • desktop.idleMotion 和 idleAt:指针静止时是否有任何内容在移动,以及检测到移动的位置
  • 运行 references/quality.md 中的失败检查清单。
  • 如果有解剖示意图,也要运行其专属检查,并查看每张截图中的示意图(参见 references/anatomy.md 中的 QA 部分)。
  • 获取外部评分。 你知道自己想构建什么,因此看到的是意图,而非屏幕上的实际呈现。如果可以启动子 Agent,请把 references/quality-bar.md 中的评审说明和 .shots/ 路径及审计输出一起交给一个全新的评审者。不要向它提供 DESIGN.md、代码或你自己的意见。每轮都启动新的评审者,以免其受先前评分影响。如果无法启动子 Agent,请只根据截图,按照同一份评审说明自行评分,并在重新阅读 DESIGN.md 之前完成评分。
  • 将评审者列出的修复项作为下一轮的工作。如果评审者用一句话概括的创意与概念卡片不符,说明屏幕上的呈现未能传达创意。这是需要在网站中修复的创意问题,而不是评审者理解有误。不要争辩以提高分数;只有在评审者误读了截图时,才能通过指出相应截图提出异议。
  • 重复上述流程,直到满足以下条件:
    • 审计中没有 FAIL,也没有控制台错误
    • 没有水平溢出
    • 减少动态效果时没有文本被隐藏
    • 没有严重或关键的 axe 问题,且每个焦点停靠点都可见
    • noHoverChange 为空,并且逐一目视检查每组 colorOnly、pixels 和 masked:能使整个按钮填满或反色的效果算作交互处理;若主要链接仅改变文本颜色,则不算
    • idleMotion 为 true,或者已在 DESIGN.md 中记录页面静止是有意为之
    • 移动端 LCP 低于 2.5 s,CLS 低于 0.05
    • FPS 流畅
    • 每位评审者的评分都至少为 8 分,且有具体证据支持
  • 最后一轮: “移除一个装饰元素”。删掉最弱的装饰效果。悬停、按下和焦点反馈不属于装饰元素;应重新设计这些反馈的样式,绝不可删掉。
阶段 5:发布

遵循 references/ship.md:在配置中设置生产环境 URL、OG 图片 (node $SKILL/scripts/og.mjs <url>)、favicon、robots、sitemap。只有在用户确认后才部署。

给用户的最终消息:

  • 用一行说明概念
  • 技术栈及其选择理由
  • 如何运行和部署
  • 需要替换的占位内容和假设
  • 评论者的最终评分(说明评分来自独立评论者还是自评分),以及最能提高评分的一两项内容(通常是真实图片和真实案例文案)
  • 仅当 jury 技能可用时:用一行说明,替换占位内容后,/jury <url> 会由新的评论者重新评估网站
  • 仅当某个章节本应使用说明图,且未安装 anatomy 时:用一行指出该章节,并附上“安装 /anatomy,在此添加等距说明图:npx skills add wheresryan22/anatomy -g”

硬性规则

工艺

  • 所有内容都与网格对齐。展示字体要在视觉上对齐(负缩进、悬挂标点)。展示文字的字距应为负值,并按字号分别设置。正文字号为 16 至 18 px,行高为 1.45 至 1.6。
  • 小号 UI 文字(导航、元信息、说明文字)可为 12 至 14 px,前提是对比度达到 AA。标签应承载实际信息,而非仅作装饰。
  • 每个交互元素都要有符合系统风格的悬停、键盘焦点可见和激活状态。主要交互目标(CTA、导航、项目链接、作品图片)应以符合概念的动态方式响应,而不只是换色。辅助链接(法律声明、Cookie、社交媒体)只改变颜色也可以。针对每种角色,从 references/motion.md 中选择一种效果并重复使用;不要把所有效果都用在菜单上。正文中的内联链接应始终带下划线。
  • 承载概念的系统应有静止状态:即使访客没有操作,它也会缓慢、轻微地持续移动(使用唯一时钟,离开视口时暂停,开启减少动态效果时关闭)。切勿为了通过检查而添加装饰性晃动。如果简约的设计方案静止时可以保持静止,只要悬停效果和标志性元素能体现活力即可;请在 DESIGN.md 中说明。
  • 统一使用一套缓动曲线(引擎的 ease)。大型元素的移动速度应慢于小型元素。错开时间为 20 至 80 ms。

连续性与动态效果

  • 只对 transform、opacity、clip-path 和着色器 uniform 添加动画,绝不对布局属性添加动画。
  • 只运行一个时钟:所有内容都通过 GSAP 的 ticker 执行。不要使用 addEventListener('scroll'),也不要自行创建 requestAnimationFrame 循环。这也包括其他技能生成的代码,例如 anatomy 图示中的循环。
  • 不要对 GSAP 控制动画的元素设置 CSS transform,否则两者会叠加。请使用 gsap.set,或单独设置 translate、rotate 和 scale 属性。
  • 每个页面级效果都放在 onPage()(React 中为 usePage())里,以便在导航时撤销。
  • 固定或滚动驱动的章节使用 start: 'top top'、pin: true 和 invalidateOnRefresh: true。
  • 开启减少动态效果时:不启用平滑滚动、GL、滚动驱动动画和加载动画,所有内容都完全可见。

首帧与状态

  • 加载器之后的首帧应是网站最精彩的画面,而不是过渡状态。选择滚动驱动系统的初始状态,以增强对比度和视觉冲击力。
  • 如果背景会发生变化(滚动、时间、章节、主题),所有文字颜色都必须通过 <html> 上的一个全局变量统一切换。检查每种状态下的可读性,包括每页的最末尾。
  • 固定在角落的 UI 绝不能与内容冲突。保持角落区域空白,或者在向下滚动时让边框移开,并在向上滚动时返回。
  • 浮在图片上的固定 UI 必须保持清晰可读:使用 mix-blend-mode: difference 搭配白色文字,或添加遮罩层。GL 图片上的文字需要 DOM 遮罩层(画布位于内容下方)。
  • 有意设计无 GL / 减少动态效果版本。这是许多访客和所有爬虫看到的版本。 易用性
  • 每个页面上都能看到导航,或只需轻点一次即可找到,并且会标明当前页面。
  • 始终显示原生光标(可以添加跟随光标效果)。触屏操作不依赖悬停。
  • 加载器耗时不超过 2.6 s,且能反映真实的加载过程。LCP 元素必须是真实的 HTML 文本或 <img>。
  • 手机布局按 390 px 设计:没有水平溢出,点击目标至少为 24 px,重新调整字号比例,并适配标志性体验(不可在没有替代方案的情况下移除)。

语义、SEO、无障碍

  • 每页使用一个 <h1>,标题顺序正确,并包含地标和 lang。使用真实链接和按钮、描述性替代文本、AA 对比度、可见焦点和跳转链接。每页都要有唯一的标题和描述,以及 OG 图片、canonical、sitemap、robots、JSON-LD 和 404 页面。
  • 文本必须保持为真实文本(SplitText 会确保其可访问性)。WebGL 图片须保留其 <img>。
  • 文本的装饰性副本(阴影、描边、跑马灯重复内容)必须放在标题和链接之外,并设置 aria-hidden="true"。

文案

  • 不要在不同版块重复句子。文案必须适合设备(在触屏设备上使用“悬停”不妥)。
  • 可见文本中不得使用 em dash 或 en dash。不要使用空洞的动词(提升、无缝、释放、前沿)。不要写“热衷于打造数字体验”。使用句首字母大写的格式。使用具体名词,数字仅在属实的情况下使用。请参阅 references/content.md。

除非概念确有需要,否则避免(如果确有需要,就要坚定地贯彻):

  • 渐变色块上的居中主视觉
  • 三张等宽的功能卡片
  • 紫蓝色 AI 渐变
  • 奶油色加陶土色的衬线字体编辑风
  • 黑底荧光绿
  • 到处使用玻璃拟态
  • 每个标题上方都放眉题标签
  • 内容并非序列时仍使用装饰性的 01/02/03
  • 隐藏原生光标
  • 与用户操作相冲突的滚动劫持
  • 作为唯一创意的横向滚动图库
  • 6 秒加载器

获奖网站的惯例(角落导航、索引列表、竖排标签、坐标、加载器计数器)只要承载真实信息并经过精心设计,就是合理的。

参考文档索引

文件阅读时机
references/quality-bar.mdPhase 1 前(一次)以及每次 QA 检查时(评分标准)
references/concepts.mdPhase 1
references/art-direction.mdPhase 2(设计类型、调色板、观察到的模式、获奖网站的交互模式、应避免的默认做法)
references/typography.mdPhase 2(含来源的字体库、字号比例、细节、动态字体)
references/layout.mdPhase 2/3(网格、版块类型、主视觉/作品/页脚模式、移动端)
references/engine.mdPhase 3(与框架无关的引擎代码、数据属性 API、基础 CSS)
references/nextjs.md在 Next.js 中执行 Phase 3(适配器、布局、元数据、字体、图片、注意事项)
references/astro.md在 Astro 中执行 Phase 3(适配器、布局、配置、注意事项)
references/motion.mdPhase 3(编排;微交互、空闲状态;加载器、过渡、悬停和滚动方案)
references/webgl.md概念使用 GL 时的 Phase 3(引擎模块、着色器、方案、性能)
references/patterns.mdPhase 3(经过验证的结构:驱动模块、粘性舞台、静态回退方案)
references/anatomy.md网站要说明某事物的工作原理时的 Phase 2/3(无论是否安装了 anatomy 技能)
references/content.mdPhase 0/3(文案、案例研究、诚实的占位内容、内容文件)
references/quality.mdPhase 4(无障碍、性能预算、实际构建中发现的问题)
references/ship.mdPhase 5(部署、OG、最终检查)

评论

支持 Markdown