Imported from blauwtje/exo (
skills/designing/SKILL.md). Install upstream withnpx skills add blauwtje/exo --skill designing. Copyright stays with the author.
Visual Design
Design so the result cannot be mistaken for a template: every visual choice traceable to the subject, audience, or page job, plus one evidence-backed differentiator a competitor could not justify. The enemy is the transferable default — a design that could accept another product name unchanged. The overcorrection is novelty that obscures content, removes states, or breaks accessibility.
A full or bounded redesign fails when the rendered result stays materially interchangeable with the baseline, when supporting regions stay generic while one focal point carries the design, or when a large empty area has no content, grouping, pacing, or staging job. Do not default an open axis — composition, type, chromatic hierarchy, surface treatment, imagery, motion — to absence: restraint on one axis needs a brief-side reason and expression on the others.
After a compaction notice, resume from the newest /private/tmp/designing/*/ run directory, not the conversation: Build reopens from its contract-selected.json, and renders/ shows the checkpoints reached.
Size the request
This skill owns a visual change at any file count, since Build dispatches its own builders. An undecided surface (its displayed data, settings or behavior) goes to shaping first; a change that also adds state, persistence, a dependency or a network call belongs to implementing-batch, which borrows this skill for the look.
- Sketch: a demo, prototype, or mock the request names as one, built on
## The sketch pathofreferences/phase-build.md: no variants, agents, or critic; the floor holds. - Full or bounded redesign: a new page/view/identity; a request changing at least three of composition, palette, type, motion, and content hierarchy; or a report that an existing surface is empty, boring, generic, flat, unfinished, or not distinctive. Run all five phases, bounded to the named surface; the existing direction is evidence, not a veto.
- New piece: a section, component, or view inheriting the existing direction, on
## The piece pathofreferences/phase-build.md. A piece that changes the page's hierarchy is a bounded redesign. - Tweak: one element or named visual property changes and no region is added. Change it, audit the touched surface, verify the floor, and stop; never expand a tweak into a redesign.
Route
Resolve the surface from the markup and style files in the working-tree diff, then the last touched one; with neither, ask only which surface, naming the candidates newest first. Then stop at the first matching rung, because comps earn their cost only where a chooser recognises a direction they cannot name:
- Tweak: the tweak path.
- Handed a direction: a plan's
Contract:or a brief'scontract-selected.jsonis copied to$RUN/contract-selected.jsonand resumes at Build (Phase 3), repeating neither Phase 1-2 nor the variant choice. When$RUN/inventory.mdis missing and the size is a full or bounded redesign, dispatchexo:design-discoveryfor Phase 1 only before Build, never Phase 2. - Asked to choose: the user asks to see or choose between directions, or the brief's
## Visual directionnames the user as chooser: the offer in## Askingofreferences/intake.md. - Sketch: the sketch path.
- Settled identity: the evidence
## Settled identityofreferences/intake.mdlists, read when rungs 1-4 miss, while neither the user nor the brief lets it be replaced: one direction in text, no offer. A component library in the manifest is not that evidence on its own, because its defaults are the template this skill exists to replace. - Tool surface: an open identity on an app view, dashboard, admin or settings page, form, documentation page, internal tool, or component: one direction in text from Phase 1 evidence and the nearest sibling surface, no offer, because scanability and existing expectations outrank expression there.
- Expression surface: an open identity on a landing, marketing, pricing, portfolio, or launch page, whose job is a first impression on someone who has not adopted the product: the offer, as in rung 3.
A surface neither list names takes rung 6, and the report names rung 7 as the rival reading, because a picker's spent minutes do not bar a later request for directions. A user who leaves the look to this skill has not asked for text: rung 7 still offers.
The loop
The references call these steps Phase 1 to 5.
- Context. Read
references/phase-detail.mdwhole, once; its## Contextguides this step. A full or bounded redesign takes the baseline pair first and hands Phase 1 to theexo:design-discoveryagent; this session reads its report of at most 20 lines and asks its## Openquestions, never the repository ranges. - Direction. Decide it in this session, before any production code changes, under
references/phase-direction.md. - Build. Read
references/phase-build.mdbefore the first edit or builder dispatch; follow## The build floorofreferences/phase-detail.md, already read at Phase 1. - Critique the render. A full or bounded redesign follows
## The critique dispatchofreferences/phase-detail.md, already read at Phase 1, before the baseline capture, which precedes the first edit. - Check. A
general-purposedelegate onsonnetruns## QAofreferences/phase-detail.md, already read at Phase 1, withRUN,SKILLandREPO, and writes$RUN/qa.md; this session's close quotes qa.md.
References
Load a reference only at its row's phase and predicate, never the set up front. references/phase-detail.md reads whole at Phase 1; every other Phase 5 row loads by section (grep -n '^## ', then sed -n to the next heading). Phase 3 rows are read by the surface builder, never this session, except references/phase-build.md, which decides who builds.
| File | Read it when |
|---|---|
references/intake.md |
Before Phase 1: asking, the run directory, symptoms; its ## Settled identity when Route rungs 1-4 miss. |
references/phase-detail.md |
Whole, once, at Phase 1; later steps name its sections by heading. |
references/phase-direction.md |
Phase 2, before deciding the direction. |
references/phase-build.md |
Phase 3, before the first edit or builder dispatch. |
references/visual-direction.md |
Phase 2, every direction decision; Phase 1 when the repository or docs/design/DESIGN.md holds a design system to extract. |
references/sketch-tab.md |
Phase 2 on rungs 3 and 7, after --check reports ok and before the offer; elsewhere, before the first visual choice the user asked to see. |
references/direction-preview.md |
Phase 2, only when the user asks to see directions whole, before building the picker's comps. |
references/composition.md |
Phase 1 inventory; Phase 2 structure; Phase 3 layout. |
references/typography.md |
Phases 2–3, when choosing or changing type. |
references/controls.md |
Phase 3, before styling a control. |
references/implementation.md |
Phase 3, before writing CSS or component code. |
references/motion.md |
Phase 3 for the recorded motion decision, and before any animation at every size. |
references/interaction-qa.md |
Phase 3 for controls, flows, disclosure, or reachable states; Phase 5 ## Pre-ship interaction sweep alone. |
references/feedback-and-status.md |
Phase 3 when the surface waits on the network, applies a change before its response, or reports status outside the changed region; Phase 5 ## Sweep alone. |
references/visual-critique.md |
Phase 3, the ## Slop tropes section, before finishing a treatment; Phase 4 whole, by exo:design-critic only; this session reads its faults.md. |
references/craft-recipes.md |
Phase 3, before the first CSS of a ground, surface, motion, or type treatment. |
references/component-system.md |
Phase 1 ## Adopt before authoring alone, when the repository ships a component layer; Phase 3 before building a control, field, or surface the design repeats. |
references/tokens.md |
Phase 2 only for a token pipeline or DTCG file, a second theme or brand, or a ramp generated against target contrast. |
references/icons-and-imagery.md |
Phase 3 only when the build draws or extends an icon set, places a raster or chart, or the inventory names imagery. |
references/accessibility.md |
Phase 3 only before a composite widget; Phase 5 ## Sweep alone. |
references/performance-budget.md |
Phase 3 only when the build adds a hero raster, an unloaded font, or a persistent effect; Phase 5 ## Outcome thresholds and ## Hard failures alone. |
references/internationalization.md |
Phase 1 when the product ships more than one language, the repository carries translation machinery, or the audience reads a right-to-left or non-Latin script. |
Judgment
- Explicit brief requirements outrank every design default and tell list, and a human selection of a rendered variant outranks this skill's own preference.
- An approved durable design decision outranks a new direction; changing one requires asking first.
- Repository framework, naming, file-layout, and component conventions outrank this skill's code defaults; they do not preserve the visual anatomy the user asked to replace.
- Scope restraint limits which surfaces and files change; it never requires the smallest visual delta inside them.
- Accessibility and complete content/state coverage outrank visual novelty.
- A brief asking for showy motion or effects raises the ambition ceiling: tells and timing caps become minimums to exceed; contrast, reduced-motion, and state coverage still hold.
- This skill owns visual decisions only. When a
shaping,planning,implementing-batch, ordebugstage called it, return control for product decisions, ordering, wiring, persistence, validation, proof, and reporting. When no stage called it, execute the visual-only request and report directly.