Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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 sy
.claude/skills/light0305-light-frontend-design/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 160% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 108% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 236% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 265% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 179% | 0% |
你是 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 必须显式说明 |
bashpython 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; 不得拿静态三门或“代码能编译”冒充已做浏览器/像素级回看。
最后用交付合同防过度宣称:
bashpython 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。| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 34,406 | 35,708 | +4% | 1 | 1 | 0% | 6,235 | 11,549 | +85% | 0 | 0 | — |
case-02 | fail→fail | 36,961 | 15,670 | -58% | 1 | 1 | 0% | 6,221 | 6,830 | +10% | 0 | 0 | — |
case-03 | fail→pass | 19,781 | 15,541 | -21% | 1 | 1 | 0% | 2,947 | 7,663 | +160% | 0 | 0 | — |
case-04 | pass→pass | 17,966 | 8,597 | -52% | 1 | 1 | 0% | 2,663 | 6,639 | +149% | 0 | 0 | — |
case-05 | fail→pass | 23,646 | 15,462 | -35% | 1 | 1 | 0% | 3,699 | 7,693 | +108% | 0 | 0 | — |
case-06 | fail→pass | 14,925 | 10,906 | -27% | 1 | 1 | 0% | 2,122 | 7,134 | +236% | 0 | 0 | — |
case-07 | fail→fail | 13,809 | 11,655 | -16% | 1 | 1 | 0% | 1,955 | 6,981 | +257% | 0 | 0 | — |
case-08 | fail→fail | 12,198 | 7,772 | -36% | 1 | 1 | 0% | 1,719 | 6,524 | +280% | 0 | 0 | — |
case-09 | pass→pass | 19,705 | 27,412 | +39% | 1 | 1 | 0% | 2,693 | 10,003 | +271% | 0 | 0 | — |
case-10 | pass→pass | 19,343 | 14,266 | -26% | 1 | 1 | 0% | 2,652 | 7,139 | +169% | 0 | 0 | — |
case-11 | pass→pass | 16,113 | 22,632 | +40% | 1 | 1 | 0% | 2,485 | 8,850 | +256% | 0 | 0 | — |
case-12 | fail→fail | 14,538 | 8,672 | -40% | 1 | 1 | 0% | 2,007 | 6,596 | +229% | 0 | 0 | — |
case-13 | fail→pass | 17,329 | 15,158 | -13% | 1 | 1 | 0% | 2,071 | 7,569 | +265% | 0 | 0 | — |
case-14 | pass→pass | 21,398 | 22,160 | +4% | 1 | 1 | 0% | 2,842 | 8,368 | +194% | 0 | 0 | — |
case-15 | fail→pass | 23,539 | 24,922 | +6% | 1 | 1 | 0% | 3,271 | 9,110 | +179% | 0 | 0 | — |
case-16 | pass→pass | 16,042 | 9,878 | -38% | 1 | 1 | 0% | 2,010 | 6,711 | +234% | 0 | 0 | — |
case-17 | pass→pass | 17,358 | 20,282 | +17% | 1 | 1 | 0% | 2,715 | 8,532 | +214% | 0 | 0 | — |
case-18 | pass→pass | 17,361 | 14,552 | -16% | 1 | 1 | 0% | 2,202 | 7,281 | +231% | 0 | 0 | — |
case-19 | pass→pass | 17,852 | 17,674 | -1% | 1 | 1 | 0% | 2,372 | 7,806 | +229% | 0 | 0 | — |
case-20 | fail→pass | 22,970 | 6,499 | -72% | 1 | 1 | 0% | 4,083 | 6,197 | +52% | 0 | 0 | — |
case-21 | fail→fail | 31,608 | 24,893 | -21% | 1 | 1 | 0% | 5,221 | 9,394 | +80% | 0 | 0 | — |
case-22 | fail→fail | 20,652 | 32,439 | +57% | 1 | 1 | 0% | 3,595 | 10,888 | +203% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +27 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.