visual-direction
Skill1 starsChanged 3 months agoMITView on GitHub
Set the visual direction before any token exists — style thesis, three calibration dials, industry constraints, real research sources. Use when starting UI or brand work, when a design has no point of view, when choosing an aesthetic direction, or when someone says "make it look premium".
4 other projects use a version of this.
Adopted by
Most recently taken up by
- WilliamEbong/CourseForgetheir own version, first seen Nov 8, 2026
- Alfred-Lau/skillstheir own version, first seen Oct 20, 2026
- GoogleCloudPlatform/cloud-solutionstheir own version, first seen Oct 13, 2026
- cosmincraciun97/stonewright-wp-mcptheir own version, first seen Jul 30, 2026
Other versions4 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 4
- GoogleCloudPlatform/cloud-solutions★ 139same name
- cosmincraciun97/stonewright-wp-mcp★ 31same name
- Alfred-Lau/skills★ 1same name
- WilliamEbong/CourseForge★ 0same name
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 repository14 other files it gives its agents.
- accessibilitySkill
- colorSkill
- content-designSkill
- design-reviewSkill
- design-systemSkill
- implementation-reviewSkill
- interaction-designSkill
- layoutSkill
- measurementSkill
- motionSkill
- product-evidenceSkill
- product-framingSkill
- typographySkill
- validationSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 4 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Every visual decision derives from four inputs, gathered before touching the dials:
- Distinctive: line 46
All three dials at extremes: always wrong.
- Distinctive: line 113
When the user attaches a reference image, extract signals, never facts: dominant hue and temperature, surface lightness, font category, …
- Distinctive: line 119
Write the thesis inside those bounds.
“Common” is measured: kept by at least 6 in 10 of the 3 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
Visual Direction
Slop has no thesis. A generated UI is a bag of defaults because nothing forced its decisions to agree. Before any token, you make three calls: the dials, the industry bucket, and the thesis sentence. Every downstream decision must trace back to them.
An existing product already has a direction, stated or not. Read it off the current interface and name it. Write a new direction only when the work explicitly reopens it.
The inputs — nothing aesthetic is arbitrary
Every visual decision derives from four inputs, gathered before touching the dials:
- Brand: the identity that already exists: hue, voice, what's shipped. The thesis names an existing brand or creates a missing one; it never ignores one.
- Audience: who looks at this, in what state. An on-call engineer at 3am and a first-time gift shopper need different surfaces.
- Task: is the thing used, read, contemplated, or browsed, how often, and at what stakes. Frequency and stakes set density and motion harder than taste does.
- Category conventions: what the audience's other tools look like: the industry bucket below. Breaking a convention is a decision with a stated reason, never a default.
A decision you can't trace to one of these four is decoration. "It looks premium" is not an input.
The three dials
| Dial | Range | Low end | High end |
DESIGN_VARIANCE (V) | 1–10 | Symmetrical, grid-locked | Expressive, intentionally broken |
MOTION_INTENSITY (M) | 1–10 | Static, no animation | Cinematic, physics-driven |
VISUAL_DENSITY (D) | 1–10 | Gallery (whitespace dominant) | Cockpit (information dense) |
Defaults: V=5 / M=3 / D=5. Dial values constrain every downstream decision. A finance app at V=3/M=1/D=9 never gets pill buttons or decorative gradients. A creative agency at V=8/M=6/D=3 never gets a 12-column symmetric grid.
Variance levels. 1–3: strict grid, equal gutters, predictable. 4–7: intentional offset, overlapping elements, mixed aspect ratios, left-aligned headers over centered data. 8–10: asymmetric, masonry, massive empty zones; broken symmetry is the point. Above 3, any asymmetric layout collapses to single-column on small viewports. Horizontal scrolling is always a failure.
Motion levels. 1–3: static; hover and active states via CSS only. 4–7: purposeful transitions on state changes and loading, cubic-bezier(0.16, 1, 0.3, 1), transform and opacity only. 8–10: choreographed, spring physics, scroll-triggered reveals. The motion skill carries the full animation budget.
Density levels. 1–3: gallery, 3–5 elements per viewport, body 18px+, massive gaps. 4–6: standard app; most products land here. 7–9: cockpit, compact rows, 1px dividers, tabular numerals, no cards.
Combinations that fight themselves
Each dial is a material signal. When the signals contradict, the interface feels wrong without the user being able to say why. Clamp the outlier:
- D≥7 with M≥7: clamp M to 4. Density wins; in a cockpit every pixel is working, and animation steals pixels from their job.
- V≤2 with M≥8: clamp M to 5. A rigid grid says "engineered steel", spring physics says "rubber". Pick one material.
- V≥8 with D≥8: works only when the asymmetry encodes information priority (largest widget = most important metric). Decorative asymmetry at cockpit density: clamp V to 6.
- All three dials at extremes: always wrong. Move at least one toward center.
Industry bucket
The bucket sets the default dial range and the forbidden patterns. The stricter constraint always wins.
| Bucket | V | M | D | Non-negotiables |
| SaaS / DevTools | 4 | 2 | 8 | Dark-mode first, semantic color only, keyboard shortcuts |
| Finance | 2 | 1 | 9 | Red/green for data only, zero decorative gradients, nothing animated near money |
| Healthcare | 3 | 1 | 5 | WCAG AA mandatory, prominent error states, predictable layout under stress |
| Consumer | 6 | 5 | 5 | Emotion-led, photography, warmth, onboarding delight |
| Productivity | 3 | 1 | 9 | Expert-first density, power features visible, no distraction |
| Creative | 8 | 6 | 3 | Typography as art, whitespace as breath, intentional rule-breaking |
Regulated and safety-critical domains carry hard ceilings that override any preference: finance and banking M≤2 and V≤4, healthcare M≤3 and V≤3, legal and government M≤2 with D≥5, safety-critical operations M≤1 with D≥7. The ceiling is not the floor; you can always go calmer.
The style thesis — one sentence before any token
A thesis is an image, not adjectives. "Clean, modern, minimal" is not a thesis: you can't picture it, so it constrains nothing. "A flight cockpit at midnight" is: it fixes darkness, density, instrument-grade type, zero decoration.
The test: could a stranger pick your UI out of a lineup from the sentence alone?
Name the material and the light; the rest follows:
| Axis | Options (not exhaustive) |
| Material | paper, glass, steel, concrete, fabric, film |
| Light | daylight, midnight, studio, candlelit, overcast |
| Temperature | warm, cold, neutral-cold, neutral-warm |
| Role | instrument (used), publication (read), gallery (contemplated), shopfront (browsed) |
Worked derivations, to imitate, not copy:
- "A flight cockpit at midnight" (observability tool). V=3/M=1/D=8. Surfaces
oklch(14% 0.01 250), cold hue. Tabular numerals everywhere, mono for data, no display font. Radius 4px, no gradients, state changes instant. - "Field notes on cream paper" (journaling, learning). V=6/M=3/D=4. Warm surfaces
oklch(97% 0.01 85), ink-dark text. Editorial serif display over humanist sans body, oldstyle figures in prose. Radius 8–12px, diffusion shadows only: paper casts soft shadows, it doesn't glow. - "A concrete showroom in daylight" (luxury e-commerce). V=8/M=5/D=2. Near-white neutrals; the product carries all the color. One type family, extreme weight contrast. Massive whitespace, full-bleed imagery, sparse choreographed motion.
A token you can't justify from the thesis is a default in disguise.
Aesthetic directions — the named categories
The thesis is the sentence; the direction is its category. Naming it anchors downstream decisions.
| Direction | Core constraint | What it rules out |
| Editorial | Type hierarchy carries all visual weight | Gradient accents, card-heavy layouts, decorative illustration |
| Data-Dense | Information visible without hover; tables over cards; mono numerics | Cards on data surfaces, decorative color |
| SaaS Marketing | Dark-first; product screenshots as design elements; asymmetric grid | Symmetric layouts, stock photography |
| App Product | Every element earns its pixel; keyboard-first | Decorative motion, marketing copy patterns |
| Motion-Led | Motion communicates state; spring physics; reduced-motion native | Linear easing, aesthetic-only animation |
| Bento | Asymmetric tiles, one job per tile, diffusion shadows, large radius | Uniform card grids, tight spacing |
Research — where to look, what to refuse
Fetch real design work before generating tokens. Sources chosen for evidence quality, not visual impressiveness:
| Source | What it provides |
Mobbin (mobbin.com) | Real product flows from shipped software |
Godly (godly.website) | Curated production web typography and layout |
Refero Styles (styles.refero.design) | Palettes, type, spacing extracted from shipped products, each with a one-line descriptor |
| Direct product research | Linear, Vercel, Railway, Posthog, Arc, Raycast: inspect the real products |
| Open-source design systems | Real component decisions with real constraints; study the decisions, never import the stack |
Excluded: Dribbble and Awwwards. Both optimize for a thumbnail or a jury, not for what ships. Inspiration from either leads straight back to the AI-tell patterns (oversaturated gradients, dramatic shadows, interactions that collapse under real content).
When the user attaches a reference image, extract signals, never facts: dominant hue and temperature, surface lightness, font category, spacing rhythm, CTA style, density. Then synthesize original values. Copying hex codes from a screenshot is theft with worse contrast.
Order of operations
- Industry bucket and dials bound what's allowed.
- Research supplies the raw material.
- Write the thesis inside those bounds. If the thesis fights the dials, resolve it now, not in CSS.
- Derive: hue and surface lightness from material and light, type personality from role, motion from whether the thing is used or contemplated.
- Name the direction category, then hand off: color skill for the palette, typography skill for the type system, layout skill for hierarchy and spacing, motion skill for the animation budget.
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.

