web-design
Skill0 starsChanged 8 days agoMITView on GitHub
Design product-specific web UI, responsive layouts and motion; keep the direction in DESIGN.md. Use for new pages, redesigns, generic-looking UI, janky animation, awkward phone behavior or layouts stressed by long or empty data.
25 other projects use a version of this.
Adopted by
Most recently taken up by
- krkn-s/ai-workspacetheir own version, first seen Nov 1, 2026
- sunchaser15/claude-skillstheir own version, first seen Nov 1, 2026
- AdeyStudios/skillstheir own version, first seen Nov 1, 2026
- Domenico-Tenace-Open-Labs/web-dev-agenttheir own version, first seen Nov 1, 2026
- vietnamtrainingpilot-oss/ateliertheir own version, first seen Oct 17, 2026
- Yesterday-AI/skillstheir own version, first seen Oct 13, 2026
Used with
Projects with it also use seo.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
nilssonrSkillseo
Full SEO workflow for auditing pages and creating SEO-optimized content. Provides checklists with educational explanations aligned with Google Search Central documentation.
Also in 3 projects that use this
Other versions25 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 25
- KAOPU-XiaoPu/web-design★ 783same name
- xiaopu-ai/web-design★ 714same name
- pascalorg/skills★ 91same name
- wpank/ai★ 11same name
- kevinaimonster/skill-hub★ 4same name
- Domenico-Tenace-Open-Labs/web-dev-agent★ 3same name
- max0821/web-design-skill★ 3same name
- Yesterday-AI/skills★ 2same name
- AdeyStudios/skills★ 1same name
- ankitgoyalio/skills★ 1same name
15 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository11 other files it gives its agents.
- AGENTS.mdAGENTS.md
- astackSkill
- contextSkill
- deslopSkill
- discoverabilitySkill
- dogfoodSkill
- instrumentSkill
- launchSkill
- oneshotSkill
- shipSkill
- web-graphicsSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 7 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 22 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 16
Update DESIGN.md when a session makes a durable decision (a new token, a rejected direction and why).
- Distinctive: line 43
When the user gives references, study them properly: reference study pulls computed styles from the live sites so you borrow relationships …
- Distinctive: line 47
Use existing tokens, primitives and components.
- Very specific: line 70
Generic: run deslop's scan or check anti-patterns.
- Distinctive: line 93
No new UI library, icon set or font for a local change.
- Distinctive: line 94
Do not invent social proof, testimonials, logos, user counts or "trusted by".
- Distinctive: line 95
Do not fake liveness: no pulsing "Live" dots, tickers or activity unless backed by real data at that cadence ("Updates every 10s" when that …
- Distinctive: line 96
Never collapse distinct states (submitted, accepted, confirmed) into one success tick.
“Common” is measured: kept by at least 6 in 10 of the 22 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Web design
Generated UI fails in predictable ways: the same fonts, the same violet gradient, cards inside cards, a centred hero with three icon tiles, decoration standing in for a point of view. This skill replaces defaults with decisions, then checks the rendered result.
<skill-dir> below means this skill's own folder. Run its scripts from the project root so output lands in the project, not in the installed skill.
1. Load or create the design context
Look for DESIGN.md (also docs/DESIGN.md, BRAND.md). If it exists, read it before touching UI; its tokens and rules win over your taste. If it does not exist and the work is more than a small fix, create one from the template by reading the code: real tokens from the CSS/Tailwind config, real fonts, real components. Mark anything you inferred as inferred.
Update DESIGN.md when a session makes a durable decision (a new token, a rejected direction and why). This is how the next session avoids regressing to defaults.
2. Decide the direction
Name the mode first. It sets how much boldness the surface earns:
- Persuade (landing, pricing, launch pages): the design is the product; commit to a point of view.
- Operate (app UI, dashboards, settings, forms): precision and restraint; familiar patterns earn their place; brand lives in details.
- Read (docs, articles, changelogs): structure for comprehension, then make reading pleasant.
- Experience (portfolios, showcases, games): the work leads; the interface recedes.
Refining or redesigning? Refining keeps the current identity, copy and behaviour and improves within it. Redesigning keeps the product's facts and function but replaces the look entirely. Never split the difference by polishing a look you mean to discard.
Then plan in two passes before writing code.
Pass one, the plan:
- Job: who is here, what they need first, the next action.
- Palette: four to six named hex values, with where the accent is allowed.
- Type: faces and their roles, the scale, numerals.
- Layout: a sentence and a rough ASCII wireframe; alignment stated.
- The one bold thing: the single memorable element. Everything around it stays quiet.
Pass two, the generic test: would you have produced this plan for any similar brief? Check it against the current AI-default looks, which change over time. Cream background with a serif display and a terracotta accent, near-black with one acid accent, and broadsheet hairlines are today's clusters, as purple gradients were last year's. If a part of the plan matches a default the brief did not ask for, replace it and write down what you changed and why. The brief's own words always win, including when it asks for one of these looks.
Choose from the subject's world: its materials, places, artefacts and vocabulary. A dog walker's site and an analyst's dashboard should not be able to swap palettes.
When the user gives references, study them properly: reference study pulls computed styles from the live sites so you borrow relationships (scale, rhythm, density), not surface decoration.
3. Build in the product's system
- Use existing tokens, primitives and components. Add a token before adding a one-off value.
- Real content only: real names, long names, real numbers, empty data. Never lorem ipsum, never invented metrics to fill a layout. Before calling a data-driven screen done, run it on worst-case data: the longest plausible name, an unbreakable email, a count of 1 and of 1,284, an empty list, a missing avatar. A workspace also runs at the plan limit, with seeded records: workspace at scale.
- Design the states with the screen: loading, empty, error, success, disabled, overflow. An empty state that looks broken is a bug. A loading state is the loaded layout with content replaced by bones of the same boxes. A shorter stack of bars is a jump. Mark the stable regions and compare the two states: loading.
- Hide what has nothing to say. Zero rows, zero balances and empty charts become an honest empty state or disappear; no walls of zeros.
- Headers are labels. A subtitle that re-explains the header gets deleted.
- Mobile is its own layout: reorder by priority, use horizontal snap rails where desktop uses grids,
dvh/svhnot100vh, inputs at 16px or larger, tap targets 44px. Anything people use on a phone gets the mobile baseline: no tap flash, hover gated to real pointers, press feedback on touch, safe areas, no zoom on focus.
Hold the line on the craft floor while building, not as a final pass. For any animation or transition, read motion first: decide whether it should animate at all (never for keyboard or high-frequency actions), ease-out and under 300ms for UI, press feedback and origin-aware popovers, interruptible transitions, only transform and opacity, reduced motion handled, and watched as a filmstrip. The same reference diagnoses janky animation by cause.
4. Look at it
node <skill-dir>/scripts/shoot.mjs http://localhost:3000/page --full # 390 + 1440, light + dark
node <skill-dir>/scripts/shoot.mjs http://localhost:3000/page --widths 320,390,768,1440 --themes light
node <skill-dir>/scripts/shoot.mjs http://localhost:3000/page --click '[aria-controls=menu]' --widths 390
node <skill-dir>/scripts/shoot.mjs loading.html --shift loaded.html --widths 390 --themes lightOpen every screenshot and actually read it. Then read the lines under each capture. shoot.mjs reports inputs under 16px, a viewport that disables zoom, :hover rules outside @media (hover: hover), selectable controls on a narrow viewport, and a missing tap-highlight reset. None of those show up as overflow. A --shift run exits 1 when a marked region or the document scroll height moved, and exits 2 when nothing was marked. Exit 2 is not a pass. Then go through, in this order:
- First read: squint. Is the most important thing the most prominent? Can you tell what this is and what to do in three seconds?
- Broken: overflow, clipped text, overlapping layers, stranded words, invisible focus, dark mode contrast.
shoot.mjsflags several of these; check its output. - Hierarchy and rhythm: more space above a heading than below it; consistent gaps within groups, larger between groups; one primary action per view.
- Generic: run
deslop's scan or check anti-patterns. Would a stranger guess this product from a screenshot with the logo removed? - Craft: alignment to the pixel at 2x, optical balance of icons and text, tabular numbers in columns.
- Stress: the worst-case fixture at the real container width, 320px and 200% text. Touch details need a real phone; say so if you had none.
Then gate what eyes miss. When the project has a DESIGN.md or the brief supplies copy, run:
node <skill-dir>/scripts/render-gate.mjs http://localhost:3000/page --size 390x844 --size 1440x900 --design DESIGN.md --expect "Exact headline"It fails on a brand face that silently fell back, supplied copy that changed, text clipped by its box or cropped by the canvas, and painted colours or faces outside the tokens. Exit 2 means it could not check, which is not a pass.
Fix the worst problem, re-shoot, repeat. Compare against references at the same width and state. Two or three full loops is normal for new work.
For new pages, redesigns and anything public, finish with a verdict from the review rubric: three gates, six areas scored 1 to 5 with evidence, ship / fix / rework. When an independent agent is available, it scores from its own renders, not yours.
5. Finish
Report the screens and states you inspected (widths, themes), the gate results and rubric verdict, the decisions you made, and anything not inspected (authenticated states you could not reach, real data you did not have). Commit DESIGN.md changes with the UI.
Rules
- The user's brief and DESIGN.md beat this skill. If the brand is purple gradients, it is purple gradients.
- No new UI library, icon set or font for a local change.
- Do not invent social proof, testimonials, logos, user counts or "trusted by".
- Do not fake liveness: no pulsing "Live" dots, tickers or activity unless backed by real data at that cadence ("Updates every 10s" when that is true).
- Never collapse distinct states (submitted, accepted, confirmed) into one success tick.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

