$ biome check . .agents/skills/shadcn/assets/showcase/color-pair.tsx:81:17 lint/style/noNegationElse FIXABLE ━━━━━━━━━━ ! Invert blocks when performing a negation test. 79 │ }, []) 80 │ > 81 │ const level = !info │ ^^^^^ > 82 │ ? "" ... > 88 │ ? "AA Large" > 89 │ : "Fail" │ ^^^^^^^^ 90 │ 91 │ return ( i Safe fix: Invert the condition and the blocks. 79 79 │ }, []) 80 80 │ 81 │ - ··const·level·=·!info 82 │ - ····?·"" 83 │ - ····:·info.ratio·>=·7 81 │ + ··const·level·=·info 82 │ + ····?·info.ratio·>=·7 84 83 │ ? "AAA" 85 84 │ : info.ratio >= 4.5 ······· │ 87 86 │ : info.ratio >= 3 88 87 │ ? "AA Large" 89 │ - ··········:·"Fail" 88 │ + ··········:·"Fail" 89 │ + ····:·"" 90 90 │ 91 91 │ return ( .agents/skills/shadcn/assets/showcase/color-pair.tsx:98:7 assist/source/useSortedAttributes FIXABLE ━━━━━━━━━━ × The attributes are not sorted. 96 │ )} 97 │ > > 98 │
99 │ ref={ref} ... > 104 │ className="flex h-24 items-end justify-between p-4" > 105 │ > │ ^ 106 │ Aa 107 │ {info && ( i Safe fix: Sort the JSX props. 97 97 │ > 98 98 │
106 106 │ Aa .agents/skills/shadcn/assets/showcase/color-pair.tsx format ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × Formatter would have printed the following content: 1 │ - import·*·as·React·from·"react" 1 │ + import·*·as·React·from·"react"; 2 2 │ 3 │ - import·{·cn·}·from·"@/lib/utils" 3 │ + import·{·cn·}·from·"@/lib/utils"; 4 4 │ 5 5 │ // Resolves any CSS color (hex, rgb, oklch, color-mix) to sRGB by painting one pixel. 6 6 │ // Translucent colors are composited over the backdrop, as the browser would. 7 7 │ function toRgb(color: string, backdrop = "#fff") { 8 │ - ··const·canvas·=·document.createElement("canvas") 9 │ - ··canvas.width·=·canvas.height·=·1 10 │ - ··const·context·=·canvas.getContext("2d",·{·willReadFrequently:·true·}) 8 │ + ··const·canvas·=·document.createElement("canvas"); 9 │ + ··canvas.width·=·canvas.height·=·1; 10 │ + ··const·context·=·canvas.getContext("2d",·{·willReadFrequently:·true·}); 11 11 │ if (!context) { 12 │ - ····return·null 12 │ + ····return·null; 13 13 │ } 14 │ - ··context.fillStyle·=·backdrop 15 │ - ··context.fillRect(0,·0,·1,·1) 16 │ - ··context.fillStyle·=·color 17 │ - ··context.fillRect(0,·0,·1,·1) 18 │ - ··const·[r,·g,·b]·=·context.getImageData(0,·0,·1,·1).data 19 │ - ··return·[r,·g,·b] 14 │ + ··context.fillStyle·=·backdrop; 15 │ + ··context.fillRect(0,·0,·1,·1); 16 │ + ··context.fillStyle·=·color; 17 │ + ··context.fillRect(0,·0,·1,·1); 18 │ + ··const·[r,·g,·b]·=·context.getImageData(0,·0,·1,·1).data; 19 │ + ··return·[r,·g,·b]; 20 20 │ } 21 21 │ 22 22 │ function toHex(rgb: number[]) { 23 │ - ··return·`#${rgb.map((value)·=>·value.toString(16).padStart(2,·"0")).join("")}` 23 │ + ··return·`#${rgb.map((value)·=>·value.toString(16).padStart(2,·"0")).join("")}`; 24 24 │ } 25 25 │ 26 26 │ function luminance([r, g, b]: number[]) { 27 27 │ const [R, G, B] = [r, g, b].map((value) => { 28 │ - ····const·channel·=·value·/·255 29 │ - ····return·channel·<=·0.03928 30 │ - ······?·channel·/·12.92 31 │ - ······:·((channel·+·0.055)·/·1.055)·**·2.4 32 │ - ··}) 33 │ - ··return·0.2126·*·R·+·0.7152·*·G·+·0.0722·*·B 28 │ + ····const·channel·=·value·/·255; 29 │ + ····return·channel·<=·0.03928·?·channel·/·12.92·:·((channel·+·0.055)·/·1.055)·**·2.4; 30 │ + ··}); 31 │ + ··return·0.2126·*·R·+·0.7152·*·G·+·0.0722·*·B; 34 32 │ } 35 33 │ 36 34 │ function contrast(a: number[], b: number[]) { 37 │ - ··const·[light,·dark]·=·[luminance(a),·luminance(b)].sort((x,·y)·=>·y·-·x) 38 │ - ··return·(light·+·0.05)·/·(dark·+·0.05) 35 │ + ··const·[light,·dark]·=·[luminance(a),·luminance(b)].sort((x,·y)·=>·y·-·x); 36 │ + ··return·(light·+·0.05)·/·(dark·+·0.05); 39 37 │ } 40 38 │ ······· │ 45 43 │ className, 46 44 │ }: { 47 │ - ··name:·string 48 │ - ··background:·string 49 │ - ··foreground:·string 50 │ - ··className?:·string 45 │ + ··name:·string; 46 │ + ··background:·string; 47 │ + ··foreground:·string; 48 │ + ··className?:·string; 51 49 │ }) { 52 │ - ··const·ref·=·React.useRef(null) 53 │ - ··const·[info,·setInfo]·=·React.useState<{·ratio:·number;·bg:·string·}·|·null>( 54 │ - ····null 55 │ - ··) 50 │ + ··const·ref·=·React.useRef(null); 51 │ + ··const·[info,·setInfo]·=·React.useState<{·ratio:·number;·bg:·string·}·|·null>(null); 56 52 │ 57 53 │ React.useEffect(() => { 58 │ - ····const·element·=·ref.current 54 │ + ····const·element·=·ref.current; 59 55 │ if (!element) { 60 │ - ······return 56 │ + ······return; 61 57 │ } 62 58 │ // Re-measure when the theme class on changes. 63 59 │ const measure = () => { 64 │ - ······const·style·=·getComputedStyle(element) 65 │ - ······const·page·=·getComputedStyle(document.body).backgroundColor 66 │ - ······const·bg·=·toRgb(style.backgroundColor,·page) 60 │ + ······const·style·=·getComputedStyle(element); 61 │ + ······const·page·=·getComputedStyle(document.body).backgroundColor; 62 │ + ······const·bg·=·toRgb(style.backgroundColor,·page); 67 63 │ if (!bg) { 68 │ - ········return 64 │ + ········return; 69 65 │ } 70 │ - ······const·fg·=·toRgb(style.color,·toHex(bg)) 66 │ + ······const·fg·=·toRgb(style.color,·toHex(bg)); 71 67 │ if (fg) { 72 │ - ········setInfo({·ratio:·contrast(bg,·fg),·bg:·toHex(bg)·}) 68 │ + ········setInfo({·ratio:·contrast(bg,·fg),·bg:·toHex(bg)·}); 73 69 │ } 74 │ - ····} 75 │ - ····measure() 76 │ - ····const·observer·=·new·MutationObserver(measure) 77 │ - ····observer.observe(document.documentElement,·{·attributes:·true·}) 78 │ - ····return·()·=>·observer.disconnect() 79 │ - ··},·[]) 70 │ + ····}; 71 │ + ····measure(); 72 │ + ····const·observer·=·new·MutationObserver(measure); 73 │ + ····observer.observe(document.documentElement,·{·attributes:·true·}); 74 │ + ····return·()·=>·observer.disconnect(); 75 │ + ··},·[]); 80 76 │ 81 77 │ const level = !info ······· │ 87 83 │ : info.ratio >= 3 88 84 │ ? "AA Large" 89 │ - ··········:·"Fail" 85 │ + ··········:·"Fail"; 90 86 │ 91 87 │ return ( 92 │ - ····
88 │ + ···· 98 89 │
118 │ - ········{info·&&·( 119 │ - ·········· 120 │ - ············{info.bg} 121 │ - ·········· 122 │ - ········)} 109 │ + ········{info·&&·{info.bg}} 123 110 │
124 111 │
125 │ - ··) 112 │ + ··); 126 113 │ } 127 114 │ .agents/skills/shadcn/assets/showcase/preview-states.css format ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × Formatter would have printed the following content: 11 11 │ } 12 12 │ } 13 │ - @custom-variant·focus-visible·(&:focus-visible,·&[data-preview~="focus"]); 14 │ - @custom-variant·active·(&:active,·&[data-preview~="active"]); 13 │ + @custom-variant·focus-visible·(&:focus-visible, 14 │ + &[data-preview~="focus"]); 15 │ + @custom-variant·active·(&:active, 16 │ + &[data-preview~="active"]); 15 17 │ .agents/skills/shadcn/assets/showcase/state-matrix.tsx:31:15 assist/source/useSortedAttributes FIXABLE ━━━━━━━━━━ × The attributes are not sorted. 29 │ 30 │ {states.map((state) => ( > 31 │ 32 │ key={state} > 33 │ scope="col" > 34 │ className="text-left font-mono text-xs font-normal text-muted-foreground" > 35 │ > │ ^ 36 │ {state} 37 │ i Safe fix: Sort the JSX props. 30 30 │ {states.map((state) => ( 31 31 │ 36 36 │ {state} .agents/skills/shadcn/assets/showcase/state-matrix.tsx:44:15 assist/source/useSortedAttributes FIXABLE ━━━━━━━━━━ × The attributes are not sorted. 42 │ {rows.map((row) => ( 43 │ > 44 │ 45 │ scope="row" > 46 │ className="pr-4 text-left font-mono text-xs font-normal text-muted-foreground" > 47 │ > │ ^ 48 │ {row} 49 │ i Safe fix: Sort the JSX props. 43 43 │ 44 44 │ 48 48 │ {row} .agents/skills/shadcn/assets/showcase/state-matrix.tsx:1:8 lint/style/useImportType FIXABLE ━━━━━━━━━━ × All these imports are only used as types. > 1 │ import * as React from "react" │ ^^^^^^^^^^^^^^^^^^^^^^^ 2 │ 3 │ import { cn } from "@/lib/utils" i Importing the types with import type ensures that they are removed by the compilers and avoids loading unnecessary modules. i Safe fix: Use import type. 1 │ import·type·*·as·React·from·"react" │ +++++ .agents/skills/shadcn/assets/showcase/state-matrix.tsx format ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × Formatter would have printed the following content: 1 │ - import·*·as·React·from·"react" 1 │ + import·*·as·React·from·"react"; 2 2 │ 3 │ - import·{·cn·}·from·"@/lib/utils" 3 │ + import·{·cn·}·from·"@/lib/utils"; 4 4 │ 5 │ - const·defaultStates·=·[ 6 │ - ··"default", 7 │ - ··"hover", 8 │ - ··"focus", 9 │ - ··"active", 10 │ - ··"disabled", 11 │ - ]·as·const 5 │ + const·defaultStates·=·["default",·"hover",·"focus",·"active",·"disabled"]·as·const; 12 6 │ 13 7 │ export function StateMatrix({ ····· │ 17 11 │ className, 18 12 │ }: { 19 │ - ··rows:·readonly·Row[] 20 │ - ··states?:·readonly·string[] 21 │ - ··render:·(row:·Row,·state:·string)·=>·React.ReactNode 22 │ - ··className?:·string 13 │ + ··rows:·readonly·Row[]; 14 │ + ··states?:·readonly·string[]; 15 │ + ··render:·(row:·Row,·state:·string)·=>·React.ReactNode; 16 │ + ··className?:·string; 23 17 │ }) { 24 18 │ return ( ····· │ 56 50 │ 57 51 │
58 │ - ··) 52 │ + ··); 59 53 │ } 60 54 │ ····· │ 62 56 │ export function previewState(state: string) { 63 57 │ if (state === "disabled") { 64 │ - ····return·{·disabled:·true·} 58 │ + ····return·{·disabled:·true·}; 65 59 │ } 66 60 │ 67 61 │ if (["hover", "focus", "active"].includes(state)) { 68 │ - ····return·{·"data-preview":·state·} 62 │ + ····return·{·"data-preview":·state·}; 69 63 │ } 70 64 │ 71 │ - ··return·{} 65 │ + ··return·{}; 72 66 │ } 73 67 │ .agents/skills/shadcn/scripts/showcase-coverage.mjs:4:1 assist/source/organizeImports FIXABLE ━━━━━━━━━━ × The imports and exports are not sorted. 2 │ // Lists installed UI components that no file in the showcase imports. 3 │ // Usage: node showcase-coverage.mjs > 4 │ import { readdirSync, readFileSync, statSync } from "node:fs" │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 5 │ import { basename, extname, join, resolve } from "node:path" 6 │ i Safe fix: Organize Imports (Biome) 1 1 │ #!/usr/bin/env node 2 │ + 2 3 │ // Lists installed UI components that no file in the showcase imports. 3 4 │ // Usage: node showcase-coverage.mjs 4 │ - import·{·readdirSync,·readFileSync,·statSync·}·from·"node:fs" 5 │ + import·{·readFileSync,·readdirSync,·statSync·}·from·"node:fs" 5 6 │ import { basename, extname, join, resolve } from "node:path" 6 7 │ .agents/skills/shadcn/scripts/showcase-coverage.mjs format ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × Formatter would have printed the following content: 2 2 │ // Lists installed UI components that no file in the showcase imports. 3 3 │ // Usage: node showcase-coverage.mjs 4 │ - import·{·readdirSync,·readFileSync,·statSync·}·from·"node:fs" 5 │ - import·{·basename,·extname,·join,·resolve·}·from·"node:path" 4 │ + import·{·readdirSync,·readFileSync,·statSync·}·from·"node:fs"; 5 │ + import·{·basename,·extname,·join,·resolve·}·from·"node:path"; 6 6 │ 7 │ - const·[uiArg,·...roots]·=·process.argv.slice(2) 7 │ + const·[uiArg,·...roots]·=·process.argv.slice(2); 8 8 │ 9 9 │ if (!uiArg || roots.length === 0) { 10 │ - ··console.error("Usage:·node·showcase-coverage.mjs··") 11 │ - ··process.exit(1) 10 │ + ··console.error("Usage:·node·showcase-coverage.mjs··"); 11 │ + ··process.exit(1); 12 12 │ } 13 13 │ 14 │ - const·uiDir·=·resolve(uiArg) 14 │ + const·uiDir·=·resolve(uiArg); 15 15 │ 16 16 │ const components = readdirSync(uiDir) 17 17 │ .filter((file) => [".tsx", ".ts"].includes(extname(file))) 18 │ - ··.map((file)·=>·basename(file,·extname(file))) 18 │ + ··.map((file)·=>·basename(file,·extname(file))); 19 19 │ 20 20 │ function walk(path) { 21 21 │ if (statSync(path).isFile()) { 22 │ - ····return·[path] 22 │ + ····return·[path]; 23 23 │ } 24 24 │ 25 25 │ return readdirSync(path).flatMap((entry) => { 26 │ - ····const·child·=·join(path,·entry) 26 │ + ····const·child·=·join(path,·entry); 27 27 │ // Skip the ui directory so components don't count as using each other. 28 28 │ if (entry === "node_modules" || child === uiDir) { 29 │ - ······return·[] 29 │ + ······return·[]; 30 30 │ } 31 │ - ····return·walk(child) 32 │ - ··}) 31 │ + ····return·walk(child); 32 │ + ··}); 33 33 │ } 34 34 │ ····· │ 38 38 │ .filter((file) => /\.(tsx?|jsx?)$/.test(file)) 39 39 │ .map((file) => readFileSync(file, "utf8")) 40 │ - ··.join("\n") 40 │ + ··.join("\n"); 41 41 │ 42 │ - const·missing·=·components.filter( 43 │ - ··(name)·=>·!new·RegExp(`/ui/${name}["']`).test(source) 44 │ - ) 42 │ + const·missing·=·components.filter((name)·=>·!new·RegExp(`/ui/${name}["']`).test(source)); 45 43 │ 46 │ - console.log( 47 │ - ··`${components.length·-·missing.length}/${components.length}·components·shown.` 48 │ - ) 44 │ + console.log(`${components.length·-·missing.length}/${components.length}·components·shown.`); 49 45 │ 50 46 │ if (missing.length > 0) { 51 │ - ··console.log(`Missing:·${missing.join(",·")}`) 52 │ - ··process.exit(1) 47 │ + ··console.log(`Missing:·${missing.join(",·")}`); 48 │ + ··process.exit(1); 53 49 │ } 54 50 │ .agents/skills/ui-ux-pro-max/data/data-provenance.json format ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × Formatter would have printed the following content: 17 17 │ "verifiedAt": "2026-08-12", 18 18 │ "sla": "needs-review", 19 │ - ······"appliesTo":·[ 20 │ - ········"design-system" 21 │ - ······], 19 │ + ······"appliesTo":·["design-system"], 22 20 │ "confidence": 0.88, 23 21 │ "sources": [ ········· │ 42 40 │ "verifiedAt": "2026-08-12", 43 41 │ "sla": "needs-review", 44 │ - ······"appliesTo":·[ 45 │ - ········"design-system" 46 │ - ······], 42 │ + ······"appliesTo":·["design-system"], 47 43 │ "confidence": 0.92, 48 44 │ "sources": [ ········· │ 67 63 │ "verifiedAt": "2026-08-12", 68 64 │ "sla": "needs-review", 69 │ - ······"appliesTo":·[ 70 │ - ········"design-system" 71 │ - ······], 65 │ + ······"appliesTo":·["design-system"], 72 66 │ "confidence": 0.93, 73 67 │ "sources": [ ········· │ 92 86 │ "verifiedAt": "2026-08-12", 93 87 │ "sla": "needs-review", 94 │ - ······"appliesTo":·[ 95 │ - ········"design-system" 96 │ - ······], 88 │ + ······"appliesTo":·["design-system"], 97 89 │ "confidence": 0.93, 98 90 │ "sources": [ ········· │ 117 109 │ "verifiedAt": "2026-08-12", 118 110 │ "sla": "needs-review", 119 │ - ······"appliesTo":·[ 120 │ - ········"design-system" 121 │ - ······], 111 │ + ······"appliesTo":·["design-system"], 122 112 │ "confidence": 0.94, 123 113 │ "sources": [ ········· │ 142 132 │ "verifiedAt": "2026-08-12", 143 133 │ "sla": "needs-review", 144 │ - ······"appliesTo":·[ 145 │ - ········"design-system" 146 │ - ······], 134 │ + ······"appliesTo":·["design-system"], 147 135 │ "confidence": 0.91, 148 136 │ "sources": [ ········· │ 167 155 │ "verifiedAt": "2026-08-12", 168 156 │ "sla": "needs-review", 169 │ - ······"appliesTo":·[ 170 │ - ········"design-system" 171 │ - ······], 157 │ + ······"appliesTo":·["design-system"], 172 158 │ "confidence": 0.93, 173 159 │ "sources": [ ········· │ 192 178 │ "verifiedAt": "2026-08-12", 193 179 │ "sla": "needs-review", 194 │ - ······"appliesTo":·[ 195 │ - ········"design-system" 196 │ - ······], 180 │ + ······"appliesTo":·["design-system"], 197 181 │ "confidence": 0.9, 198 182 │ "sources": [ ········· │ 217 201 │ "verifiedAt": "2026-08-12", 218 202 │ "sla": "needs-review", 219 │ - ······"appliesTo":·[ 220 │ - ········"design-system" 221 │ - ······], 203 │ + ······"appliesTo":·["design-system"], 222 204 │ "confidence": 0.89, 223 205 │ "sources": [ ········· │ 242 224 │ "verifiedAt": "2026-08-12", 243 225 │ "sla": "needs-review", 244 │ - ······"appliesTo":·[ 245 │ - ········"design-system" 246 │ - ······], 226 │ + ······"appliesTo":·["design-system"], 247 227 │ "confidence": 0.93, 248 228 │ "sources": [ ········· │ 267 247 │ "verifiedAt": "2026-08-12", 268 248 │ "sla": "needs-review", 269 │ - ······"appliesTo":·[ 270 │ - ········"design-system" 271 │ - ······], 249 │ + ······"appliesTo":·["design-system"], 272 250 │ "confidence": 0.9, 273 251 │ "sources": [ ········· │ 292 270 │ "verifiedAt": "2026-08-12", 293 271 │ "sla": "needs-review", 294 │ - ······"appliesTo":·[ 295 │ - ········"design-system" 296 │ - ······], 272 │ + ······"appliesTo":·["design-system"], 297 273 │ "confidence": 0.92, 298 274 │ "sources": [ ········· │ 317 293 │ "verifiedAt": "2026-08-12", 318 294 │ "sla": "needs-review", 319 │ - ······"appliesTo":·[ 320 │ - ········"design-system" 321 │ - ······], 295 │ + ······"appliesTo":·["design-system"], 322 296 │ "confidence": 0.88, 323 297 │ "sources": [ ········· │ 342 316 │ "verifiedAt": "2026-08-12", 343 317 │ "sla": "needs-review", 344 │ - ······"appliesTo":·[ 345 │ - ········"design-system" 346 │ - ······], 318 │ + ······"appliesTo":·["design-system"], 347 319 │ "confidence": 0.93, 348 320 │ "sources": [ ········· │ 367 339 │ "verifiedAt": "2026-08-12", 368 340 │ "sla": "needs-review", 369 │ - ······"appliesTo":·[ 370 │ - ········"design-system" 371 │ - ······], 341 │ + ······"appliesTo":·["design-system"], 372 342 │ "confidence": 0.91, 373 343 │ "sources": [ ········· │ 392 362 │ "verifiedAt": "2026-08-12", 393 363 │ "sla": "needs-review", 394 │ - ······"appliesTo":·[ 395 │ - ········"design-system" 396 │ - ······], 364 │ + ······"appliesTo":·["design-system"], 397 365 │ "confidence": 0.95, 398 366 │ "sources": [ ········· │ 417 385 │ "verifiedAt": "2026-08-12", 418 386 │ "sla": "needs-review", 419 │ - ······"appliesTo":·[ 420 │ - ········"design-system" 421 │ - ······], 387 │ + ······"appliesTo":·["design-system"], 422 388 │ "confidence": 0.92, 423 389 │ "sources": [ ········· │ 442 408 │ "verifiedAt": "2026-08-12", 443 409 │ "sla": "needs-review", 444 │ - ······"appliesTo":·[ 445 │ - ········"design-system" 446 │ - ······], 410 │ + ······"appliesTo":·["design-system"], 447 411 │ "confidence": 0.93, 448 412 │ "sources": [ ········· │ 467 431 │ "verifiedAt": "2026-08-12", 468 432 │ "sla": "needs-review", 469 │ - ······"appliesTo":·[ 470 │ - ········"design-system" 471 │ - ······], 433 │ + ······"appliesTo":·["design-system"], 278 more lines truncated .agents/skills/ui-ux-pro-max/scripts/tests/fixtures/catalogs/google-api.json format ━━━━━━━━━━━━━━━━ × Formatter would have printed the following content: 29 29 │ "category": "sans-serif", 30 30 │ "kind": "webfonts#webfont", 31 │ - ······"axes":·[ 32 │ - ········{"tag":·"wght",·"start":·100,·"end":·900} 33 │ - ······] 31 │ + ······"axes":·[{·"tag":·"wght",·"start":·100,·"end":·900·}] 34 32 │ } 35 33 │ ] .agents/skills/ui-ux-pro-max/scripts/tests/fixtures/catalogs/google-catalog.json format ━━━━━━━━━━━━ × Formatter would have printed the following content: 3 3 │ "familyMetadataList": [ 4 4 │ { 5 │ - ······"family":·"Zeta·Serif",·"displayName":·null,·"category":·"Serif",·"stroke":·"Serif", 6 │ - ······"classifications":·["Display"],·"size":·1000,·"subsets":·["menu",·"latin-ext",·"latin"], 5 │ + ······"family":·"Zeta·Serif", 6 │ + ······"displayName":·null, 7 │ + ······"category":·"Serif", 8 │ + ······"stroke":·"Serif", 9 │ + ······"classifications":·["Display"], 10 │ + ······"size":·1000, 11 │ + ······"subsets":·["menu",·"latin-ext",·"latin"], 7 12 │ "fonts": { 8 │ - ········"400":·{"thickness":·5,·"slant":·1,·"width":·7,·"lineHeight":·1.2}, 9 │ - ········"700":·{"thickness":·7,·"slant":·1,·"width":·7,·"lineHeight":·1.2}, 10 │ - ········"700i":·{"thickness":·7,·"slant":·4,·"width":·7,·"lineHeight":·1.2} 11 │ - ······},·"axes":·[],·"designers":·["Zeta·Studio"], 12 │ - ······"lastModified":·"2025-06-02",·"dateAdded":·"2018-04-09",·"popularity":·90, 13 │ - ······"trending":·11,·"defaultSort":·9,·"androidFragment":·null,·"isNoto":·false, 14 │ - ······"colorCapabilities":·[],·"primaryScript":·"",·"primaryLanguage":·"",·"isOpenSource":·true, 15 │ - ······"isBrandFont":·false,·"languages":·[] 13 │ + ········"400":·{·"thickness":·5,·"slant":·1,·"width":·7,·"lineHeight":·1.2·}, 14 │ + ········"700":·{·"thickness":·7,·"slant":·1,·"width":·7,·"lineHeight":·1.2·}, 15 │ + ········"700i":·{·"thickness":·7,·"slant":·4,·"width":·7,·"lineHeight":·1.2·} 16 │ + ······}, 17 │ + ······"axes":·[], 18 │ + ······"designers":·["Zeta·Studio"], 19 │ + ······"lastModified":·"2025-06-02", 20 │ + ······"dateAdded":·"2018-04-09", 21 │ + ······"popularity":·90, 22 │ + ······"trending":·11, 23 │ + ······"defaultSort":·9, 24 │ + ······"androidFragment":·null, 25 │ + ······"isNoto":·false, 26 │ + ······"colorCapabilities":·[], 27 │ + ······"primaryScript":·"", 28 │ + ······"primaryLanguage":·"", 29 │ + ······"isOpenSource":·true, 30 │ + ······"isBrandFont":·false, 31 │ + ······"languages":·[] 16 32 │ }, 17 33 │ { 18 │ - ······"family":·"Alpha·Sans",·"displayName":·null,·"category":·"Sans·Serif",·"stroke":·"Sans·Serif", 19 │ - ······"classifications":·["Geometric"],·"size":·2000,·"subsets":·["menu",·"vietnamese",·"latin"], 34 │ + ······"family":·"Alpha·Sans", 35 │ + ······"displayName":·null, 36 │ + ······"category":·"Sans·Serif", 37 │ + ······"stroke":·"Sans·Serif", 38 │ + ······"classifications":·["Geometric"], 39 │ + ······"size":·2000, 40 │ + ······"subsets":·["menu",·"vietnamese",·"latin"], 20 41 │ "fonts": { 21 │ - ········"400":·{"thickness":·5,·"slant":·1,·"width":·7,·"lineHeight":·1.2}, 22 │ - ········"400i":·{"thickness":·5,·"slant":·4,·"width":·7,·"lineHeight":·1.2}, 23 │ - ········"500":·{"thickness":·6,·"slant":·1,·"width":·7,·"lineHeight":·1.2} 42 │ + ········"400":·{·"thickness":·5,·"slant":·1,·"width":·7,·"lineHeight":·1.2·}, 43 │ + ········"400i":·{·"thickness":·5,·"slant":·4,·"width":·7,·"lineHeight":·1.2·}, 44 │ + ········"500":·{·"thickness":·6,·"slant":·1,·"width":·7,·"lineHeight":·1.2·} 24 45 │ }, 25 │ - ······"axes":·[{"tag":·"wght",·"min":·100.0,·"max":·900.0,·"defaultValue":·400.0}], 26 │ - ······"designers":·["Ada·Type",·"Binh·Fonts"],·"lastModified":·"2025-01-03", 27 │ - ······"dateAdded":·"2020-02-20",·"popularity":·42,·"trending":·7,·"defaultSort":·4, 28 │ - ······"androidFragment":·null,·"isNoto":·false,·"colorCapabilities":·[],·"primaryScript":·"", 29 │ - ······"primaryLanguage":·"",·"isOpenSource":·true,·"isBrandFont":·false,·"languages":·[] 46 │ + ······"axes":·[{·"tag":·"wght",·"min":·100.0,·"max":·900.0,·"defaultValue":·400.0·}], 47 │ + ······"designers":·["Ada·Type",·"Binh·Fonts"], 48 │ + ······"lastModified":·"2025-01-03", 49 │ + ······"dateAdded":·"2020-02-20", 50 │ + ······"popularity":·42, 51 │ + ······"trending":·7, 52 │ + ······"defaultSort":·4, 53 │ + ······"androidFragment":·null, 54 │ + ······"isNoto":·false, 55 │ + ······"colorCapabilities":·[], 56 │ + ······"primaryScript":·"", 57 │ + ······"primaryLanguage":·"", 58 │ + ······"isOpenSource":·true, 59 │ + ······"isBrandFont":·false, 60 │ + ······"languages":·[] 30 61 │ } 31 62 │ ], .agents/skills/ui-ux-pro-max/scripts/tests/fixtures/catalogs/phosphor-core.json format ━━━━━━━━━━━━━ × Formatter would have printed the following content: 15 │ ····"alias":·{·"name":·"back-arrow",·"pascal_name":·"BackArrow"·}, │ + + .agents/skills/ui-ux-pro-max/scripts/tests/fixtures/relevance-cases.json format ━━━━━━━━━━━━━━━━━━━━ × Formatter would have printed the following content: 9 9 │ "globalNegativeApplicability": { 10 10 │ "tag": "hard-negative", 11 │ - ····"domains":·["style",·"color",·"chart",·"landing",·"product",·"ux",·"typography",·"icons",·"gsap",·"react",·"web",·"google-fonts"], 12 │ - ····"stacks":·["react",·"nextjs",·"vue",·"svelte",·"astro",·"swiftui",·"react-native",·"flutter",·"nuxtjs",·"nuxt-ui",·"html-tailwind",·"shadcn",·"jetpack-compose",·"threejs",·"angular",·"laravel",·"javafx",·"wpf",·"winui",·"avalonia",·"uno",·"uwp"], 11 │ + ····"domains":·[ 12 │ + ······"style", 13 │ + ······"color", 14 │ + ······"chart", 15 │ + ······"landing", 16 │ + ······"product", 17 │ + ······"ux", 18 │ + ······"typography", 19 │ + ······"icons", 20 │ + ······"gsap", 21 │ + ······"react", 22 │ + ······"web", 23 │ + ······"google-fonts" 24 │ + ····], 25 │ + ····"stacks":·[ 26 │ + ······"react", 27 │ + ······"nextjs", 28 │ + ······"vue", 29 │ + ······"svelte", 30 │ + ······"astro", 31 │ + ······"swiftui", 32 │ + ······"react-native", 33 │ + ······"flutter", 34 │ + ······"nuxtjs", 35 │ + ······"nuxt-ui", 36 │ + ······"html-tailwind", 37 │ + ······"shadcn", 38 │ + ······"jetpack-compose", 39 │ + ······"threejs", 40 │ + ······"angular", 41 │ + ······"laravel", 42 │ + ······"javafx", 43 │ + ······"wpf", 44 │ + ······"winui", 45 │ + ······"avalonia", 46 │ + ······"uno", 47 │ + ······"uwp" 48 │ + ····], 13 49 │ "interpretation": "Run every hard-negative case against all registered domains and stacks. Any returned row is an implicit grade-0 false positive; aggregate reporting may cap this cross-product separately." 14 50 │ }, 15 51 │ "cases": [ 16 │ - ····{"id":"domain-style-glassmorphism","split":"calibration","mode":"domain","query":"frosted·glass·transparent·blurred·layered·UI","domain":"style","judgments":[{"identity":{"Style·Category":"Glassmorphism"},"grade":2}],"tags":["exact-intent","domain-positive"],"notes":"Canonical·visual·treatment,·expressed·through·its·descriptive·attributes."}, 17 │ - ····{"id":"domain-style-accessible-paraphrase","split":"held_out","mode":"domain","query":"inclusive·high·contrast·interface·with·keyboard·nav·and·screen·readers","domain":"style","judgments":[{"identity":{"Style·Category":"Accessible·&·Ethical"},"grade":2},{"identity":{"Style·Category":"Inclusive·Design"},"grade":1}],"tags":["paraphrase","domain-positive"],"notes":"A·style·request,·not·an·individual·UX·rule."}, 18 │ - ····{"id":"domain-color-spa","split":"calibration","mode":"domain","query":"beauty·spa·wellness·soft·pink·lavender·palette","domain":"color","judgments":[{"identity":{"Product·Type":"Beauty/Spa/Wellness·Service"},"grade":2}],"tags":["product-palette","domain-positive"],"notes":"Uses·the·public·Product·Type·as·the·stable·palette·identity."}, 19 │ - ····{"id":"domain-color-cyber-typo","split":"held_out","mode":"domain","query":"cybersecurty·threat·dashboard·matrix·green·dark·pallete","domain":"color","judgments":[{"identity":{"Product·Type":"Cybersecurity·Platform"},"grade":2}],"tags":["typo","domain-positive"],"notes":"Deliberately·misspells·cybersecurity·and·palette."}, 20 │ - ····{"id":"domain-chart-time-series","split":"calibration","mode":"domain","query":"trend·over·time·growth·timeline·line·chart","domain":"chart","judgments":[{"identity":{"Data·Type":"Trend·Over·Time"},"grade":2},{"identity":{"Data·Type":"Time-Series·Forecast"},"grade":1}],"tags":["exact-intent","domain-positive"],"notes":"Forecasting·is·acceptable·only·as·a·secondary·interpretation."}, 21 │ - ····{"id":"domain-chart-correlation-paraphrase","split":"held_out","mode":"domain","query":"show·whether·two·measures·move·together·using·dots·and·bubbles","domain":"chart","judgments":[{"identity":{"Data·Type":"Correlation·/·Distribution"},"grade":2}],"tags":["paraphrase","domain-positive"],"notes":"Avoids·the·canonical·words·scatter·and·correlation."}, 22 │ - ····{"id":"domain-landing-pricing","split":"calibration","mode":"domain","query":"pricing·plans·tiers·comparison·landing·CTA","domain":"landing","judgments":[{"identity":{"Pattern·Name":"Pricing·Page·+·CTA"},"grade":2},{"identity":{"Pattern·Name":"Pricing-Focused·Landing"},"grade":2},{"identity":{"Pattern·Name":"Comparison·Table·+·CTA"},"grade":1}],"tags":["multi-acceptable","domain-positive"],"notes":"Both·dedicated·pricing·patterns·are·equally·valid."}, 23 │ - ····{"id":"domain-landing-enterprise-typo","split":"held_out","mode":"domain","query":"enterprise·credibilty·trust·authority·conversion·page","domain":"landing","judgments":[{"identity":{"Pattern·Name":"Trust·&·Authority·+·Conversion"},"grade":2},{"identity":{"Pattern·Name":"Enterprise·Gateway"},"grade":1}],"tags":["typo","domain-positive"],"notes":"Misspells·credibility·while·preserving·the·enterprise·intent."}, 24 │ - ····{"id":"domain-product-spa","split":"calibration","mode":"domain","query":"salon·massage·skincare·booking·and·wellness·service","domain":"product","judgments":[{"identity":{"Product·Type":"Beauty/Spa/Wellness·Service"},"grade":2},{"identity":{"Product·Type":"Booking·&·Appointment·App"},"grade":1}],"tags":["multi-acceptable","domain-positive"],"notes":"The·industry·is·primary;·booking·is·a·supporting·capability."}, 25 │ - ····{"id":"domain-product-security-paraphrase","split":"held_out","mode":"domain","query":"platform·for·monitoring·digital·threats·and·protecting·systems","domain":"product","judgments":[{"identity":{"Product·Type":"Cybersecurity·Platform"},"grade":2}],"tags":["paraphrase","domain-positive"],"notes":"Avoids·the·exact·keyword·cyber."}, 26 │ - ····{"id":"domain-ux-keyboard-focus","split":"calibration","mode":"domain","query":"visible·focus·and·complete·keyboard·navigation·for·web·users","domain":"ux","judgments":[{"identity":{"Category":"Accessibility","Issue":"Keyboard·Navigation","Platform":"Web"},"grade":2},{"identity":{"Category":"Interaction","Issue":"Focus·States","Platform":"All"},"grade":2}],"tags":["multi-acceptable","domain-positive"],"notes":"Both·navigation·coverage·and·visible·focus·are·explicitly·requested."}, 27 │ - ····{"id":"domain-ux-motion-paraphrase","split":"held_out","mode":"domain","query":"stop·animations·making·people·sick·and·honor·their·motion·preference","domain":"ux","judgments":[{"identity":{"Category":"Animation","Issue":"Reduced·Motion","Platform":"All"},"grade":2},{"identity":{"Category":"Animation","Issue":"Excessive·Motion","Platform":"All"},"grade":1}],"tags":["paraphrase","accessibility","domain-positive"],"notes":"Preference·support·is·stronger·than·generic·excessive-motion·advice."}, 28 │ - ····{"id":"domain-typography-luxury","split":"calibration","mode":"domain","query":"elegant·luxury·serif·heading·with·clean·readable·body·font","domain":"typography","judgments":[{"identity":{"Font·Pairing·Name":"Classic·Elegant"},"grade":2},{"identity":{"Font·Pairing·Name":"Luxury·Serif"},"grade":2},{"identity":{"Font·Pairing·Name":"Luxury·Minimalist"},"grade":1}],"tags":["multi-acceptable","domain-positive"],"notes":"Several·curated·pairs·directly·satisfy·this·intentionally·broad·mood."}, 29 │ - ····{"id":"domain-typography-accessible-typo","split":"held_out","mode":"domain","query":"dyslexia·frendly·hyperlegible·inclusive·type·pairing","domain":"typography","judgments":[{"identity":{"Font·Pairing·Name":"Accessibility·First"},"grade":2},{"identity":{"Font·Pairing·Name":"Academic/Research"},"grade":1}],"tags":["typo","accessibility","domain-positive"],"notes":"Misspells·friendly;·the·all-Atkinson·pairing·is·the·direct·answer."}, 30 │ - ····{"id":"domain-icons-search","split":"calibration","mode":"domain","query":"find·lookup·search·icon·for·a·query·field","domain":"icons","judgments":[{"identity":{"Category":"Action","Icon·Name":"magnifying-glass","Library":"Phosphor"},"grade":2},{"identity":{"Category":"Action","Icon·Name":"funnel","Library":"Phosphor"},"grade":1}],"tags":["exact-intent","domain-positive"],"notes":"Filter·is·useful·but·not·equivalent·to·search."}, 31 │ - ····{"id":"domain-icons-warning-typo","split":"held_out","mode":"domain","query":"warnng·caution·danger·status·symbol","domain":"icons","judgments":[{"identity":{"Category":"Status","Icon·Name":"warning","Library":"Phosphor"},"grade":2},{"identity":{"Category":"Status","Icon·Name":"warning-circle","Library":"Phosphor"},"grade":1}],"tags":["typo","domain-positive"],"notes":"Misspells·warning·and·allows·the·circled·variant·as·secondary."}, 32 │ - ····{"id":"domain-gsap-scroll-reveal","split":"calibration","mode":"domain","query":"GSAP·reveal·elements·when·they·enter·the·viewport·on·scroll","domain":"gsap","judgments":[{"identity":{"Category":"Scroll·Reveal","Intensity·Tier":"Subtle","Trigger":"scroll·(viewport·enter)"},"grade":2},{"identity":{"Category":"Scroll·Reveal","Intensity·Tier":"Standard","Trigger":"scroll·(viewport·enter)"},"grade":2},{"identity":{"Category":"Scroll·Reveal","Intensity·Tier":"Complex","Trigger":"scroll·(continuous·scrub)"},"grade":1}],"tags":["multi-acceptable","domain-positive"],"notes":"Viewport-entry·variants·are·direct;·continuous·scrub·is·related·but·stronger."}, 33 │ - ····{"id":"domain-gsap-skeleton-typo","split":"held_out","mode":"domain","query":"skeletn·shimmer·loader·while·async·content·waits","domain":"gsap","judgments":[{"identity":{"Category":"Loading·/·Skeleton","Intensity·Tier":"Subtle","Trigger":"on·mount·/·async·wait"},"grade":2},{"identity":{"Category":"Loading·/·Skeleton","Intensity·Tier":"Standard","Trigger":"on·mount·/·async·wait"},"grade":1}],"tags":["typo","domain-positive"],"notes":"Misspells·skeleton;·subtle·shimmer·is·the·most·exact·row."}, 34 │ - ····{"id":"domain-react-parallel-promises","split":"calibration","mode":"domain","query":"React·Promise.all·parallel·concurrent·requests·instead·of·waterfall","domain":"react","judgments":[{"identity":{"Category":"Async·Waterfall","Issue":"Promise.all·Parallel","Platform":"React/Next.js"},"grade":2},{"identity":{"Category":"Async·Waterfall","Issue":"Dependency·Parallelization","Platform":"React/Next.js"},"grade":1}],"tags":["exact-intent","domain-positive"],"notes":"The·first·row·exactly·names·Promise.all."}, 35 │ - ····{"id":"domain-react-dynamic-import-paraphrase","split":"held_out","mode":"domain","query":"load·a·heavy·JavaScript·chunk·only·when·the·component·is·needed","domain":"react","judgments":[{"identity":{"Category":"Bundle·Size","Issue":"Dynamic·Imports","Platform":"React/Next.js"},"grade":2},{"identity":{"Category":"Bundle·Size","Issue":"Conditional·Loading","Platform":"React/Next.js"},"grade":1}],"tags":["paraphrase","domain-positive"],"notes":"Avoids·the·canonical·term·lazy·in·the·main·clause."}, 36 │ - ····{"id":"domain-web-icon-label","split":"calibration","mode":"domain","query":"accessible·name·for·an·icon-only·mobile·button","domain":"web","judgments":[{"identity":{"Category":"Accessibility","Issue":"Icon·Button·Labels","Platform":"iOS/Android/React·Native"},"grade":2}],"tags":["accessibility","domain-positive"],"notes":"App-interface·guidance·uses·the·public·web·domain·key."}, 37 │ - ····{"id":"domain-web-virtual-list-paraphrase","split":"held_out","mode":"domain","query":"keep·a·very·long·mobile·list·smooth·without·rendering·every·row","domain":"web","judgments":[{"identity":{"Category":"Performance","Issue":"Virtualize·Long·Lists","Platform":"iOS/Android/React·Native"},"grade":2}],"tags":["paraphrase","domain-positive"],"notes":"Describes·virtualization·without·naming·FlatList."}, 38 │ - ····{"id":"domain-google-fonts-inter","split":"calibration","mode":"domain","query":"Inter·variable·sans·serif·Google·font·family","domain":"google-fonts","judgments":[{"identity":{"Family":"Inter"},"grade":2},{"identity":{"Family":"Inter·Tight"},"grade":1}],"tags":["exact-entity","domain-positive"],"notes":"Exact·family·is·preferred·over·its·related·Tight·family."}, 39 │ - ····{"id":"domain-google-fonts-atkinson-paraphrase","split":"held_out","mode":"domain","query":"hyperlegible·accessible·sans·typeface·for·easier·reading","domain":"google-fonts","judgments":[{"identity":{"Family":"Atkinson·Hyperlegible"},"grade":2},{"identity":{"Family":"Atkinson·Hyperlegible·Next"},"grade":1}],"tags":["paraphrase","accessibility","domain-positive"],"notes":"The·established·family·is·locked;·its·newer·related·family·is·acceptable."}, 52 │ + ····{ 53 │ + ······"id":·"domain-style-glassmorphism", 54 │ + ······"split":·"calibration", 55 │ + ······"mode":·"domain", 56 │ + ······"query":·"frosted·glass·transparent·blurred·layered·UI", 57 │ + ······"domain":·"style", 58 │ + ······"judgments":·[{·"identity":·{·"Style·Category":·"Glassmorphism"·},·"grade":·2·}], 59 │ + ······"tags":·["exact-intent",·"domain-positive"], 60 │ + ······"notes":·"Canonical·visual·treatment,·expressed·through·its·descriptive·attributes." 61 │ + ····}, 62 │ + ····{ 63 │ + ······"id":·"domain-style-accessible-paraphrase", 64 │ + ······"split":·"held_out", 65 │ + ······"mode":·"domain", 66 │ + ······"query":·"inclusive·high·contrast·interface·with·keyboard·nav·and·screen·readers", 67 │ + ······"domain":·"style", 68 │ + ······"judgments":·[ 69 │ + ········{·"identity":·{·"Style·Category":·"Accessible·&·Ethical"·},·"grade":·2·}, 70 │ + ········{·"identity":·{·"Style·Category":·"Inclusive·Design"·},·"grade":·1·} 71 │ + ······], 72 │ + ······"tags":·["paraphrase",·"domain-positive"], 73 │ + ······"notes":·"A·style·request,·not·an·individual·UX·rule." 74 │ + ····}, 75 │ + ····{ 76 │ + ······"id":·"domain-color-spa", 77 │ + ······"split":·"calibration", 78 │ + ······"mode":·"domain", 79 │ + ······"query":·"beauty·spa·wellness·soft·pink·lavender·palette", 80 │ + ······"domain":·"color", 81 │ + ······"judgments":·[{·"identity":·{·"Product·Type":·"Beauty/Spa/Wellness·Service"·},·"grade":·2·}], 82 │ + ······"tags":·["product-palette",·"domain-positive"], 83 │ + ······"notes":·"Uses·the·public·Product·Type·as·the·stable·palette·identity." 84 │ + ····}, 85 │ + ····{ 86 │ + ······"id":·"domain-color-cyber-typo", 87 │ + ······"split":·"held_out", 88 │ + ······"mode":·"domain", 89 │ + ······"query":·"cybersecurty·threat·dashboard·matrix·green·dark·pallete", 90 │ + ······"domain":·"color", 91 │ + ······"judgments":·[{·"identity":·{·"Product·Type":·"Cybersecurity·Platform"·},·"grade":·2·}], 92 │ + ······"tags":·["typo",·"domain-positive"], 93 │ + ······"notes":·"Deliberately·misspells·cybersecurity·and·palette." 94 │ + ····}, 95 │ + ····{ 96 │ + ······"id":·"domain-chart-time-series", 97 │ + ······"split":·"calibration", 98 │ + ······"mode":·"domain", 99 │ + ······"query":·"trend·over·time·growth·timeline·line·chart", 100 │ + ······"domain":·"chart", 101 │ + ······"judgments":·[ 102 │ + ········{·"identity":·{·"Data·Type":·"Trend·Over·Time"·},·"grade":·2·}, 103 │ + ········{·"identity":·{·"Data·Type":·"Time-Series·Forecast"·},·"grade":·1·} 104 │ + ······], 105 │ + ······"tags":·["exact-intent",·"domain-positive"], 106 │ + ······"notes":·"Forecasting·is·acceptable·only·as·a·secondary·interpretation." 107 │ + ····}, 108 │ + ····{ 109 │ + ······"id":·"domain-chart-correlation-paraphrase", 110 │ + ······"split":·"held_out", 111 │ + ······"mode":·"domain", 112 │ + ······"query":·"show·whether·two·measures·move·together·using·dots·and·bubbles", 113 │ + ······"domain":·"chart", 114 │ + ······"judgments":·[{·"identity":·{·"Data·Type":·"Correlation·/·Distribution"·},·"grade":·2·}], 115 │ + ······"tags":·["paraphrase",·"domain-positive"], 116 │ + ······"notes":·"Avoids·the·canonical·words·scatter·and·correlation." 117 │ + ····}, 118 │ + ····{ 119 │ + ······"id":·"domain-landing-pricing", 120 │ + ······"split":·"calibration", 121 │ + ······"mode":·"domain", 122 │ + ······"query":·"pricing·plans·tiers·comparison·landing·CTA", 123 │ + ······"domain":·"landing", 124 │ + ······"judgments":·[ 125 │ + ········{·"identity":·{·"Pattern·Name":·"Pricing·Page·+·CTA"·},·"grade":·2·}, 126 │ + ········{·"identity":·{·"Pattern·Name":·"Pricing-Focused·Landing"·},·"grade":·2·}, 127 │ + ········{·"identity":·{·"Pattern·Name":·"Comparison·Table·+·CTA"·},·"grade":·1·} 128 │ + ······], 129 │ + ······"tags":·["multi-acceptable",·"domain-positive"], 130 │ + ······"notes":·"Both·dedicated·pricing·patterns·are·equally·valid." 131 │ + ····}, 132 │ + ····{ 1440 more lines truncated .agents/skills/ui-ux-pro-max/scripts/tests/fixtures/relevance-thresholds.json format ━━━━━━━━━━━━━━━ × Formatter would have printed the following content: 14 14 │ "tolerancePolicy": "A 1e-12 numeric tolerance permits floating-point representation only. Current known failures remain visible in relevance-baseline.json; the gate prevents regressions and does not claim final quality targets are met.", 15 15 │ "metrics": { 16 │ - ····"routingAccuracy":·{"floor":·0.875,·"tolerance":·1e-12}, 17 │ - ····"precisionAt1":·{"floor":·0.7631578947368421,·"tolerance":·1e-12}, 18 │ - ····"precisionAt3":·{"floor":·0.3815789473684211,·"tolerance":·1e-12}, 19 │ - ····"mrrAt3":·{"floor":·0.8355263157894737,·"tolerance":·1e-12}, 20 │ - ····"ndcgAt3":·{"floor":·0.8366350964266653,·"tolerance":·1e-12}, 21 │ - ····"negativeAbstention":·{"floor":·0.9117647058823529,·"tolerance":·1e-12}, 22 │ - ····"typoRecoveryAt3":·{"floor":·1.0,·"tolerance":·1e-12}, 23 │ - ····"designSystemCoherence":·{"floor":·0.71875,·"tolerance":·1e-12} 16 │ + ····"routingAccuracy":·{·"floor":·0.875,·"tolerance":·1e-12·}, 17 │ + ····"precisionAt1":·{·"floor":·0.7631578947368421,·"tolerance":·1e-12·}, 18 │ + ····"precisionAt3":·{·"floor":·0.3815789473684211,·"tolerance":·1e-12·}, 19 │ + ····"mrrAt3":·{·"floor":·0.8355263157894737,·"tolerance":·1e-12·}, 20 │ + ····"ndcgAt3":·{·"floor":·0.8366350964266653,·"tolerance":·1e-12·}, 21 │ + ····"negativeAbstention":·{·"floor":·0.9117647058823529,·"tolerance":·1e-12·}, 22 │ + ····"typoRecoveryAt3":·{·"floor":·1.0,·"tolerance":·1e-12·}, 23 │ + ····"designSystemCoherence":·{·"floor":·0.71875,·"tolerance":·1e-12·} 24 24 │ }, 25 25 │ "sampleMinimums": { ······· │ 46 46 │ "calibration": { 47 47 │ "metrics": { 48 │ - ········"routingAccuracy":·{"floor":·0.8,·"tolerance":·1e-12}, 49 │ - ········"precisionAt1":·{"floor":·0.8974358974358975,·"tolerance":·1e-12}, 50 │ - ········"precisionAt3":·{"floor":·0.40170940170940167,·"tolerance":·1e-12}, 51 │ - ········"mrrAt3":·{"floor":·0.9230769230769231,·"tolerance":·1e-12}, 52 │ - ········"ndcgAt3":·{"floor":·0.9103072109232644,·"tolerance":·1e-12}, 53 │ - ········"negativeAbstention":·{"floor":·0.9411764705882353,·"tolerance":·1e-12}, 54 │ - ········"typoRecoveryAt3":·{"floor":·0.0,·"tolerance":·1e-12}, 55 │ - ········"designSystemCoherence":·{"floor":·0.6875,·"tolerance":·1e-12} 48 │ + ········"routingAccuracy":·{·"floor":·0.8,·"tolerance":·1e-12·}, 49 │ + ········"precisionAt1":·{·"floor":·0.8974358974358975,·"tolerance":·1e-12·}, 50 │ + ········"precisionAt3":·{·"floor":·0.40170940170940167,·"tolerance":·1e-12·}, 51 │ + ········"mrrAt3":·{·"floor":·0.9230769230769231,·"tolerance":·1e-12·}, 52 │ + ········"ndcgAt3":·{·"floor":·0.9103072109232644,·"tolerance":·1e-12·}, 53 │ + ········"negativeAbstention":·{·"floor":·0.9411764705882353,·"tolerance":·1e-12·}, 54 │ + ········"typoRecoveryAt3":·{·"floor":·0.0,·"tolerance":·1e-12·}, 55 │ + ········"designSystemCoherence":·{·"floor":·0.6875,·"tolerance":·1e-12·} 56 56 │ }, 57 │ - ······"sampleMinimums":·{"cases":·46,·"retrieval":·39,·"routing":·5,·"negativeChecks":·102,·"typo":·0,·"designSystem":·4} 57 │ + ······"sampleMinimums":·{ 58 │ + ········"cases":·46, 59 │ + ········"retrieval":·39, 60 │ + ········"routing":·5, 61 │ + ········"negativeChecks":·102, 62 │ + ········"typo":·0, 63 │ + ········"designSystem":·4 64 │ + ······} 58 65 │ }, 59 66 │ "held_out": { 60 67 │ "metrics": { 61 │ - ········"routingAccuracy":·{"floor":·1.0,·"tolerance":·1e-12}, 62 │ - ········"precisionAt1":·{"floor":·0.6216216216216216,·"tolerance":·1e-12}, 63 │ - ········"precisionAt3":·{"floor":·0.36036036036036034,·"tolerance":·1e-12}, 64 │ - ········"mrrAt3":·{"floor":·0.7432432432432432,·"tolerance":·1e-12}, 65 │ - ········"ndcgAt3":·{"floor":·0.7589807054707906,·"tolerance":·1e-12}, 66 │ - ········"negativeAbstention":·{"floor":·0.8823529411764706,·"tolerance":·1e-12}, 67 │ - ········"typoRecoveryAt3":·{"floor":·1.0,·"tolerance":·1e-12}, 68 │ - ········"designSystemCoherence":·{"floor":·0.75,·"tolerance":·1e-12} 68 │ + ········"routingAccuracy":·{·"floor":·1.0,·"tolerance":·1e-12·}, 69 │ + ········"precisionAt1":·{·"floor":·0.6216216216216216,·"tolerance":·1e-12·}, 70 │ + ········"precisionAt3":·{·"floor":·0.36036036036036034,·"tolerance":·1e-12·}, 71 │ + ········"mrrAt3":·{·"floor":·0.7432432432432432,·"tolerance":·1e-12·}, 72 │ + ········"ndcgAt3":·{·"floor":·0.7589807054707906,·"tolerance":·1e-12·}, 73 │ + ········"negativeAbstention":·{·"floor":·0.8823529411764706,·"tolerance":·1e-12·}, 74 │ + ········"typoRecoveryAt3":·{·"floor":·1.0,·"tolerance":·1e-12·}, 75 │ + ········"designSystemCoherence":·{·"floor":·0.75,·"tolerance":·1e-12·} 69 76 │ }, 70 │ - ······"sampleMinimums":·{"cases":·44,·"retrieval":·37,·"routing":·3,·"negativeChecks":·102,·"typo":·5,·"designSystem":·4} 77 │ + ······"sampleMinimums":·{ 78 │ + ········"cases":·44, 79 │ + ········"retrieval":·37, 80 │ + ········"routing":·3, 81 │ + ········"negativeChecks":·102, 82 │ + ········"typo":·5, 83 │ + ········"designSystem":·4 84 │ + ······} 71 85 │ } 72 86 │ }, 73 87 │ "lockedCases": { 74 │ - ····"domain-style-glassmorphism":·{"withinTop":·1,·"minimumGrade":·2}, 75 │ - ····"domain-color-spa":·{"withinTop":·1,·"minimumGrade":·2}, 76 │ - ····"domain-chart-time-series":·{"withinTop":·1,·"minimumGrade":·2}, 77 │ - ····"domain-landing-pricing":·{"withinTop":·1,·"minimumGrade":·2}, 78 │ - ····"domain-product-spa":·{"withinTop":·1,·"minimumGrade":·2}, 79 │ - ····"domain-ux-keyboard-focus":·{"withinTop":·1,·"minimumGrade":·2}, 80 │ - ····"domain-typography-luxury":·{"withinTop":·1,·"minimumGrade":·2}, 81 │ - ····"domain-icons-search":·{"withinTop":·1,·"minimumGrade":·2}, 82 │ - ····"domain-gsap-scroll-reveal":·{"withinTop":·1,·"minimumGrade":·2}, 83 │ - ····"domain-react-parallel-promises":·{"withinTop":·1,·"minimumGrade":·2}, 84 │ - ····"domain-web-icon-label":·{"withinTop":·1,·"minimumGrade":·2}, 85 │ - ····"domain-google-fonts-inter":·{"withinTop":·1,·"minimumGrade":·2}, 86 │ - ····"stack-swiftui-navigation":·{"withinTop":·1,·"minimumGrade":·2}, 87 │ - ····"stack-threejs-orbitcontrols":·{"withinTop":·1,·"minimumGrade":·2}, 88 │ - ····"stack-uwp-migration":·{"withinTop":·1,·"minimumGrade":·2}, 89 │ - ····"stack-winui-dispatcherqueue":·{"withinTop":·1,·"minimumGrade":·2} 88 │ + ····"domain-style-glassmorphism":·{·"withinTop":·1,·"minimumGrade":·2·}, 89 │ + ····"domain-color-spa":·{·"withinTop":·1,·"minimumGrade":·2·}, 90 │ + ····"domain-chart-time-series":·{·"withinTop":·1,·"minimumGrade":·2·}, 91 │ + ····"domain-landing-pricing":·{·"withinTop":·1,·"minimumGrade":·2·}, 92 │ + ····"domain-product-spa":·{·"withinTop":·1,·"minimumGrade":·2·}, 93 │ + ····"domain-ux-keyboard-focus":·{·"withinTop":·1,·"minimumGrade":·2·}, 94 │ + ····"domain-typography-luxury":·{·"withinTop":·1,·"minimumGrade":·2·}, 95 │ + ····"domain-icons-search":·{·"withinTop":·1,·"minimumGrade":·2·}, 96 │ + ····"domain-gsap-scroll-reveal":·{·"withinTop":·1,·"minimumGrade":·2·}, 97 │ + ····"domain-react-parallel-promises":·{·"withinTop":·1,·"minimumGrade":·2·}, 98 │ + ····"domain-web-icon-label":·{·"withinTop":·1,·"minimumGrade":·2·}, 99 │ + ····"domain-google-fonts-inter":·{·"withinTop":·1,·"minimumGrade":·2·}, 100 │ + ····"stack-swiftui-navigation":·{·"withinTop":·1,·"minimumGrade":·2·}, 101 │ + ····"stack-threejs-orbitcontrols":·{·"withinTop":·1,·"minimumGrade":·2·}, 102 │ + ····"stack-uwp-migration":·{·"withinTop":·1,·"minimumGrade":·2·}, 103 │ + ····"stack-winui-dispatcherqueue":·{·"withinTop":·1,·"minimumGrade":·2·} 90 104 │ }, 91 105 │ "proposedFinalTargets": { .artifacts/resources-global-operating-systems-closure/closure-results.json format ━━━━━━━━━━━━━━━━━━ × Formatter would have printed the following content: 8 8 │ "id": "DB-SO-01", 9 9 │ "result": "pass", 10 │ - ······"http":·[ 11 │ - ········201 12 │ - ······] 10 │ + ······"http":·[201] 13 11 │ }, 14 12 │ { 15 13 │ "id": "DB-SO-02", 16 14 │ "result": "pass", 17 │ - ······"http":·[ 18 │ - ········201 19 │ - ······] 15 │ + ······"http":·[201] 20 16 │ }, 21 17 │ { 22 18 │ "id": "DB-SO-03", 23 19 │ "result": "pass", 24 │ - ······"http":·[ 25 │ - ········409 26 │ - ······] 20 │ + ······"http":·[409] 27 21 │ }, 28 22 │ { 29 23 │ "id": "DB-SO-04", 30 24 │ "result": "pass", 31 │ - ······"http":·[ 32 │ - ········201 33 │ - ······] 25 │ + ······"http":·[201] 34 26 │ }, 35 27 │ { 36 28 │ "id": "DB-SO-05", 37 29 │ "result": "pass", 38 │ - ······"http":·[ 39 │ - ········201 40 │ - ······] 30 │ + ······"http":·[201] 41 31 │ }, 42 32 │ { 43 33 │ "id": "DB-SO-06", 44 34 │ "result": "pass", 45 │ - ······"http":·[ 46 │ - ········201 47 │ - ······] 35 │ + ······"http":·[201] 48 36 │ }, 49 37 │ { 50 38 │ "id": "DB-SO-07", 51 39 │ "result": "pass", 52 │ - ······"http":·[ 53 │ - ········201, 54 │ - ········200 55 │ - ······] 40 │ + ······"http":·[201,·200] 56 41 │ }, 57 42 │ { 58 43 │ "id": "DB-SO-08", 59 44 │ "result": "pass", 60 │ - ······"http":·[ 61 │ - ········200 62 │ - ······] 45 │ + ······"http":·[200] 63 46 │ }, 64 47 │ { 65 48 │ "id": "DB-SO-09", 66 49 │ "result": "pass", 67 │ - ······"http":·[ 68 │ - ········404 69 │ - ······] 50 │ + ······"http":·[404] 70 51 │ }, 71 52 │ { 72 53 │ "id": "DB-SO-10", 73 54 │ "result": "pass", 74 │ - ······"http":·[ 75 │ - ········404 76 │ - ······] 55 │ + ······"http":·[404] 77 56 │ }, 78 57 │ { 79 58 │ "id": "DB-SO-11", 80 59 │ "result": "pass", 81 │ - ······"http":·[ 82 │ - ········200 83 │ - ······] 60 │ + ······"http":·[200] 84 61 │ }, 85 62 │ { 86 63 │ "id": "DB-SO-12", 87 64 │ "result": "pass", 88 │ - ······"http":·[ 89 │ - ········409 90 │ - ······] 65 │ + ······"http":·[409] 91 66 │ }, 92 67 │ { 93 68 │ "id": "DB-SO-13", 94 69 │ "result": "pass", 95 │ - ······"http":·[ 96 │ - ········200, 97 │ - ········200 98 │ - ······] 70 │ + ······"http":·[200,·200] 99 71 │ }, 100 72 │ { 101 73 │ "id": "DB-SO-14", 102 74 │ "result": "pass", 103 │ - ······"http":·[ 104 │ - ········200, 105 │ - ········200 106 │ - ······] 75 │ + ······"http":·[200,·200] 107 76 │ }, 108 77 │ { 109 78 │ "id": "DB-SO-15", 110 79 │ "result": "pass", 111 │ - ······"http":·[ 112 │ - ········409 113 │ - ······] 80 │ + ······"http":·[409] 114 81 │ }, 115 82 │ { 116 83 │ "id": "DB-SO-16", 117 84 │ "result": "pass", 118 │ - ······"http":·[ 119 │ - ········200, 120 │ - ········200 121 │ - ······] 85 │ + ······"http":·[200,·200] 122 86 │ }, 123 87 │ { 124 88 │ "id": "DB-SO-17", 125 89 │ "result": "pass", 126 │ - ······"http":·[ 127 │ - ········200 128 │ - ······] 90 │ + ······"http":·[200] 129 91 │ }, 130 92 │ { 131 93 │ "id": "DB-SO-18", 132 94 │ "result": "pass", 133 │ - ······"http":·[ 134 │ - ········200, 135 │ - ········200 136 │ - ······] 95 │ + ······"http":·[200,·200] 137 96 │ }, 138 97 │ { 139 98 │ "id": "DB-SO-19", 87 more lines truncated .artifacts/resources-global-operating-systems-closure/legacy-evolution.json format ━━━━━━━━━━━━━━━━━ × Formatter would have printed the following content: 99 99 │ "customizationPreserved": true, 100 100 │ "availabilityPreserved": true 101 │ - } 101 │ + } 102 │ + .artifacts/resources-global-operating-systems-unblock/mariadb/closure-results.json format ━━━━━━━━━━ × Formatter would have printed the following content: 8 8 │ "id": "DB-SO-01", 9 9 │ "result": "pass", 10 │ - ······"http":·[ 11 │ - ········201 12 │ - ······] 10 │ + ······"http":·[201] 13 11 │ }, 14 12 │ { 15 13 │ "id": "DB-SO-02", 16 14 │ "result": "pass", 17 │ - ······"http":·[ 18 │ - ········201 19 │ - ······] 15 │ + ······"http":·[201] 20 16 │ }, 21 17 │ { 22 18 │ "id": "DB-SO-03", 23 19 │ "result": "pass", 24 │ - ······"http":·[ 25 │ - ········409 26 │ - ······] 20 │ + ······"http":·[409] 27 21 │ }, 28 22 │ { 29 23 │ "id": "DB-SO-04", 30 24 │ "result": "pass", 31 │ - ······"http":·[ 32 │ - ········201 33 │ - ······] 25 │ + ······"http":·[201] 34 26 │ }, 35 27 │ { 36 28 │ "id": "DB-SO-05", 37 29 │ "result": "pass", 38 │ - ······"http":·[ 39 │ - ········201 40 │ - ······] 30 │ + ······"http":·[201] 41 31 │ }, 42 32 │ { 43 33 │ "id": "DB-SO-06", 44 34 │ "result": "pass", 45 │ - ······"http":·[ 46 │ - ········201 47 │ - ······] 35 │ + ······"http":·[201] 48 36 │ }, 49 37 │ { 50 38 │ "id": "DB-SO-07", 51 39 │ "result": "pass", 52 │ - ······"http":·[ 53 │ - ········201, 54 │ - ········200 55 │ - ······] 40 │ + ······"http":·[201,·200] 56 41 │ }, 57 42 │ { 58 43 │ "id": "DB-SO-08", 59 44 │ "result": "pass", 60 │ - ······"http":·[ 61 │ - ········200 62 │ - ······] 45 │ + ······"http":·[200] 63 46 │ }, 64 47 │ { 65 48 │ "id": "DB-SO-09", 66 49 │ "result": "pass", 67 │ - ······"http":·[ 68 │ - ········404 69 │ - ······] 50 │ + ······"http":·[404] 70 51 │ }, 71 52 │ { 72 53 │ "id": "DB-SO-10", 73 54 │ "result": "pass", 74 │ - ······"http":·[ 75 │ - ········404 76 │ - ······] 55 │ + ······"http":·[404] 77 56 │ }, 78 57 │ { 79 58 │ "id": "DB-SO-11", 80 59 │ "result": "pass", 81 │ - ······"http":·[ 82 │ - ········200 83 │ - ······] 60 │ + ······"http":·[200] 84 61 │ }, 85 62 │ { 86 63 │ "id": "DB-SO-12", 87 64 │ "result": "pass", 88 │ - ······"http":·[ 89 │ - ········409 90 │ - ······] 65 │ + ······"http":·[409] 91 66 │ }, 92 67 │ { 93 68 │ "id": "DB-SO-13", 94 69 │ "result": "pass", 95 │ - ······"http":·[ 96 │ - ········200, 97 │ - ········200 98 │ - ······] 70 │ + ······"http":·[200,·200] 99 71 │ }, 100 72 │ { 101 73 │ "id": "DB-SO-14", 102 74 │ "result": "pass", 103 │ - ······"http":·[ 104 │ - ········200, 105 │ - ········200 106 │ - ······] 75 │ + ······"http":·[200,·200] 107 76 │ }, 108 77 │ { 109 78 │ "id": "DB-SO-15", 110 79 │ "result": "pass", 111 │ - ······"http":·[ 112 │ - ········409 113 │ - ······] 80 │ + ······"http":·[409] 114 81 │ }, 115 82 │ { 116 83 │ "id": "DB-SO-16", 117 84 │ "result": "pass", 118 │ - ······"http":·[ 119 │ - ········200, 120 │ - ········200 121 │ - ······] 85 │ + ······"http":·[200,·200] 122 86 │ }, 123 87 │ { 124 88 │ "id": "DB-SO-17", 125 89 │ "result": "pass", 126 │ - ······"http":·[ 127 │ - ········200 128 │ - ······] 90 │ + ······"http":·[200] 129 91 │ }, 130 92 │ { 131 93 │ "id": "DB-SO-18", 132 94 │ "result": "pass", 133 │ - ······"http":·[ 134 │ - ········200, 135 │ - ········200 136 │ - ······] 95 │ + ······"http":·[200,·200] 137 96 │ }, 138 97 │ { 139 98 │ "id": "DB-SO-19", 87 more lines truncated .artifacts/resources-global-operating-systems/global-operating-systems-results.json format ━━━━━━━━━━ × Formatter would have printed the following content: 10 10 │ "contract": 3, 11 11 │ "gatesEnabledOnlyInDisposableTest": true 12 │ - } 12 │ + } 13 │ + The number of diagnostics exceeds the limit allowed. Use --max-diagnostics to increase it. Diagnostics not shown: 159. Checked 2262 files in 1170ms. No fixes applied. Found 173 errors. Found 1 warning. Found 5 infos. check ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × Some errors were emitted while running checks. [ELIFECYCLE] Command failed with exit code 1.