DSH Hub
dsh-design cover

Viger1/dsh-design

dsh-design

BundleWorkflow0 GitHub stars· updated 2026-08-18

Design taste your agent can be held to — a design-system skill plus design_audit, which measures the rendered page (type scale, contrast, spacing grid, palette drift) instead of trusting it looked right.

Install

npx @deepseek-ai/dsh plugin --profile web add dsh-design

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-design DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-design.svg)](https://dshhub.dev/plugins/dsh-design)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from Viger1/dsh-design, cleaned of badges and images.

dsh-design

English | 中文

The only thing in this ecosystem that measures design rules on a rendered page.

Design tooling here splits into two buckets, and both leave the same hole. Generators produce a design and stop. Prompt-only skills hand the model a list of rules with nothing checking whether it followed them. Static analyzers parse CSS files, which cannot see what the browser actually painted: alpha composited over the real backdrop, utility classes after they resolve, a runtime theme switch, or the tap-target box as laid out.

dsh-design renders the page and measures it. "It looks good" becomes a number you can argue with — including the specific tells of a generated-looking page, which no other plugin checks at all: violet gradients caught by hue angle rather than a string match, emoji standing in for iconography, and type that fell back to the browser default because no family was ever chosen.

Same brief, two agents

One brief — a pricing page for a small API-monitoring product, Chinese UI, single self-contained index.html. Two runs on the same model and the same harness. The only difference is whether this plugin was doing anything.

Without the pluginWith the skill + audit loop
Measured at 1280pxWithoutWith
Violations40
Distinct type sizes11 — 12 13 14 15 16 17 19 20 30 44 466 — 14 16 20 24 32 40
Off-grid spacing values10 — 5 6 10 13 14 15 18 26 30 2260
Tap targets under 24px30
Generated-design tells1 — a violet gradient on the logo mark0
Non-neutral colors1 — rgb(37, 99, 235)1 — rgb(15, 92, 68)
Elements sampled7178

The baseline is not bad work. It is competent, and that is the point: it is the centered-blue-SaaS page you have already seen several hundred times, and it reached for a violet gradient unprompted — the exact tell the purple-gradient rule exists to catch. Underneath the competence it is improvising, with eleven type sizes and ten spacing values that belong to no scale.

The guided run committed first — one warm neutral ramp, a single deep green used only for the primary action and the recommended tier, six sizes, spacing on 4px — then audited. Round one found one violation (footer links at 22.4px tall); round two came back clean across 78 elements. Both pages spend exactly one accent, which is the palette rule reporting that neither page's problem was color.

Reproduce it yourself: the brief and both outputs are in examples/pricing-page/. One run of each, so treat this as an illustration of the difference rather than a benchmark. The baseline was also told to write the page and stop, so it never got a revision pass — an unguided run allowed to iterate is the arm this comparison does not have.

What it measures

Related plugins