Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Builds two parameterized UI modes—流光溢彩白 (iridescent white) and 五彩斑斓黑 (colorful black)—with OKLCH, WebGL/CSS fallback, vision gating, screenshot QA, and total/per-color intensity reports. Use when a UI request names either mode or needs measured color parameters.
.claude/skills/sickn33-liuguang-banlan-ui/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 118% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 82% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 41% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 65% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 83% | 0% |
Use one skill with two explicit modes, not a generic material library. Preserve a stable information workspace while treating the spectral field as a controlled environmental layer. Keep the implementation parameterized so every output can report total color intensity, per-color intensity, OKLCH values, peak opacity, spatial scale, phase, and measured coverage.
Read style-contract.md before choosing a mode or changing palette semantics. Read verification.md before claiming visual or screenshot validation.
opal and “五彩斑斓黑” to obsidian.visual-unverified; never infer visual quality from DOM or CSS alone.modelVision, screenshotCapture, deterministicPixelMetrics, and visualVerificationMode in the final report.Maintain a serializable manifest with these top-level fields:
js{ schemaVersion, mode, label, preset, seed, overallColorIntensity, base: { oklch }, colors: [{ id, label, oklch, srgbFallback, intensity, peakOpacity, lightnessBias, fieldScale, phase, measuredCoverage, effectiveShare }], field: { scale, octaves, warpStrength, motionSpeed, staticTime, ditherStrength, luminanceCap }, output: { colorSpace, p3Enhancement, reducedMotion } }
[0, 1]; make overallColorIntensity the global budget and colors[].intensity the per-color budget.pointer-events: none.prefers-reduced-motion is active.scripts/scaffold_template.py when a neutral implementation is needed.the starter. They reject expressions, function calls, duplicate keys, unsupported syntax, trailing statements, and oversized manifests without executing JavaScript. Keep runtime theme configs data-only as well.
scripts/validate_manifest.py on each theme config before rendering.scripts/measure_preview.py on the pure field screenshot and retain measured chromatic ratio, luminance statistics, per-color coverage, and effective share.partial, visual-unverified, or blocked when a required capability or native check is unavailable.Use the bundled starter under assets/starter/ as a neutral base. Copy only the selected mode when integrating into an existing project, and preserve the existing project’s content and build conventions.
scaffold_template.py: copy the neutral starter for opal, obsidian, or both.manifest_parser.py: statically parse the restricted data-only manifest grammar without executing JavaScript.validate_manifest.py: validate required manifest fields and ranges.measure_preview.py: measure a rendered pure-field PNG against the configured OKLCH palette.style-contract.md: mode-specific visual rules and recommended parameter ranges.verification.md: visual-capability gate, browser QA, pixel measurement, and report schema.starter/ contains a neutral static workbench, shared renderer, and both theme variants. Treat it as output material, not as documentation to paste into context wholesale.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 42,772 | 19,388 | -55% | 1 | 1 | 0% | 8,290 | 2,572 | -69% | 0 | 0 | — |
case-02 | fail→fail | 45,900 | 51,460 | +12% | 1 | 1 | 0% | 8,274 | 12,233 | +48% | 0 | 0 | — |
case-03 | fail→fail | 43,206 | 15,727 | -64% | 1 | 1 | 0% | 8,282 | 2,118 | -74% | 0 | 0 | — |
case-04 | pass→pass | 33,964 | 38,148 | +12% | 1 | 1 | 0% | 6,822 | 9,599 | +41% | 0 | 0 | — |
case-05 | pass→pass | 29,024 | 39,517 | +36% | 1 | 1 | 0% | 5,707 | 9,979 | +75% | 0 | 0 | — |
case-06 | pass→pass | 16,503 | 25,639 | +55% | 1 | 1 | 0% | 2,465 | 5,796 | +135% | 0 | 0 | — |
case-07 | fail→pass | 15,987 | 17,191 | +8% | 1 | 1 | 0% | 2,079 | 4,526 | +118% | 0 | 0 | — |
case-08 | fail→pass | 15,439 | 10,792 | -30% | 1 | 1 | 0% | 1,538 | 2,805 | +82% | 0 | 0 | — |
case-09 | fail→pass | 19,888 | 12,957 | -35% | 1 | 1 | 0% | 2,191 | 3,094 | +41% | 0 | 0 | — |
case-10 | fail→pass | 18,384 | 15,326 | -17% | 1 | 1 | 0% | 2,135 | 3,515 | +65% | 0 | 0 | — |
case-11 | fail→pass | 17,705 | 15,338 | -13% | 1 | 1 | 0% | 2,043 | 3,732 | +83% | 0 | 0 | — |
case-12 | pass→pass | 15,125 | 14,500 | -4% | 1 | 1 | 0% | 1,675 | 3,415 | +104% | 0 | 0 | — |
case-13 | pass→pass | 20,062 | 15,587 | -22% | 1 | 1 | 0% | 2,442 | 3,527 | +44% | 0 | 0 | — |
case-14 | fail→pass | 20,197 | 11,871 | -41% | 1 | 1 | 0% | 2,167 | 2,834 | +31% | 0 | 0 | — |
case-15 | fail→pass | 17,263 | 11,283 | -35% | 1 | 1 | 0% | 2,319 | 2,878 | +24% | 0 | 0 | — |
case-16 | fail→pass | 33,416 | 9,239 | -72% | 1 | 1 | 0% | 4,787 | 2,486 | -48% | 0 | 0 | — |
case-17 | fail→pass | 17,580 | 12,363 | -30% | 1 | 1 | 0% | 2,121 | 2,928 | +38% | 0 | 0 | — |
case-18 | pass→pass | 20,390 | 15,188 | -26% | 1 | 1 | 0% | 2,233 | 3,509 | +57% | 0 | 0 | — |
case-19 | fail→pass | 19,774 | 12,324 | -38% | 1 | 1 | 0% | 2,569 | 2,916 | +14% | 0 | 0 | — |
case-20 | fail→pass | 19,639 | 14,184 | -28% | 1 | 1 | 0% | 2,162 | 3,066 | +42% | 0 | 0 | — |
case-21 | pass→pass | 13,323 | 2,102 | -84% | 1 | 1 | 0% | 1,405 | 2,017 | +44% | 0 | 0 | — |
case-22 | fail→pass | 15,286 | 7,079 | -54% | 1 | 1 | 0% | 2,253 | 2,100 | -7% | 0 | 0 | — |
case-23 | pass→pass | 22,777 | 14,324 | -37% | 1 | 1 | 0% | 2,591 | 3,168 | +22% | 0 | 0 | — |
case-24 | fail→pass | 18,851 | 12,596 | -33% | 1 | 1 | 0% | 2,348 | 3,096 | +32% | 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. 24 cases were attempted, and 22 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +54 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.