关于 awwwards
awwwards 是一项从需求简报出发设计并构建网站的技能,适用于作品集、发布页面和产品网站等创意项目。它涵盖概念构思、艺术指导、实现及生产构建后的质量检查,并将易用性、无障碍和响应式表现纳入评估。
主要功能
- 01从简报到网站的工作流
- 02概念与艺术指导规划
- 03Next.js 和 Astro 技术栈指引
- 04动效引擎与页面转场指引
- 05生产构建质量及无障碍检查
适用场景
- 01构建创意作品集
- 02制作品牌发布微型网站
- 03设计产品或餐厅网站
- 04检查响应式与无障碍表现
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ juliobsz/ skills --skill awwwards安装后在 Claude Code 中输入/awwwards确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/anatomy.mdart-direction.mdastro.mdconcepts.mdcontent.mdengine.mdlayout.mdmotion.mdnextjs.mdpatterns.mdquality-bar.mdquality.mdship.mdtypography.mdwebgl.mdscripts/audit.mjsbrowser.mjsfont.mjsog.mjsphotos.mjsserve.mjsshoot.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。
获奖网站的要素(首先牢记)
- 鲜明的观点。 围绕一个无法移植到其他人或品牌身上的创意来构建。创意应源自主题自身的世界,而不是本周流行趋势。
- 每个静态画面都像一张海报。 停在任意一帧:字体、留白和图像都应经过精心设计。动效可以强化构图,但绝不能挽救构图。
- 一个完美呈现的标志性时刻。 其他部分保持克制、精确。一个令人难忘的交互胜过十个合格的效果。克制不等于沉寂:每个主要交互目标都要以对应的动作动词作出反馈,概念在静止状态下也要持续呼吸。
- 状态之间保持连续动效。 从加载器进入主视觉,从一个页面进入另一个页面,从列表进入案例研究。不要生硬切换,也不要给每个区块都机械地加上“向上淡入”效果。
- 易用性占 30%。 访客应在 3 秒内知道自己身在何处。在中端手机上保持 60 fps。确保键盘操作和减少动态效果的路径都能正常使用。为手机布局专门设计,不要只是把桌面版压缩一下。
- 真实内容。 文案具体,图像真实,案例研究内容扎实。
根据简报调整表现形式。 作品集或品牌发布适合加入加载器、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:构建
- 搭建脚手架。 使用框架的官方 CLI,并遵循技术栈参考文档(nextjs.md 或
astro.md)。安装
gsap lenis(如果使用 GL,还要安装ogl)以及-D playwright axe-core。 - 引擎。 根据
references/engine.md(核心)和技术栈参考文档中的适配器部分创建文件。只有在概念使用 GL 时,才添加references/webgl.md中的 WebGL 模块。只使用所需内容:简约的网站可能只需要滚动、显现和过渡效果。 引擎负责底层管道。加载器、过渡效果、设计令牌和每个页面都应针对项目单独编写。 - 字体: 使用
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代码片段)。 - 设计令牌和内容: 根据设计系统编写令牌。将内容放在一个文件中(
src/data/site.ts,遵循references/content.md),并撰写真实、具体的文案。 - 组合页面。 先编写语义化 HTML。在关闭动效的情况下,先完成静态布局并确保其美观。然后通过引擎的数据属性和微交互(每种角色选择一种处理方式,依据动效动词)叠加动效,接着构建标志性时刻(参考
references/motion.md和references/webgl.md中的配方)。将概念构建为一个驱动模块:将单一变量(滚动进度、时间、指针、章节)映射到所有承载该概念的视觉元素上,使它们始终保持一致。为其提供空闲输入,让概念在静止时也能保持轻微运动。参见references/patterns.md。 如果计划中包含解释性图示,请依据references/anatomy.md中的说明,为该部分调用anatomy技能,然后按照该文件的描述,使其适配调色板、网格和单一时钟。 - 编写衔接时刻: 加载器(仅当项目简述确有需要时)、页面过渡、首屏引入(
data-intro)。这些是访客最先看到的内容,因此必须体现概念,而不是引擎默认效果。 - 必需页面: 首页、至少一种内页(案例研究、关于、产品)以及经过设计的 404 页面。作品集应为每个项目提供一个案例研究页面。
- 图片: 优先使用用户提供的素材,其次使用可用的图像生成工具。否则,使用程序化 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.md | Phase 1 前(一次)以及每次 QA 检查时(评分标准) |
references/concepts.md | Phase 1 |
references/art-direction.md | Phase 2(设计类型、调色板、观察到的模式、获奖网站的交互模式、应避免的默认做法) |
references/typography.md | Phase 2(含来源的字体库、字号比例、细节、动态字体) |
references/layout.md | Phase 2/3(网格、版块类型、主视觉/作品/页脚模式、移动端) |
references/engine.md | Phase 3(与框架无关的引擎代码、数据属性 API、基础 CSS) |
references/nextjs.md | 在 Next.js 中执行 Phase 3(适配器、布局、元数据、字体、图片、注意事项) |
references/astro.md | 在 Astro 中执行 Phase 3(适配器、布局、配置、注意事项) |
references/motion.md | Phase 3(编排;微交互、空闲状态;加载器、过渡、悬停和滚动方案) |
references/webgl.md | 概念使用 GL 时的 Phase 3(引擎模块、着色器、方案、性能) |
references/patterns.md | Phase 3(经过验证的结构:驱动模块、粘性舞台、静态回退方案) |
references/anatomy.md | 网站要说明某事物的工作原理时的 Phase 2/3(无论是否安装了 anatomy 技能) |
references/content.md | Phase 0/3(文案、案例研究、诚实的占位内容、内容文件) |
references/quality.md | Phase 4(无障碍、性能预算、实际构建中发现的问题) |
references/ship.md | Phase 5(部署、OG、最终检查) |