{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */}
Auteur
设计并构建电影感、获奖级网页。
Skill 元数据
| 来源 | 可选 — 通过 hermes skills install official/creative/auteur 安装 |
| 路径 | optional-skills/creative/auteur |
| 版本 | 1.3.1 |
| 作者 | agiwhitelist (https://github.com/agiwhitelist, 上游 agiwhitelist/auteur),由 Hermes Agent 移植 |
| 许可证 | MIT |
| 平台 | linux, macos, windows |
| 标签 | web-design, cinematic, scroll-animation, design-system, anti-slop, frontend |
| 相关 skill | popular-web-designs, design-md, p5js |
参考:完整 SKILL.md
以下是 Hermes 在触发本 skill 时加载的完整 skill 定义。这是 agent 在 skill 激活时所看到的指令内容。
Auteur Skill
移植自 agiwhitelist/auteur(MIT),快照提交
9bca227d—— 见LICENSE。脚本、模板和参考文档均为上游文件(CRLF→LF),唯一的改动是 Hermes 适配说明和references/路径修正。
Auteur 像电影导演拍电影那样设计并构建网页体验:先剧本,再素材,然后拍摄,最后剪辑。它有三档——build(一个出色的常规站点)、direct(一个电影感、由滚动引导的站点)和 system(把多屏产品当作一套设计系统)——三者共享同一套审美内核。任何东西在通过一道可执行的反套路(anti-slop)门禁、且 skill 亲自审视过自己的产出之前,都不许交付。
何时使用
- 需要新建或重新设计一个落地页、营销站、首屏区、作品集或产品页——而平庸平庸、千篇一律的外观不可接受。
- 需求要求滚动动画、叙事感,或一个像电影一样的站点。
- 一个产品横跨多个屏幕,但必须感觉像一个整体——app、仪表盘、后台管理、上手引导、文档。
- 有人说做得好看点、做出 wow 感、电影感或设计系统,却没点名具体技法。
不适用于打磨别人做好的 UI,也不适用于纯后端工作。
前置条件
- Node 18+ —— 每一道质检门禁都是一个用
node经terminal工具运行的.mjs脚本。 - Playwright(质检门禁需要) —— 在项目目录中:
npm install playwright然后npx playwright install chromium。scripts/shoot.mjs、motionqa.mjs、systemscan.mjs、refscout.mjs、chromadiff.mjs、moodboard.mjs都需要它(这些脚本在运行时 importplaywright;slopscan.mjs和source.mjs依赖很轻)。 - ffmpeg —— 可选;仅
references/assets.md和references/scroll-flight.md中的视频/配乐路径需要。 - Hermes 工具 —— 用
image_generate做图片生成/编辑,用terminal跑 node/ffmpeg/npm,用write_file/read_file处理项目文件,用vision_analyze真正看截图,当脚本不合适时用browser_exec做实时页面检查。
如何运行
它实际做什么
- 在写任何标记之前,先以书面形式确定艺术方向——一种色相、一套字体系统、一份动效预算、若干明确的反例参考。
- 生成或采集素材:Hermes 的
image_generate工具、Blender、深度图、CC0 网格模型与 HDRI,并记录其许可证。 - 用经过验证的配方来构建——一个 WebGL 上下文、transform/opacity 动效、滚动状态机。
- 给结果设门禁:
slopscan发现具体套路就判失败,motionqa发现掉帧就判失败,systemscan发现跨路由漂移就判失败。
网络访问
侦察与素材采集脚本会读取线上页面(awwwards、Bing/Pinterest/are.na 图片搜索、Poly Haven、Iconify、Google Fonts、Openverse、Coverr)。抓取到的内容只当作参考数据和许可证元数据——绝不执行,也不涉及任何凭据、API 密钥或登录。若不希望发出站请求,可完全跳过阶段 0–1;其余每个阶段都可离线工作。moodboard.mjs 还会下载这些搜索站返回的图片 URL 以制作联系表。
路由
阅读参数/需求并路由:
direct或需求闻起来有电影感——"wow"、"cinematic"、"immersive"、"storytelling"、"launch page"、"premium brand"、"make people stop scrolling" → 加载references/direct.md并按其阶段执行。这是旗舰档位。build或需求就是一个常规界面——营销页、落地页、单个产品页 → 加载references/build.md。system或需求有多个屏幕,且必须感觉像一个产品——app、仪表盘、后台、设置、上手引导,或有真正导航的文档/内容站 → 加载references/system.md。设计单元变成组件 × 状态,失败模式变成漂移而非乏味,并且刻意不设高峰。若你已在build中途出现第二个屏幕,停下来切换:半个 system 比两者任一都糟。edit或请求是修改本 skill 构建的页面(项目里有design/DESIGN.md)——"加一个版块"、"改价格"、"换首屏文案" → 先读design/DESIGN.md并遵循其 Editing 协议:复用它的 token、版块开场模式和动效家族;改动后跑 slopscan 并对受影响的视口重新截图。忽略 DESIGN.md 的编辑,即使单独看不错,也是一次回归。recon <brief>或只要参考素材——"找参考"、"拼个 moodboard"、"X 类站点的最新水准是什么" → 加载references/recon.md,只跑那一阶段:侦察线上站点、制作 moodboard,交回design/refs/REFERENCES.md(填好steal:行)和design/moodboard/contact-sheet.png(填好阅读记录)。不出 commit-sheet,不构建。audit <path-or-url>→ 加载references/verify.md,对一个 auteur 构建的页面跑验证流水线。若目标是 auteur 没做过的既有 UI,而用户想打磨而非重建,说明应当用专门的 UI 打磨/评审流程(上游给 auteur 配了一个独立的 'impeccable' skill,此处未 vendored),并仅在用户愿意重建时才继续。- 含糊(例如一句"做个落地页")→ 只问一个问题:"是做一个出色的常规落地页,还是进入电影模式、由滚动引导并生成素材?"(上游这些示例需求原文是俄语,此处译为中文。)然后路由。(多屏需求不含糊——那是
system。)先别问别的——每个档位自己做接单。
三档共享阶段 0,其重心是 commit-sheet。顺序不同:build 跑 recon → commit-sheet → mockup;direct 跑 recon → storyboard → commit-sheet → mockup,因为影片的场景正是那六项决策所围绕的对象;system 跑 recon → system-sheet(路由图 + 组件清单)→ commit-sheet → mockup,因为六项决策是围绕一个产品、而非一个页面做的。无论哪种,在 sheet 填满之前一行代码都不写。
与其他 skill 的协作关系
Auteur 负责构建;它不重新打磨别人的 UI。若用户有一个既有界面需要精修,单独跑一轮 UI 评审(例如对截图用 vision_analyze,加上兄弟设计 skill)。上游给 auteur 配了一个 'impeccable' 评审 skill(此处未 vendored);auteur 的 verify 门禁和外部评审度量的是不同的东西,可以并存。
快速参考
不可协商项与阶段表。它们适用于每一档、每一阶段、始终如此——即使还没加载任何参考文件。匹配即拒绝:如果你正要产出下列之一,停下来重构该元素。
禁止项(重写,别微调)
| # | 禁止 | 替代 |
|---|---|---|
| 1 | 在卡片、标注条、警示上用 border-left/border-right >1px 作为彩色点缀 | 完整边框、背景着色、前置图标,或什么都不加 |
| 2 | 渐变文字(background-clip: text + 渐变) | 单一纯色;靠字重或字号强调 |
| 3 | 默认使用玻璃拟态(装饰性 backdrop-filter 卡片) | 罕用且有目的,或用纯色面 |
| 4 | 首屏指标模板(大数字、小标签、统计行、渐变点缀) | 用正文给证据,一个已定的视觉焦点 |
| 5 | 一模一样的卡片网格(同尺寸图标+标题+文字,重复排列) | 改变尺寸、结构,或干脆不要卡片 |
| 6 | 每个版块上方都加眉标(小号、全大写、加宽字距的标签) | 作为品牌系统最多一个刻意的眉标;让版块开场有变化 |
| 7 | 顺序无意义时用编号版块脚手架(01 / 02 / 03) | 仅在真正有先后时才编号 |
| 8 | 把 Inter 或 Space Grotesk 作为首选字体 | 从对比轴对子里挑(见 taste.md);这两个是 2024–2026 年的 AI 默认 |
| 9 | 紫→蓝渐变(两端色相都在 250–290) | 已定的品牌色相,或不用渐变 |
| 10 | 把米色/暖米白正文背景当作"温暖"条件反射(OKLCH L 0.84–0.97,C <0.06,色相 40–100) | 饱和的品牌色面、色度约 0 的真米白,或更深的着色中间调;温暖感来自点缀色 + 字体 + 图像 |
| 11 | 每个版块都用同样的淡入/上移动画进场 | 每次揭示都贴合所揭示的内容;变换缓动、距离、方向 |
| 12 | transition: all | 列明要动画的属性 |
| 13 | window.addEventListener('scroll', ...) | IntersectionObserver、GSAP ScrollTrigger,或 CSS animation-timeline |
| 14 | scale(0) 进场 | 从 scale(0.95) + 透明度开始 |
| 15 | 几乎相同或空格子的 bento 网格;白底白卡 bento | bento 仅当每格有真正的视觉变化,否则换布局 |
| 16 | 文案套路:"Revolutionize"、"Seamless"、"Effortless"、"Unleash"、"Elevate"、破折号堆砌的句子、"BRAND. MOTION. SPATIAL." 这类装饰条 | 用平实语言讲具体主张 |
| 17 | 每页超过一个跑马灯 | 一个,或没有 |
| 18 | 把 Instrument Serif / Playfair Display 当作条件反射式"优雅衬线" | 衬线要为品牌而选,而非从 AI 短名单里挑 |
某条禁止只能通过书面的 auteur-allow(见 Verification)并附真实理由才能破例——一个刻意、有论证的选择是风格;一个默认值是套路。
关键数字(记住;完整上下文见参考文件)
- 正文对比度 ≥ 4.5:1(大字 ≥ 3:1)。占位符同样。淡灰字配着色白是头号 AI 可读性失败。
- 正文行宽 65–75 字符。展示标题上限:正文中的标题 clamp max ≤ 6rem——字标或刻意以字体为主的首屏可豁免,且必须在 commit-sheet 里写明。展示字距 ≥ −0.04em。
- 时长:按钮 100–160ms · 工具提示 125–200ms · 下拉 150–250ms · 模态/抽屉 200–500ms · 任何 UI 超过 300ms 都要书面理由。
- 入场/出场缓动 = ease-out。UI 上禁止
ease-in。 - 只动画
transform和opacity。交错 30–80ms。 - 动效预算:每页 ≤ 3 个滚动触发的模式家族;一个主要 wow 高峰,支撑场景强度更低。
- 滚动 scrub 平滑度 0.3–0.8。首屏视频 ≤ 2MB。LCP < 2.5s。CLS < 0.1。
- 全屏通道(辉光、噪点、景深、任何全屏 shader)是按每像素计价,而非按对象——撑爆帧预算的是它们,不是几何体。一个性能数字只有在生产构建、DPR 2下测得才算数:DPR 1 会把每个此类通道的成本砍到 1/4,而 dev server 大致让帧率翻倍。
prefers-reduced-motion= 一套替代艺术方向(更柔和,而非完全不动),绝不是事后补的。- 内容必须在禁用 JS 时可读:揭示动画增强一个本就可见的默认状态,绝不把可见性挡在动画后面。
阶段一览
| 阶段 | build 档 | direct 档 | system 档 | 加载参考 |
|---|---|---|---|---|
| 0 | recon → commit-sheet → 首屏 mockup 门禁 | recon → 剧本(STORYBOARD.md)→ commit-sheet → 首屏 mockup 门禁 | recon → SYSTEM-SHEET.md(路由 + 组件清单 + 状态)→ commit-sheet → mockup 门禁 | recon.md,然后 build.md / direct.md / system.md |
| 1 | — | 素材生产(生成 → 编辑 → 优化) | —(通过 source.mjs 采集图标/字体) | assets.md |
| 2 | 构建页面 | 组装影片(先平滑滚动,再首屏,自上而下场景) | token → 外壳 → 按流量顺序的各屏 → 每个状态 | build.md / scroll-cinema.md / system.md + taste.md + motion.md |
| 3 | 验证 | 验证 + CINEMA-QA.md | 验证 + 跨每条路由的 systemscan | verify.md |
| 4 | 锁定风格:填写 design/DESIGN.md | 同 | 同,但 DESIGN.md 是组件契约 | templates/DESIGN.md |
首屏 mockup 门禁(一个一次性的静态废稿屏,截图并在构建其他一切之前获批)是改变艺术方向最便宜的时刻——细节见各档参考。design/DESIGN.md 是风格契约,让之后的每次编辑都不跑偏(edit 路由最先读它)。
绝不要因为中间结果"看起来做完了"就跳过门禁。门禁之所以存在,正是因为一个仅仅看起来做完的页面,正是其他所有 AI 交付的东西。
流程
Commit-sheet(在任何代码之前,两档都要)
套路(slop)就是默认值替你做决定时发生的事。Commit-sheet 强迫你在第一行代码之前把七个真正的决策落到纸上。把 templates/COMMIT-SHEET.md 复制进项目(例如 design/COMMIT-SHEET.md),并用非默认值填满全部七个字段:
- 高峰(Peak) —— 那一个主要 wow 时刻(direct)或标志性元素(build)。一句话。你说不出来,就还没准备好构建。
- 颜色 —— 主色写成 OKLCH + 投入层级(克制 / 已定 / 全调色板 / 浸染)+ 一句话:为什么这不是薰衣草紫、不是米色、也不是该品类的条件反射 + 背景明度写成数字(目标平均 L),因为"深色显高级"正是本 skill 跑偏之处,而数字之后可以核查,情绪却不能。
- 字体 —— 展示 + 正文在对比轴上的配对(衬线+无衬线、几何+人文、等宽+衬线……)+ 一句话:为什么不用 Inter。
- 网格破局 —— 那个打破对称网格默认值的具体之物:一次重叠、一次不对称分割、一条斜向动线、一次满版打断。具体命名。
- 动效预算 —— 几个滚动模式家族(≤3),分别是什么。
- 反射检查 —— 写下:(a) 通用 AI 对该品类会怎么做(一阶反射),(b) 一个避开 (a) 的通用 AI 又会怎么做(二阶反射——例如金融科技 → "终端深色模式"如今也饱和了),(c) 你选择偏离两者的具体方向。若跑过 recon,(a) 不是猜的:
design/refs/REFERENCES.md里反复出现五次的东西就是反射,注明日期并附凭据。 - 本家套路破除 —— 明确说出这次你刻意不做
taste.md§2.5 里的至少两项,以及各用什么替代。字段 6a/6b 是品类的反射;这些是本 skill 的反射,它们在互不相关的项目间反复出现,身处任何一个项目内部都看不见:近黑背景、等宽服务标签、logo/状态/操作页眉、滚动指示页脚、琥珀色/酸性色点缀、把字标当首屏、用辉光代替打光。在九个展示性构建中测量,八个是深色,其中三个落在同一明度的 0.002 以内。真正属于此处的套路可以保留——像auteur-allow一样说明理由。
门禁:每个字段都填了具体、非默认的答案。空着或泛泛而谈("现代、干净的观感")意味着停下来做决定。这个产物在验证时还会再查一次。
参考文件
references/recon.md—— 阶段 0 侦察,两个可执行分支:scripts/refscout.mjs剖析线上获奖站点(真实技术栈、固定场景、滚动预算、字体、手绘调色板、截图——是机制,不是皮相),scripts/moodboard.mjs从 Bing / Pinterest / are.na 生成编号联系表,让艺术方向由线上素材而非记忆决定。还包括:查询技巧、偷窃规则、recon 如何喂给 commit-sheet,以及"参考图不是素材"这条线。在阶段 0 开头加载。references/taste.md—— 完整的反套路系统:带替代方案的扩展禁令、二阶品类反射表、颜色策略层级、字体配对、文案规则。做任何视觉决策时加载。references/motion.md—— 动效学派:何时动画、缓动/时长/弹簧数字、性能规则、动效预算、声音策略。写任何动画之前加载。references/build.md—— 标准档位流程。路由到 build 时加载。references/system.md—— 多屏档位:路由图、作为门禁的组件清单、状态矩阵(空/加载/错误不是边缘情况)、密度规则、无高峰规则,以及scripts/systemscan.mjs——它爬遍每条路由,读取浏览器实际绘制的内容,按声明的变体预算判某个控件类型失败——把状态(禁用、当前、位于某data-state行内)单独计数,从而实现状态矩阵时绝不会显得像漂移——按 Tab 抓没有可见焦点态的控件,并为每个渲染出的变体渲染一块瓦片,让漂移既可计数也可见。路由到 system 时加载。references/direct.md—— 电影档位:剧本契约、场景表、戏剧结构、组装顺序。路由到 direct 时加载。references/assets.md—— 媒体团队与路由(在 Hermes 中:image_generate负责所有图片生成和编辑,terminal负责 ffmpeg/node;视频走用户拥有的任意图生视频后端)、§0.5 采集 vs 生成(scripts/source.mjs:从 Poly Haven 取 CC0 glTF 网格、HDRI 和 PBR 材质,图标、字体、CC 图片、库存视频——带许可证台账,因为生成造不出几何体或 IBL,而库存视频绝不能是高峰)、一致性技巧(把 A 帧编辑成 B 帧)、经首帧→末帧链的本地视频、生成元素/样机、环境配乐、降级阶梯,以及素材缓存。在 direct 阶段 1 加载。references/scroll-cinema.md—— 可工作的代码配方:滚动 scrub 视频、画布序列、GSAP+Lenis 地基、CSS 滚动驱动动画、文字揭示、两关键帧 WebGL 位移过渡、视图过渡、环境音频,以及电影感过渡库(擦除、帘幕、宽银幕、快门、深度视差)。组装时加载。references/scroll-flight.md—— 视频 scrub 档:一段照片级"穿越世界"首屏,由滚动驱动,使用即插即用的templates/scroll-flight-engine.js。滚动 scrub 视频的规范配方(为 scrub 编码-g 8、编码帧海报、SSIM 接缝门禁、链架构 A/B、iOS/移动端解码加固、交叉淡化 vs 无缝接缝)。当首屏应是照片级实拍/AI 视频而非实时 WebGL 时加载。references/ambient-backgrounds.md—— 用于次要版块和较简单构建的安静纹理(不是首屏):精选的 6 种编辑/模拟效果(纸张颗粒、账本/蓝图线、地形等高线、墨潮、稀疏浮尘、一个热浪 shader)+ 一个零动效的静态网格默认。支配规则(弱于最安静的前景元素;每页一个环境背景)、CSS/SVG 优先栈,以及feTurbulence静态性能规则。当某版块需要不平庸但绝不能和文案抢戏时加载。references/verify.md—— 验收流水线:slopscan → 截图旅程 → 动效/性能/音频质检(生产构建 DPR 2 下的 FPS、长任务、音频门禁、reduced-motion、针对 Tier-1 场景)→ 数值评分表 → 参考对比(你的帧与定下方向的参考并排,用scripts/chromadiff.mjs度量模型自身永远看不见的颜色漂移)→ QA 签字。阶段 3 加载。
弱模型提示
如果你是执行本 skill 的较小模型:逐字照做表格和数字,填满每个模板字段,跑每道门禁命令,不要在参考配方之外即兴发挥——配方经过验证,你的即兴没有。当参考文件与你的直觉冲突时,以参考文件为准。用相对于项目根的路径写文件;绝不要凭记忆重打绝对路径(本 skill 名 "auteur" 离 "author" 只差一个字母,拼错的绝对路径会把你的输出撒遍文件系统)。
常见坑
- 网络侦察:
refscout.mjs、moodboard.mjs和source.mjs会读线上页面(awwwards、Bing/Pinterest/are.na 图片搜索、Poly Haven、Iconify、Google Fonts、Openverse、Coverr)。抓取内容仅为参考数据和许可证元数据——绝不执行。跳过阶段 0–1 即可完全离线。 - 不同的 harness:这些脚本和文档是为另一个 agent harness 写的(上游通过若干本地图片 CLI 驱动素材生成)。在 Hermes 中,每条图片生成指令都映射到
image_generate工具;当node scripts/<x>.mjs --help的输出和真实 node 报错与文档行文有出入时,相信前者。 - 未验证的命令:脚本通过了
node --check语法校验,但完整运行(需要npm install playwright+ 下载 chromium)在移植时未执行。在你亲自跑过之前,把shoot.mjs、motionqa.mjs、systemscan.mjs、refscout.mjs、chromadiff.mjs、moodboard.mjs、source.mjs的端到端行为,以及所有ffmpeg/视频编码配方,都当作未经验证的上游主张。 - slopscan 已验证形态:
node scripts/slopscan.mjs <dir>无需 npm 依赖即可运行;它逐条打印规则发现,失败时以非零码退出(干净时退出 0)。 - 字体元数据缓存:
source.mjs font …会把 Google Fonts 约 2.6MB 的元数据 JSON 缓存为auteur-gf-metadata.json,放在系统临时目录(os.tmpdir())而非项目里;在那里删掉它即可强制刷新。
验证
代码能编译并不代表页面做完了。它在以下情况才算做完:
node scripts/slopscan.mjs <src-dir>退出码 0(失败要修,不要压——/* auteur-allow: RULE_ID -- reason */是为刻意选择存在的,且要求真实理由);node scripts/shoot.mjs <url>已在 390 / 768 / 1440 视口产出截图旅程,且你逐帧看过——文字溢出、空白场景、坏掉的揭示、布局塌陷是靠眼睛发现的,不是靠文本搜索;references/verify.md中的数值评分表通过(对比度、LCP、CLS、reduced-motion 旅程、场景多样性);- direct 档:
CINEMA-QA.md(来自模板)每一行都填了 PASS。
任何门禁失败——修好重跑。诚实地报告结果:"slopscan 干净,已复查 21 张截图,LCP 1.9s" 胜过"看起来很棒"。