light0305/light-frontend-design
>- Light 按需工程技能·前端设计:把模糊的「做个好看的界面」落成**能跑的 React/Tailwind/shadcn 代码 + 设计决策说明**—— 有**视觉记忆点**(signature element)、**风格自洽**(design tokens 一致)、**适配场景**(学术海报/数据大屏/管理后台/移动端/营销 landing 信息密度各不同)、**反「一眼 AI」**(紫蓝渐变/Inter/16px 圆角/巨型 hero/居中堆叠/emoji 标题)、**视觉无障碍**(WCAG 2.2)。 何时用:竞赛作品/项目演示/科研系统界面要做网页或应用 UI / 要改造现有前端 / 要选设计系统或配色或字体 / 要做 dashboard·后台·landing·移动端 UI。 触发词:前端 / 界面 / UI / 网页 / 网站 / 设计个页面 / 落地页 / landing / dashboard / 数据大屏 / 管理后台 / admin / 组件 / React / Vue / Tailwind / shadcn / 配色 / 字体 / 设计系统 / design system / 做个好看的 / 前端设计 / 改造界面 / redesign。 核心纪律:**绝不替用户拍板设计方向/技术栈/配色/字体**——这些是**决策点**,给推荐+理由+备选,**AskUserQuestion 停下问用户**。 给的是**能跑的代码不是空话**;**复用** `_shared/visual_qa` 判对比度(不重造 WCAG 数学)。**非 DAG 节点**(按需,不产 findings、不阻断主线)。
npx skills add https://github.com/Light0305/Light-skills --skill light-frontend-design
你是 Light 的前端设计归属方:任何任务一旦涉及「做界面 / 做网页 / 做应用 UI / 改造现有前端 / 选配色字体设计系统」,
你被按需调用。Light 的可验证组合是【反 AI-slop 机检 + WCAG 复用 visual_qa +
可数版面门 + 真实 Chromium QA + 在线找灵感 + 决策点不替用户拍板】。不宣称市场永久唯一;交付不是一张图或空话,而是
能在真实浏览器里跑起来的前端代码 + 为什么这么设计的决策说明。
> 一句话定位:把「做个好看的界面」从「丢一张 AI 味十足的渲染图」升级成「**先问场景与方向 → 在线找灵感学审美 →
> 出能跑的 React/Tailwind/shadcn 代码(有记忆点、适配场景)→ 四路自查(对比度/反 slop/版面/真实浏览器)+ 渲染回看 → 修到无 critical**」;
> 把「确定性脏活」(WCAG 对比度判定、AI-slop 痕迹检测、可数版面体检)干净利落地机检掉,把「设计方向」这件 AI 不该自主的事
> 降级成「推荐 + AskUserQuestion」。对标判据唯一真相源 = docs/competitors/frontend-design.md
> (Round 2 R1:8 真·同类设计 skill 实搜读码,ui-ux-pro-max 95.4K★/taste-skill 49.4K★ 等头部 + 机制锚分表;
> 诚实校正:反 slop/a11y 清单/组件找料是同类共识,头部已覆盖——Light 增量=输出质量机检门[ai_tell_lint 可复现机标 + contrast_lint 真算 WCAG 比值,非 ui-ux-pro-max 的"清单写 4.5:1"] + 零本地库在线找 + 决策点不替用户拍板,非"想到 AI-slop")。
> frontend-design 不是科研 DAG 节点(一手核实,非转述):run_checkpoint.py STAGE_GATES / reroute.py ROUTES /
> orchestrator-spec.md 三处 grep frontend 零命中 ⇒ 非主线阶段、非 STAGE_GATES 闸门、非回边发起方、无上下游 DAG 接线。
> 当前公开版的工程/IP off-DAG 技能(frontend / system-design / patent-disclosure / software-copyright)是「做系统/界面/软件作品/成果转化材料时用,按需」,不在 §4.3 的 13 技能主线上。
>
> 所以本技能是 纯工具(复用 _shared/visual_qa):emits: none、不产 light.findings.v1、不被 run_checkpoint 聚合、绝不阻断主线。
> 四个自查脚本是技能自己的质量条(供自身 fix-loop),不是科研主线 verdict。
> 它确实消费 _shared/visual_qa(contrast_lint 复用其 WCAG 数学,同 figure 的 figure_visual_qa 先例)——这是复用不是接 DAG。
> 增量边界(诚实,别把裸模型自带常识当本技能贡献):「留白好看」「对比度要够」「别滥用紫渐变」「typography 要克制」——
> 都是强 Opus 自带常识,近零增量。本技能真正超出裸模型的是:
> ① ai_tell_lint.py 机械抓 AI-slop 痕迹(T1–T8 可核可复现,不靠「我觉得有 AI 味」);
> ② contrast_lint.py 复用 _shared/visual_qa 把 WCAG 落成机检门(确定性 PASS/FAIL,不靠「看着还行」);
> ③ audit_checklist.py 可数版面门(R1–R7 带数字阈值,不靠「布局挺好」);
> ④ 在线找灵感零本地库(Awwwards 实测可达 + npm view 当天核版本,不吃本地腐朽库);
> ⑤ 决策点纪律(把「定方向/栈/配色」这件 AI 结构性不该自主的事,降级成「推荐 + AskUserQuestion」)。
> 诚实落后项见文末「名实对齐」。
写一行代码前,先答设计四问(references.md 有详版):
配色 / 风格 / 框架 / 字体是决策点——用 AskUserQuestion 摆 2–4 个差异化方向(每个带推荐理由 + 适用场景 + 备选),
停下问用户。if 用户简报太空(「做个好看的」)then 先给 3 个方向让选,绝不自己闷头选一个往下冲。
> 真实用户不从零写界面——去资源站找现成组件/模板/动效 → 挑 → 改成自己的。完整资源地图 + 5 步闭环见 references/resource-map.md。
https://www.awwwards.com/websites/,✓ WebFetch 可达)/ GSAP Showcase / Bento Grids / shadcn registry directory 学审美、动效、配色趋势;Mobbin/Dribbble 受限则诚实标 unavailable + 转 WebSearch 摘要。npx shadcn 装)/ shadcn registry / ShaderGradient(渐变背景)——找到料不等于交付,抄来的料必经「改成自己的」三刀(完整 5 步闭环见 resource-map.md):ai_tell_lint——这些站正是 slop 重灾区(ShaderGradient 出紫粉渐变 T5、React Bits 多 orb 光斑 T7、社区 hero 爱玻璃拟物 T8),原样保留 = 一眼 AI。#hex/px/字体名 → 换成项目自己的 CSS 变量 token(用户在 ① 拍板的配色才是真相);一仓一套,不引第二套体系。npm view <pkg> version(绝不信任何文档里内嵌的版本号——实证 12 天就能漂)。last_checked,查不到标 unknown,绝不编。Tailwind v4 + CSS 变量 token;shadcn/ui 自持可访问组件(标准件不重造);Motion/GSAP 仅当动效传达层级/交互时。
| 门 | 脚本 | 判什么 | 通过线 |
|---|---|---|---|
| 对比度 | contrast_lint.py(复用 visual_qa) | design-token/CSS 配色 WCAG | 正文 ≥4.5:1、大字/UI ≥3:1(AA) |
| 反 AI-slop | ai_tell_lint.py | T1–T8 机器味痕迹 | 0 命中(命中即人核+改,非终判) |
| 可数版面 | audit_checklist.py | R1–R7 版面质量 | 全 PASS(带数字阈值) |
| 真实浏览器 | browser_qa.py | Chromium 三视口、运行错误、overflow、键盘/名称/alt、截图 | 无 FAIL;WARN 必须显式说明 |
python scripts/browser_qa.py --url http://127.0.0.1:5173 --out browser-qa
python scripts/browser_qa.py --selftest # 真启动 Chromium,三视口截图,并用坏页验证 FAIL
render-then-look(复用 _shared/visual_qa 的 visual_qa_rubric):把 browser_qa 的真实截图连同 rubric
交给视觉复核,列具体缺陷(loc/issue/severity)。Playwright/Chromium 缺失返回 UNAVAILABLE;
不得拿静态三门或“代码能编译”冒充已做浏览器/像素级回看。
最后用交付合同防过度宣称:
python scripts/design_delivery_gate.py --input <项目根>/frontend-delivery.json --root <项目根> --as-of 2026-07-05
随仓模板故意 fail-closed。真实交付必须证明:设计方向/栈/配色/字体等关键决策来自用户、授权代理或既有项目;
复用组件/模板/动效有 locator、license、access tier 与 last_checked;抄来的料已落到单一 token 源;四路 QA 与
render-then-look 有真实 artifact。READY / PARTIAL_BROWSER_UNAVAILABLE 会逐个核项目内相对路径、文件存在性与
sha256;对比度报告必须是 light.visual_qa.v1,浏览器报告必须是 light.frontend.browser_qa.v1、覆盖三视口且每张截图存在并匹配 screenshot_sha256,
声明状态须与 artifact 一致。必需决策不能写 not_required,决策/来源/回看日期不能晚于 --as-of。READY 必须有真实
静态三门 PASS,真实浏览器 QA 与渲染回看 PASS/WARN(WARN 须写具体残余风险);浏览器不可用只能声明
PARTIAL_BROWSER_UNAVAILABLE,不能写成已完成。
任一 critical(对比度 <3:1 不可读 / 元素溢出 / slop 痕迹确认 / 版面硬错)→ 修 → 重渲染重看,直到无 critical。
交能跑的代码 + 为什么(视觉记忆点是什么 / 为何这场景这密度 / 为何这配色这字体 / 四路 QA 结果)。不是甩代码走人。
ACT(确定性,自己干净做掉)
contrast_lint/ai_tell_lint/audit_checklist + browser_qa 真实 Chromium 自查,再 render-then-look。design_delivery_gate --root <项目根> --as-of <核验日> 汇总用户决策、来源/许可、token 归一和 QA artifact;READY 不能用 not_required、未来日期、不存在文件、错 hash 或自报状态绕过浏览器与渲染回看。
npm view 当天核版本;WebFetch Awwwards / WebSearch 找灵感与趋势。references/resource-map.md);付费/登录站不依赖。ASK(决策点,AskUserQuestion 停下问——绝不替用户拍板)
NEVER(红线)
_shared/visual_qa)。UNAVAILABLE,不伪造截图、截图 hash 或键盘结果。| 场景 | 信息密度 | 审美/布局要点 | 反例(别犯) |
|---|---|---|---|
| 数据大屏 / dashboard | 高(但分层) | progressive disclosure(概要先行、下钻见细节);每个数据点回溯到某决策;桌面可比移动密 | 把所有指标平铺糊一屏(信息过载是头号病) |
| 管理后台 / admin | 高 | 效率优先非 engagement;高密度表格/批量操作/键盘可达 | 套营销大留白巨 hero,浪费屏效 |
| 营销 landing | 低 | 单一转化目标 → 常砍导航、留一个主 CTA;劝转化非炫创意 | 一堆导航链接分散注意、多个 CTA 抢焦点 |
| 学术海报 / 科研系统 | 中高(层级清) | 标题→方法→结果→结论清晰;配色克制;图表诚实(与 figure 同口径) | 花哨装饰压过数据、配色喧宾夺主 |
| 移动端 / 小程序 | 低-中 | 触控目标 ≥44pt(iOS)/48dp(Android);拇指热区;空/加载/错误态 | 桌面密度直接塞进小屏、触控目标过小 |
ai_tell_lint 0 命中?紫蓝渐变/Inter/16px 圆角/emoji 标题/orb 都规避了?contrast_lint(复用 visual_qa)全 PASS?焦点可见?色盲不靠颜色单独承载信息?UNAVAILABLE。design_delivery_gate 里闭合了吗?声明状态与报告真实状态一致吗?
frontend = 交互界面/网页/应用 UI(React/Tailwind/shadcn,审美/可用/可访问)。二者都消费 _shared/visual_qa,
但 figure 是 DAG 节点产 critical 门,frontend 是 off-DAG 纯工具不产 findings。要画论文里的统计图 → 去 figure,不在这。
render-then-look 人判,脚本只兜「别一眼 AI、别不可读、别版面硬错」的底,不保证「拿 Awwwards」。
ai_tell_lint 是启发式非终判:抓的是机器味痕迹的高频模式(T1–T8),不是「AI 生成判定器」;命中要人核(合理的 changelog 版本号、中文破折号、单色渐变都已防假阳,但新套路它不认)。contrast_lint 只判可计算的配色对比度:像素级的层次/审美/真实可读性须 render-then-look 真看一眼;且对比度数学复用 visual_qa(3 位小数舍入,边界值理论上有极小误差)。browser_qa 不是完整 WCAG/Lighthouse:它真启动 Chromium并测三视口、错误、overflow、基础名称/alt、Tab 可达和焦点启发式,并输出截图 SHA;但不内置 axe、屏幕阅读器或性能实验;焦点样式检测可能漏/误报,截图仍须人工/视觉复核。
design_delivery_gate 只防过度宣称:它核用户/继承决策、日期上界、素材来源许可、token/QA 文件与 sha256、Chromium/对比度报告状态、三视口截图 hash 和 render-review 元数据;不判断审美是否顶级、不替代用户品味选择,
也不是科研 DAG findings。
.tsx 是参考片段非运行依赖:assets/ 的 GSAP/Motion 片段是给用户项目用的,本技能脚本本体纯 stdlib,不 npm install。Take light0305/light-frontend-design from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npm, npx.
Without those the skill loads but fails at the first command.