@hegemonart/get-design-done 1.14.8 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +5 -3
- package/.claude-plugin/plugin.json +15 -5
- package/CHANGELOG.md +97 -0
- package/README.md +30 -0
- package/SKILL.md +4 -1
- package/agents/a11y-mapper.md +25 -0
- package/agents/component-benchmark-harvester.md +112 -0
- package/agents/component-benchmark-synthesizer.md +88 -0
- package/agents/design-auditor.md +92 -8
- package/agents/design-context-builder.md +6 -0
- package/agents/design-executor.md +5 -2
- package/agents/design-pattern-mapper.md +2 -0
- package/agents/design-verifier.md +11 -0
- package/agents/motion-mapper.md +45 -0
- package/agents/token-mapper.md +36 -0
- package/agents/visual-hierarchy-mapper.md +29 -0
- package/connections/design-corpora.md +158 -0
- package/package.json +16 -2
- package/reference/anti-patterns.md +69 -0
- package/reference/audit-scoring.md +34 -3
- package/reference/brand-voice.md +199 -0
- package/reference/checklists.md +30 -3
- package/reference/components/README.md +90 -0
- package/reference/components/TEMPLATE.md +184 -0
- package/reference/components/accordion.md +217 -0
- package/reference/components/button.md +195 -0
- package/reference/components/card.md +200 -0
- package/reference/components/checkbox.md +207 -0
- package/reference/components/drawer.md +201 -0
- package/reference/components/input.md +208 -0
- package/reference/components/label.md +200 -0
- package/reference/components/link.md +193 -0
- package/reference/components/modal-dialog.md +210 -0
- package/reference/components/popover.md +197 -0
- package/reference/components/radio.md +203 -0
- package/reference/components/select-combobox.md +219 -0
- package/reference/components/switch.md +194 -0
- package/reference/components/tabs.md +213 -0
- package/reference/components/tooltip.md +201 -0
- package/reference/data/google-fonts.csv +51 -0
- package/reference/data/palettes.csv +41 -0
- package/reference/data/styles.csv +39 -0
- package/reference/design-system-guidance.md +177 -0
- package/reference/design-systems-catalog.md +151 -0
- package/reference/framer-motion-patterns.md +411 -0
- package/reference/gestalt.md +219 -0
- package/reference/iconography.md +231 -0
- package/reference/motion.md +102 -0
- package/reference/palette-catalog.md +82 -0
- package/reference/performance.md +304 -0
- package/reference/registry.json +359 -28
- package/reference/registry.schema.json +2 -1
- package/reference/review-format.md +2 -2
- package/reference/style-vocabulary.md +62 -0
- package/reference/surfaces.md +114 -0
- package/reference/typography.md +80 -0
- package/reference/visual-hierarchy-layout.md +306 -0
- package/skills/benchmark/SKILL.md +105 -0
|
@@ -334,3 +334,72 @@ grep -rn "bounce\|elastic" src/ --include="*.css"
|
|
|
334
334
|
- [ ] Bounce or elastic easing anywhere?
|
|
335
335
|
|
|
336
336
|
If YES to any → rewrite that element before proceeding.
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
### BAN-10: Same Border-Radius on Nested Surfaces
|
|
341
|
+
|
|
342
|
+
Applying the same `border-radius` to a container and an element inside it (when the element is separated by padding) makes the inner element appear to "float" — the radii should be concentric, not equal.
|
|
343
|
+
|
|
344
|
+
**Grep (Tailwind):**
|
|
345
|
+
```
|
|
346
|
+
(rounded-\w+)[^"]*"[^>]*>\s*<[^>]*\1
|
|
347
|
+
```
|
|
348
|
+
**Grep (CSS):** Look for identical `border-radius` values in parent and child selectors within the same component.
|
|
349
|
+
|
|
350
|
+
**Fix:** Apply the concentric formula: `innerRadius = outerRadius − padding`. See `reference/surfaces.md`.
|
|
351
|
+
|
|
352
|
+
Source: jakubkrehel/make-interfaces-feel-better (MIT)
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
356
|
+
### BAN-11: Tinted Image Outline
|
|
357
|
+
|
|
358
|
+
Using a colored outline on images (e.g., `outline-slate-200`, `outline-gray-300`, or a hex-value outline color) competes visually with the image content and creates color contamination.
|
|
359
|
+
|
|
360
|
+
**Grep (Tailwind):**
|
|
361
|
+
```
|
|
362
|
+
outline-(slate|zinc|neutral|gray|stone|blue|red|green|yellow|purple)-\d+
|
|
363
|
+
```
|
|
364
|
+
applied to `<img>` elements.
|
|
365
|
+
|
|
366
|
+
**Grep (CSS):**
|
|
367
|
+
```
|
|
368
|
+
img\s*\{[^}]*outline:\s*[^}]*#[0-9a-fA-F]{3,8}
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
**Fix:** Use `outline: 1px solid rgba(0,0,0,0.08)` (light) or `outline: 1px solid rgba(255,255,255,0.08)` (dark). Pure black or white at low opacity only. See `reference/surfaces.md`.
|
|
372
|
+
|
|
373
|
+
Source: jakubkrehel/make-interfaces-feel-better (MIT)
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
### BAN-12: `transition: all`
|
|
378
|
+
|
|
379
|
+
`transition: all` animates every animatable CSS property on the element, including layout-triggering properties (width, height, padding, margin). This causes layout recalculation on EVERY transition, creating jank and unexpected visual effects (e.g., a hover transition that also animates the element's size if any dimensions change).
|
|
380
|
+
|
|
381
|
+
**Grep (CSS):**
|
|
382
|
+
```
|
|
383
|
+
transition:\s*all
|
|
384
|
+
transition-property:\s*all
|
|
385
|
+
```
|
|
386
|
+
**Grep (Tailwind):** bare `\btransition\b` class (without a modifier like `transition-transform` or `transition-[specific-property]`).
|
|
387
|
+
|
|
388
|
+
**Fix:** Specify the exact properties to animate. For hover effects: `transition: background-color 150ms, color 150ms, opacity 150ms`. For motion: `transition: transform 200ms, opacity 200ms`.
|
|
389
|
+
|
|
390
|
+
Source: jakubkrehel/make-interfaces-feel-better (MIT)
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
|
|
394
|
+
### BAN-13: `will-change: all`
|
|
395
|
+
|
|
396
|
+
`will-change: all` promotes every animatable property to its own GPU compositor layer, consuming GPU memory for each property. On complex components this can allocate hundreds of MB of texture memory per instance, causing performance degradation and potential crashes on mobile.
|
|
397
|
+
|
|
398
|
+
**Grep:**
|
|
399
|
+
```
|
|
400
|
+
will-change:\s*all
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
**Fix:** Restrict to specific compositing-safe properties: `will-change: transform`, `will-change: opacity`, `will-change: filter`, or `will-change: clip-path`. Remove entirely after animation completes. See `reference/motion.md` will-change section.
|
|
404
|
+
|
|
405
|
+
Source: jakubkrehel/make-interfaces-feel-better (MIT)
|
|
@@ -124,7 +124,7 @@ Check for:
|
|
|
124
124
|
- Content max-width enforced (prose: 65ch, layout: 1200–1440px)
|
|
125
125
|
- Mobile breakpoint respected (no horizontal scroll)
|
|
126
126
|
|
|
127
|
-
### 6. Anti-Pattern Compliance (Weight:
|
|
127
|
+
### 6. Anti-Pattern Compliance (Weight: 5%)
|
|
128
128
|
|
|
129
129
|
Score = 10 − (number of hard-ban violations × 3) − (number of AI-slop tells × 1), minimum 0.
|
|
130
130
|
|
|
@@ -155,8 +155,9 @@ Score = (Accessibility × 0.25)
|
|
|
155
155
|
+ (Typography × 0.15)
|
|
156
156
|
+ (Color × 0.15)
|
|
157
157
|
+ (Layout × 0.10)
|
|
158
|
-
+ (Anti-Patterns × 0.
|
|
158
|
+
+ (Anti-Patterns × 0.05)
|
|
159
159
|
+ (Motion × 0.05)
|
|
160
|
+
+ (Micro-polish × 0.05)
|
|
160
161
|
```
|
|
161
162
|
|
|
162
163
|
| Grade | Score | Meaning |
|
|
@@ -184,8 +185,9 @@ Baseline score: [N/100]
|
|
|
184
185
|
| Typography | /10 | 15% | |
|
|
185
186
|
| Color | /10 | 15% | |
|
|
186
187
|
| Layout | /10 | 10% | |
|
|
187
|
-
| Anti-Patterns | /10 |
|
|
188
|
+
| Anti-Patterns | /10 | 5% | |
|
|
188
189
|
| Motion | /10 | 5% | |
|
|
190
|
+
| Micro-polish | /10 | 5% | |
|
|
189
191
|
| **Total** | | | **/100** |
|
|
190
192
|
|
|
191
193
|
### Findings
|
|
@@ -203,3 +205,32 @@ Baseline score: [N/100]
|
|
|
203
205
|
| ... | | |
|
|
204
206
|
| **Total** | /40 | **= NNG Score:** /100 |
|
|
205
207
|
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
<!-- BREAKING: Anti-Pattern Compliance pillar weight changed 10%→5% in v1.15.0; Micro-polish pillar added at 5%. Cross-cycle score comparisons should account for this change. -->
|
|
212
|
+
|
|
213
|
+
### 8. Micro-polish (Weight: 5%)
|
|
214
|
+
|
|
215
|
+
Text-wrap, font-smoothing, tabular-nums, concentric radius, image outlines, hit areas, canonical press scale, will-change discipline.
|
|
216
|
+
|
|
217
|
+
| Score | Criteria |
|
|
218
|
+
|---|---|
|
|
219
|
+
| 10 | All 14 micro-polish checklist items pass |
|
|
220
|
+
| 7–9 | 2–3 violations found |
|
|
221
|
+
| 4–6 | 7 or more violations, core items failing (press scale, transition:all) |
|
|
222
|
+
| 0–3 | Most items fail or not considered |
|
|
223
|
+
|
|
224
|
+
Check for (see `reference/checklists.md` Micro-Polish Check gate):
|
|
225
|
+
- Headings: `text-wrap: balance`; body/captions: `text-wrap: pretty`
|
|
226
|
+
- Font smoothing at `:root` only
|
|
227
|
+
- Dynamic numbers: `font-variant-numeric: tabular-nums`
|
|
228
|
+
- Nested elements: concentric radius (`innerRadius = outerRadius − padding`)
|
|
229
|
+
- Images: `outline: 1px solid rgba(0,0,0,0.08)` — no tinted outlines
|
|
230
|
+
- Interactive elements <40px: `::after` hit-area extension to 40×40
|
|
231
|
+
- Press feedback: `scale(0.96)` exactly
|
|
232
|
+
- `AnimatePresence` on persistent UI: `initial={false}`
|
|
233
|
+
- Icon cross-fade spring: `bounce: 0`
|
|
234
|
+
- No `transition: all` (BAN-12)
|
|
235
|
+
- No `will-change: all` (BAN-13)
|
|
236
|
+
- `prefers-reduced-motion` respected
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# Brand Voice
|
|
2
|
+
|
|
3
|
+
<!-- Source: nextlevelbuilder/ui-ux-pro-max-skill (MIT) — data/products.csv, data/ui-reasoning.csv (industry-context section) -->
|
|
4
|
+
|
|
5
|
+
Brand voice is not a single setting — it is a combination of independent axes, an archetype frame, and a sensitivity to context. Agents reading this file should treat the voice axes and archetype library as orthogonal dimensions: pick a position on each axis independently, then select an archetype to layer personality on top. Neither choice is derived from the other.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Voice Axes
|
|
10
|
+
|
|
11
|
+
Each axis is a spectrum between two poles. Moving toward one pole is not superior to moving toward the other — the correct position depends entirely on the product's audience, vertical, and context of use. Most products do not land at the extreme of any axis; they occupy a deliberate range within it.
|
|
12
|
+
|
|
13
|
+
### Axis 1: Formal ↔ Casual
|
|
14
|
+
|
|
15
|
+
**Formal pole:** Language is structured, precise, and impersonal. Sentences are grammatically complete. Contractions are avoided. Passive voice is acceptable when it de-emphasizes agency. Examples: "Submit your application for review." / "Your session has expired. Please authenticate to continue."
|
|
16
|
+
|
|
17
|
+
**Casual pole:** Language is conversational, friendly, and direct. Contractions appear naturally. Second-person is preferred. Colloquialisms are acceptable when they do not confuse. Examples: "Send it over." / "You're in! Let's get started."
|
|
18
|
+
|
|
19
|
+
**When to move toward Formal:** Finance, legal, healthcare, government, and enterprise compliance products benefit from formal language because it signals seriousness, reduces ambiguity in high-stakes decisions, and matches the institutional register users expect. A banking app that says "Send it over" for a wire transfer erodes trust.
|
|
20
|
+
|
|
21
|
+
**When to move toward Casual:** Social apps, consumer lifestyle products, gaming, fitness trackers, and food-delivery apps benefit from casual language because it reduces friction, makes the product feel approachable, and builds an emotional connection. A meditation app that speaks like a compliance manual creates the wrong affective atmosphere.
|
|
22
|
+
|
|
23
|
+
**Copy examples:**
|
|
24
|
+
- Formal: "Enter your eight-digit verification code to proceed."
|
|
25
|
+
- Casual: "Type the 8-digit code we just sent you."
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
### Axis 2: Serious ↔ Playful
|
|
30
|
+
|
|
31
|
+
**Serious pole:** Tone is earnest and sober. Errors are acknowledged without irony. Humor is absent or very subdued. Stakes are treated as real. Example error message: "We were unable to process your payment. Please verify your card details and try again, or contact your bank."
|
|
32
|
+
|
|
33
|
+
**Playful pole:** Tone uses wit, lightness, and occasionally emoji or metaphor to reduce tension and delight the user. Playfulness does not mean frivolous — it means the product enjoys its own existence. Example error message: "Something got tangled up on our end. Give it another go? 🙏"
|
|
34
|
+
|
|
35
|
+
**When to move toward Serious:** Enterprise B2B, professional tools, medical platforms, legal services, and financial dashboards should maintain a serious register because users are performing consequential work and playful tone signals a mismatch in understanding stakes. An HR platform with whimsical error messages risks undermining managerial authority.
|
|
36
|
+
|
|
37
|
+
**When to move toward Playful:** Lifestyle apps, kids' platforms, fitness and wellness products, food apps, and consumer gaming should embrace playfulness because the use context is low-stakes, habitual, or recreational. Playfulness here reduces abandonment and increases retention by making interaction inherently enjoyable.
|
|
38
|
+
|
|
39
|
+
**Copy examples:**
|
|
40
|
+
- Serious: "This action cannot be undone. All selected records will be permanently deleted."
|
|
41
|
+
- Playful: "Heads up — once you delete this, it's gone for good. Still want to?"
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
### Axis 3: Expert ↔ Approachable
|
|
46
|
+
|
|
47
|
+
**Expert pole:** Language assumes domain knowledge. Technical terms are used without definition. The product speaks as a peer to specialists. Precision is prioritized over accessibility. Example: "Configure your OAuth 2.0 PKCE flow with a 256-bit code verifier before initiating the authorization request."
|
|
48
|
+
|
|
49
|
+
**Approachable pole:** Language explains concepts in plain English. Jargon is translated or avoided. The product speaks as a guide to non-specialists. Accessibility is prioritized over brevity. Example: "Connect your account securely — we use a modern login method that keeps your password private."
|
|
50
|
+
|
|
51
|
+
**When to move toward Expert:** Developer tools, ML/data platforms, DevOps dashboards, security products, and medical or legal professional tools are used by specialists who are frustrated by over-explanation. Unnecessary simplification reads as condescension and slows expert users down.
|
|
52
|
+
|
|
53
|
+
**When to move toward Approachable:** Consumer finance apps, health tracking for general audiences, first-time-user onboarding in any category, and civic technology should be maximally approachable because the audience includes users with wide variation in technical or domain literacy. Inaccessible language creates drop-off and confusion.
|
|
54
|
+
|
|
55
|
+
**Copy examples:**
|
|
56
|
+
- Expert: "Set `cache-control: no-store` on API responses to bypass the CDN edge layer."
|
|
57
|
+
- Approachable: "Turn off caching here so your users always see the latest version."
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
### Axis 4: Reverent ↔ Irreverent
|
|
62
|
+
|
|
63
|
+
**Reverent pole:** Language is deferential, careful, and tradition-respecting. It signals that the product understands gravity and heritage. Excess is avoided. Nothing is done with a wink. Example: "Crafted with care since 1897. Every detail considered."
|
|
64
|
+
|
|
65
|
+
**Irreverent pole:** Language challenges conventions, uses unexpected angles, and does not take received wisdom at face value. It signals confidence and originality. It can be deliberately provocative. Example: "Most investment apps are built for banks. This one isn't."
|
|
66
|
+
|
|
67
|
+
**When to move toward Reverent:** Luxury brands, heritage fashion houses, fine dining, premium hospitality, and cultural institutions benefit from reverent language because it honors the symbolic weight users attach to these products and does not puncture the aspirational experience they are purchasing.
|
|
68
|
+
|
|
69
|
+
**When to move toward Irreverent:** Challenger brands, startup disruptors, creative tools, youth-oriented products, and any brand explicitly positioning against an incumbent benefit from irreverent language because it embodies the brand's core argument — that the old way is worth questioning. An anti-establishment fintech that writes like a bank forfeits its entire premise.
|
|
70
|
+
|
|
71
|
+
**Copy examples:**
|
|
72
|
+
- Reverent: "Each piece is hand-finished by our atelier in Lyon."
|
|
73
|
+
- Irreverent: "Your bank charges you to hold your own money. We don't."
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
### Axis 5: Authoritative ↔ Collaborative
|
|
78
|
+
|
|
79
|
+
**Authoritative pole:** The product speaks with confidence and direction. It tells users what to do. Instructions are commands, not suggestions. The relationship is expert-to-user. Example: "You must complete identity verification before withdrawing funds." / "Save your work before closing this window."
|
|
80
|
+
|
|
81
|
+
**Collaborative pole:** The product speaks as a partner. It recommends and explains, framing choices as shared decisions. The relationship is peer-to-peer. Example: "We recommend verifying your identity now — it unlocks higher withdrawal limits." / "Just so you know — unsaved changes will be lost if you close."
|
|
82
|
+
|
|
83
|
+
**When to move toward Authoritative:** Compliance interfaces, safety-critical systems, legal workflows, and any context where users must follow a specific procedure without deviation benefit from authoritative language because ambiguity creates errors and liability. A safety checklist that says "You might want to confirm the valve is closed" is a design defect.
|
|
84
|
+
|
|
85
|
+
**When to move toward Collaborative:** Creative tools, community platforms, collaborative document editors, and any product built around co-creation or exploration benefit from collaborative language because it respects user agency, signals trust, and aligns with the product's core value proposition of shared work.
|
|
86
|
+
|
|
87
|
+
**Copy examples:**
|
|
88
|
+
- Authoritative: "Enter your password to confirm this irreversible action."
|
|
89
|
+
- Collaborative: "One last check — confirm your password and we'll take it from there."
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Archetype Library
|
|
94
|
+
|
|
95
|
+
Archetypes are personality frames, not voice axes. They describe the fundamental role the brand plays in its users' lives and the emotional contract it offers. Archetypes and voice axes are orthogonal: a Sage brand can be formal or casual, serious or playful. Select an archetype and then tune voice axes independently.
|
|
96
|
+
|
|
97
|
+
### 1. The Sage
|
|
98
|
+
The Sage earns trust by sharing knowledge. It positions the product as the most informed source in the room — not arrogant, but genuinely expert. The Sage communicates in a way that makes users feel more capable after each interaction, not dependent. In UI, this means rich documentation, contextual education woven into onboarding, and copy that explains the "why" rather than just the "what." Design skews toward clarity, precision, and minimalism — nothing competes with the information itself.
|
|
99
|
+
|
|
100
|
+
### 2. The Hero
|
|
101
|
+
The Hero is empowering and action-oriented. It frames the user as the agent of change and the product as the tool that makes the mission possible. CTAs are verbs: "Start building," "Launch your campaign," "Deploy now." The Hero archetype works best when users have a clear goal and the product gives them velocity toward it. Design is bold, directional, and high-contrast — it communicates momentum.
|
|
102
|
+
|
|
103
|
+
### 3. The Creator
|
|
104
|
+
The Creator prioritizes imagination and aesthetic experience. The product itself is a canvas, and the copy celebrates what users will make rather than what the product can do. Language is evocative rather than functional. Onboarding feels like an invitation rather than a tutorial. Design is aesthetic-forward — typography, whitespace, and visual rhythm are treated as expressive elements, not just layout tools.
|
|
105
|
+
|
|
106
|
+
### 4. The Caregiver
|
|
107
|
+
The Caregiver is empathetic, supportive, and gentle under pressure. It anticipates user anxiety and responds with reassurance. Error messages do not blame; they comfort and guide. Onboarding is patient. The Caregiver archetype is essential for health apps, mental wellness platforms, parenting tools, and any product used during vulnerable moments. Design is warm, rounded, and low-stimulus — nothing startles or overwhelms.
|
|
108
|
+
|
|
109
|
+
### 5. The Ruler
|
|
110
|
+
The Ruler is premium, commanding, and authority-signaling. It does not explain itself — it presents. Copy is declarative and sparse. The Ruler archetype justifies premium pricing through an experience that communicates exclusivity and mastery. This archetype works for luxury goods, high-end B2B platforms, and any product where status is part of the value. Design is restrained, high-contrast, and architectural — every element signals control.
|
|
111
|
+
|
|
112
|
+
### 6. The Jester
|
|
113
|
+
The Jester uses humor to disarm and delight. It understands that joy is a retention mechanism and that laughter creates loyalty. The Jester does not take itself seriously and invites users to share that lightness. This archetype works for consumer products in low-stakes categories, social tools, and brands that have earned enough trust to be self-deprecating. Design uses surprise, playful motion, and unexpected visual moments — but always purposefully, never randomly.
|
|
114
|
+
|
|
115
|
+
### 7. The Innocent
|
|
116
|
+
The Innocent is clean, optimistic, and simple. It communicates that the world is basically good and that this product exists to make it a little better. Copy is honest, unpretentious, and free of manipulation. The Innocent archetype is right for health food brands, sustainable products, children's tools, and any product positioning around purity or honesty. Design is bright, open, and generous with whitespace — nothing hidden, nothing complex.
|
|
117
|
+
|
|
118
|
+
### 8. The Explorer
|
|
119
|
+
The Explorer is discovery-forward and adventurous. It communicates that the world is full of things worth finding and that this product is the best vehicle for that journey. Copy uses open-ended language: "See what's possible," "Go further," "Find your path." The Explorer archetype fits travel apps, outdoor brands, learning platforms, and curiosity-driven tools. Design uses movement, depth, and environmental imagery to evoke possibility.
|
|
120
|
+
|
|
121
|
+
### 9. The Rebel
|
|
122
|
+
The Rebel challenges assumptions and frames the incumbent as the problem. It uses anti-establishment language deliberately, not carelessly. The Rebel is not angry — it is confident in its alternative. Copy names what it rejects: "Not your usual bank," "Skip the middleman," "Design without the gatekeepers." The Rebel archetype is right for challenger brands, disruptive startups, and any product that exists because the existing solution is broken. Design is unconventional — asymmetric, raw, or deliberately anti-polished to signal that the rules have changed.
|
|
123
|
+
|
|
124
|
+
### 10. The Lover
|
|
125
|
+
The Lover creates intimacy and sensory connection. Copy is warm, personal, and physically evocative. The Lover archetype is less about romance than about deep emotional resonance — the product feels like it was made for you specifically. This archetype fits beauty brands, food and beverage, hospitality, and any product where sensory experience is central. Design is rich, textural, and emotionally warm — photography over illustration, warmth over coolness.
|
|
126
|
+
|
|
127
|
+
### 11. The Everyman
|
|
128
|
+
The Everyman is relatable, unpretentious, and radically inclusive. It signals that this product is for everyone, not for a tribe or an aspirational identity. Copy avoids jargon, insider language, and exclusivity markers. The Everyman archetype is right for utility apps, mass-market consumer tools, and any product that succeeds by broad adoption rather than niche loyalty. Design is familiar and accessible — conventional enough to feel immediately understandable to any user.
|
|
129
|
+
|
|
130
|
+
### 12. The Magician
|
|
131
|
+
The Magician is transformation-focused. It frames the product as the mechanism by which users go from a lesser to a greater state. Copy uses before/after framing: "What used to take days takes minutes," "You used to guess. Now you know." The Magician archetype fits productivity tools, AI platforms, and any product whose core promise is that the user will be meaningfully different after using it. Design uses contrast — before states feel constrained, after states feel open and capable.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
### Design-Oriented Archetype Variants
|
|
136
|
+
|
|
137
|
+
Beyond the 12 canonical archetypes, products can adopt a design-register variant that shapes visual and typographic expression independently of archetype:
|
|
138
|
+
|
|
139
|
+
**Brutalist:** Raw, unpolished, deliberately anti-refined. Grid-breaking, heavy type, exposed structure. Signals authenticity and rejection of commercial smoothness.
|
|
140
|
+
|
|
141
|
+
**Editorial:** Typography-forward, content-as-design. White space is generous; hierarchy is entirely typographic. Signals intelligence, taste, and editorial authority.
|
|
142
|
+
|
|
143
|
+
**Technical:** Precision over elegance. Monospace type, dense data grids, minimal decoration. Signals accuracy, depth, and professional competence.
|
|
144
|
+
|
|
145
|
+
**Romantic:** Warmth, craft, and human touch. Texture, handmade-feeling elements, warm typography. Signals care, artisanship, and emotional presence.
|
|
146
|
+
|
|
147
|
+
**Utilitarian:** Efficiency over expression. Maximum information density, minimal visual ornament. Signals that function is the point and nothing is wasted.
|
|
148
|
+
|
|
149
|
+
**Experimental:** Pushes form conventions deliberately. Unusual composition, unexpected animation, non-standard grid. Signals originality and a willingness to challenge assumption.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Tone-by-Context Table
|
|
154
|
+
|
|
155
|
+
Tone is not fixed — even a consistent brand voice shifts register depending on the situation the user is in. A Jester brand should not make jokes in an error message that signals data loss. This table maps UI contexts to appropriate tone adjustments.
|
|
156
|
+
|
|
157
|
+
| Context | Recommended Tone | Example Copy |
|
|
158
|
+
|---------|-----------------|--------------|
|
|
159
|
+
| Error message | Calm, clear, helpful — never humorous for data loss or high-stakes failure | "We couldn't save your changes. Check your connection and try again." |
|
|
160
|
+
| Empty state | Warm, forward-looking, actionable — explains why empty and what to do | "Nothing here yet. Add your first project to get started." |
|
|
161
|
+
| Success / celebration | Positive, proportionate to stakes — brief and genuine, not excessive | "All done! Your report is ready." / "🎉 You're all set!" (casual products only) |
|
|
162
|
+
| Onboarding | Welcoming, encouraging, brief — does not front-load complexity | "Let's set up your workspace. It only takes a minute." |
|
|
163
|
+
| Loading state | Reassuring, informative — signals progress without being annoying | "Getting your data…" / "Almost there." |
|
|
164
|
+
| Destructive action confirmation | Serious, precise, no hedging — names what will be destroyed | "Delete project 'Alpha'? This cannot be undone." |
|
|
165
|
+
| Pricing page | Honest, benefit-led, no dark patterns — copy earns the price | "Everything in Pro, plus unlimited seats and priority support." |
|
|
166
|
+
| Marketing headline | Archetype-forward, emotionally resonant — captures brand promise | Varies by archetype (Hero: "Ship faster." / Creator: "Make something beautiful.") |
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Industry Context
|
|
171
|
+
|
|
172
|
+
<!-- Source: nextlevelbuilder/ui-ux-pro-max-skill (MIT) — data/products.csv, data/ui-reasoning.csv -->
|
|
173
|
+
|
|
174
|
+
**Important:** Voice axis positions and industry context are orthogonal dimensions. Industry context provides defaults and constraints; voice axis positions are still chosen deliberately within those constraints. A FinTech product can be formal but approachable, or formal and expert — industry context does not collapse those choices, it narrows the range.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
| Vertical | Voice Axis Defaults | Color Mood | Typography Mood | Key Effects | Anti-Patterns |
|
|
179
|
+
|----------|-------------------|------------|-----------------|-------------|---------------|
|
|
180
|
+
| **FinTech / Banking** | Formal → Serious → Expert → Authoritative; trust must be earned through consistency | Deep navy, forest green, cool greys — signals stability and security | Clean sans-serif (Inter, DM Sans), generous line-height for readability at numeric density | Microanimations on transaction confirmation; subtle loading states; no celebration for transfers | Casual tone on high-stakes actions; bright consumer palettes; playful error messages; flashy transitions on money movement |
|
|
181
|
+
| **HealthTech / Medical** | Formal → Serious → Approachable → Collaborative; clarity reduces anxiety | Soft teal, warm white, calm blues — avoids red except for genuine danger signals | Clean, large, high-contrast; body text ≥16px mandatory for compliance and accessibility | Gentle loading indicators; animated check states for completed steps; no jarring motion | Dense data without explanation; dark mode with pure black; small body text; red used decoratively |
|
|
182
|
+
| **SaaS / B2B** | Formal–Casual range → Serious → Expert → Authoritative–Collaborative range | Neutral greys, controlled accent (brand blue/green), white space dominant | Clean sans-serif, systematic type scale; headings earn visual weight | Skeleton loading for data tables; progressive disclosure for settings; tooltips for technical fields | Over-explaining basics to expert users; inconsistent terminology across modules; AI-slop purple palette |
|
|
183
|
+
| **E-commerce / DTC** | Casual → Playful–Serious range → Approachable → Collaborative | Brand-driven palette; high saturation for CTAs; warm neutrals for product context | Expressive display for headlines; clean body for product descriptions | Product zoom hover states; cart animation on add; wishlist micro-interaction | Fake urgency copy; cluttered hierarchy; hidden total cost until checkout; tiny CTA on mobile |
|
|
184
|
+
| **Gaming / Entertainment** | Casual → Playful → Approachable–Expert range → Irreverent | High saturation, dark mode dominant, neon accent on dark surface | Display/gaming typefaces for headers; clean body for UI; weight contrast is high | Motion-heavy transitions; achievement celebrations; ambient background animation | Accessibility blindspots in dark mode; pure black backgrounds (vibration); low contrast on energetic backgrounds |
|
|
185
|
+
| **Social / Community** | Casual → Playful → Approachable → Collaborative | Warm neutrals, brand accent, avatar-forward UI with minimal chrome | Friendly rounded sans-serif; generous spacing; conversational scale | Reaction microanimations; real-time presence indicators; celebratory confetti for milestones | Cold enterprise-grade color in social context; heavy typography hierarchy that buries user content |
|
|
186
|
+
| **Dev Tools** | Casual–Formal range → Serious → Expert → Authoritative | Dark mode default; syntax-highlight palette; cool greys; code-emphasis contrast | Monospace for code; sans-serif for prose; no decorative type | Fast, no-flash loading states; inline error syntax highlighting; keyboard shortcut visibility | Explaining basics to experts; hiding power features; light-mode-only; inconsistent CLI↔UI vocabulary |
|
|
187
|
+
| **EdTech** | Casual → Playful–Serious range → Approachable → Collaborative | Warm, bright, optimistic — not childish; academic versions use cooler tone | Friendly rounded sans; large body text; generous spacing for reading context | Progress animations; streak celebration; gentle nudges for return | Overwhelming choice on first launch; punitive error framing; tests without explanation of why wrong |
|
|
188
|
+
| **Legal / Compliance** | Formal → Serious → Expert → Authoritative | Navy, charcoal, neutral greys — no decorative color | Readable serif or clean sans; no display type for primary content | None beyond loading states; no celebratory states — outcomes have real weight | Casual tone on contract actions; hiding consequences; playful UI that signals legal work is trivial |
|
|
189
|
+
| **HR / People Ops** | Formal–Casual range → Serious → Approachable → Collaborative | Warm professional: muted teal, earth tones, warm greys | Clean sans-serif; expressive enough to feel human, not cold | Subtle check animations for onboarding; gentle feedback on form completion | Clinical coldness in employee-facing UI; hiding personal data implications; confusing benefit summaries |
|
|
190
|
+
| **Real Estate** | Formal → Serious → Approachable → Authoritative | Warm greys, earth tones, occasional brand accent; photography-dominant | Clean serif or premium sans; photography does the expressive work | Map interaction states; mortgage calculator animations; image gallery transitions | Overwhelming data without hierarchy; hiding total cost; small map interaction targets on mobile |
|
|
191
|
+
| **Travel / Hospitality** | Casual → Playful–Serious range → Approachable → Collaborative | Destination-driven: warm ambers, ocean blues, lush greens | Expressive display for destination content; clean sans for booking flows | Immersive imagery transitions; booking confirmation celebration; ambient destination video | Hiding fees until final step; tiny date pickers; inconsistent voice between inspiration and transactional flows |
|
|
192
|
+
| **Food / Delivery** | Casual → Playful → Approachable → Collaborative | Warm appetizing tones: terracotta, golden yellow, deep greens | Rounded, friendly sans-serif; photography-heavy | Order status animation; delivery tracking real-time; add-to-cart micro-interaction | Cold clinical tone; hiding delivery costs; overwhelming menu density; slow loading states for item images |
|
|
193
|
+
| **Fitness / Wellness** | Casual → Serious–Playful range → Approachable → Collaborative | High energy (fitness): deep navy + neon; Wellness: warm cream, sage, earth | Strong weight contrast for motivational moments; clean body for routine content | Workout completion celebration; streak animation; activity ring fill | Shaming language for missed goals; pure black dark mode; excessive notifications; gamification without consent |
|
|
194
|
+
| **Non-profit / NGO** | Casual–Formal range → Serious → Approachable → Collaborative | Mission-driven: warm humanist tones, photography-led, restrained accent | Readable, accessible, warm — never cold or corporate | Impact counter animations; donation confirmation warmth; progress-toward-goal bars | Guilt-manipulation copy; inaccessible donation flows; slow load on donation pages; hiding overhead costs |
|
|
195
|
+
| **Government / Civic** | Formal → Serious → Approachable → Authoritative | Institutional: navy, red, white variants — national palette conventions | Highly readable sans-serif; no display type; large body text mandatory | Progress bars for multi-step processes; no celebration for government services | Jargon without explanation; inaccessible forms; mobile-hostile layouts; hiding deadlines |
|
|
196
|
+
| **Luxury / Fashion** | Formal → Serious → Expert → Reverent | Black, white, gold, nude — restraint signals luxury | Editorial serif or geometric sans; generous whitespace; typography is the aesthetic | Elegant fade transitions; product reveal on scroll; no click-bait motion | Playful copy that undercuts premium positioning; cluttered layout; urgent sale language; AI-slop palette |
|
|
197
|
+
| **Media / Publishing** | Casual–Formal range → Serious → Approachable–Expert range → Authoritative | Publication-specific; reading UX emphasizes contrast and typography | Reading-optimized: long-form line length (60–75ch), generous line-height (1.7+) | Scroll-progress indicators; reading time estimates; article-end engagement | Distraction ads interrupting reading flow; tiny body text; low contrast for long-form content |
|
|
198
|
+
| **Analytics / BI** | Formal → Serious → Expert → Authoritative | Data-focused: high contrast, neutral chrome, vivid but accessible chart palette | Dense but readable sans-serif; monospace for data values; strong heading hierarchy | Interactive chart hover states; filter animation; export confirmation | Color-blind-unsafe chart palettes; pure decoration in data visualizations; hiding data provenance |
|
|
199
|
+
| **AI / ML Platform** | Casual–Formal range → Serious → Expert → Authoritative–Collaborative range | Dark mode default with vibrant accent; cool-to-neutral chrome | Clean monospace for code and prompts; sans-serif for prose; strong weight contrast | Streaming text animation; generation loading state; token cost micro-display | Anthropomorphizing in ways that mislead; hiding capability limits; magical framing that hides user responsibility |
|
package/reference/checklists.md
CHANGED
|
@@ -13,7 +13,7 @@ Use this before any design artifact goes to the user or into a PR.
|
|
|
13
13
|
- [ ] Cited references in output so user can redirect
|
|
14
14
|
|
|
15
15
|
### Context check
|
|
16
|
-
- [ ]
|
|
16
|
+
- [ ] `DESIGN-CONTEXT.md` (or `DESIGN.md`) exists at project root with direction stated
|
|
17
17
|
- [ ] `DESIGN.md` exists at project root
|
|
18
18
|
- [ ] Design direction explicitly stated (brutalist / editorial / …)
|
|
19
19
|
- [ ] User approved direction before Phase 3
|
|
@@ -66,7 +66,7 @@ Use this before any design artifact goes to the user or into a PR.
|
|
|
66
66
|
### Technical check (code artifacts)
|
|
67
67
|
- [ ] Browser: running in preview; no console errors
|
|
68
68
|
- [ ] Dev server responds with HTTP 200 on expected routes
|
|
69
|
-
- [ ] Mobile viewport tested (
|
|
69
|
+
- [ ] Mobile viewport tested (320px, 375px, 390px, 428px breakpoints)
|
|
70
70
|
- [ ] Tap delay removed (`touch-action: manipulation`)
|
|
71
71
|
- [ ] Images use WebP/AVIF + `srcset` + lazy-loading where appropriate
|
|
72
72
|
|
|
@@ -83,7 +83,7 @@ Use this before any design artifact goes to the user or into a PR.
|
|
|
83
83
|
When the change is a single-screen tweak, use this shortened list:
|
|
84
84
|
|
|
85
85
|
- [ ] Pulled 1–2 references before touching code
|
|
86
|
-
- [ ] Change respects
|
|
86
|
+
- [ ] Change respects stated brand direction from `DESIGN-CONTEXT.md` (no tone drift)
|
|
87
87
|
- [ ] Interactive element has all 8 states
|
|
88
88
|
- [ ] No item on the absolute-ban list (anti-patterns.md)
|
|
89
89
|
- [ ] Contrast AA
|
|
@@ -135,3 +135,30 @@ For flagship work:
|
|
|
135
135
|
8. **Reduced motion test.** Enable it at OS level. Functional animations preserved, spatial ones killed?
|
|
136
136
|
9. **Mobile test.** Real device or Chrome DevTools mobile emulation. Touch targets? Safe areas? Viewport zoom allowed?
|
|
137
137
|
10. **The AI-slop self-check** (see anti-patterns.md). Honest answer: would someone believe this was AI-generated? If yes, which elements? Fix those.
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Micro-Polish Check
|
|
142
|
+
Source: jakubkrehel/make-interfaces-feel-better (MIT)
|
|
143
|
+
|
|
144
|
+
Use this checklist after the main design review for pixel-level craft verification:
|
|
145
|
+
|
|
146
|
+
### Typography micro
|
|
147
|
+
- [ ] Headings use `text-wrap: balance`
|
|
148
|
+
- [ ] Body/caption uses `text-wrap: pretty` (or no wrap setting — not `balance`)
|
|
149
|
+
- [ ] Font smoothing applied at `:root` only, not per-element
|
|
150
|
+
- [ ] Dynamic numbers (counters, prices, timers) use `font-variant-numeric: tabular-nums`
|
|
151
|
+
|
|
152
|
+
### Surfaces
|
|
153
|
+
- [ ] Nested elements use concentric radius (`innerRadius = outerRadius − padding`)
|
|
154
|
+
- [ ] No same-radius parent+child within padded container (see BAN-10 same-radius-nested)
|
|
155
|
+
- [ ] Images have `outline: 1px solid rgba(0,0,0,0.08)` — no tinted outlines
|
|
156
|
+
- [ ] Interactive elements <40px have `::after` hit-area extension to 40×40
|
|
157
|
+
|
|
158
|
+
### Motion
|
|
159
|
+
- [ ] Press feedback uses `scale(0.96)` — not 0.95, not 0.97, not 0.98
|
|
160
|
+
- [ ] `AnimatePresence` on persistent UI has `initial={false}`
|
|
161
|
+
- [ ] Icon cross-fade spring has `bounce: 0`
|
|
162
|
+
- [ ] No `transition: all` anywhere (see BAN-12 transition-all)
|
|
163
|
+
- [ ] No `will-change: all` anywhere (see BAN-13 will-change-all)
|
|
164
|
+
- [ ] `prefers-reduced-motion` respected via `MotionConfig` or `useReducedMotion()`
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Component Benchmark Corpus
|
|
2
|
+
|
|
3
|
+
Per-component design specifications harvested from 18 major design systems.
|
|
4
|
+
Each spec is ≤350 lines, greppable, diff-friendly, and agent-consumable.
|
|
5
|
+
|
|
6
|
+
**Spec shape**: `TEMPLATE.md` — Purpose · Anatomy · Variants · States · Sizing ·
|
|
7
|
+
Typography · Keyboard/a11y · Motion · Do/Don't · Anti-patterns · Citations · Grep signatures
|
|
8
|
+
|
|
9
|
+
**Harvest source list**: `connections/design-corpora.md` (18 systems)
|
|
10
|
+
**Tooling**: `agents/component-benchmark-harvester.md` → `agents/component-benchmark-synthesizer.md`
|
|
11
|
+
**CLI**: `/gdd:benchmark <component>` — see `skills/benchmark/SKILL.md`
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Wave 1 — Inputs (foundational)
|
|
16
|
+
|
|
17
|
+
| Component | Spec | Purpose |
|
|
18
|
+
|-----------|------|---------|
|
|
19
|
+
| Button | [button.md](button.md) | Triggers actions; primary, secondary, ghost, destructive variants |
|
|
20
|
+
| Input | [input.md](input.md) | Single-line text entry with label, error, helper text |
|
|
21
|
+
| Select / Combobox | [select-combobox.md](select-combobox.md) | Choose one option from a list; keyboard-navigable dropdown |
|
|
22
|
+
| Checkbox | [checkbox.md](checkbox.md) | Binary or indeterminate choice; groupable with fieldset |
|
|
23
|
+
| Radio | [radio.md](radio.md) | Mutually exclusive choice within a group |
|
|
24
|
+
| Switch | [switch.md](switch.md) | Binary toggle with immediate effect (vs. checkbox form submission) |
|
|
25
|
+
| Link | [link.md](link.md) | Navigation anchor; inline or standalone; external-link pattern |
|
|
26
|
+
| Label | [label.md](label.md) | Accessible association between caption and form control |
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Wave 2 — Containers
|
|
31
|
+
|
|
32
|
+
| Component | Spec | Purpose |
|
|
33
|
+
|-----------|------|---------|
|
|
34
|
+
| Card | [card.md](card.md) | Contained content surface; clickable or static |
|
|
35
|
+
| Modal / Dialog | [modal-dialog.md](modal-dialog.md) | Blocking overlay with focus trap and backdrop |
|
|
36
|
+
| Drawer / Sheet | [drawer.md](drawer.md) | Side or bottom sliding panel |
|
|
37
|
+
| Popover | [popover.md](popover.md) | Anchored overlay; dismisses on outside-click or Escape |
|
|
38
|
+
| Tooltip | [tooltip.md](tooltip.md) | Hover/focus-triggered label; no interactive content |
|
|
39
|
+
| Accordion | [accordion.md](accordion.md) | Collapsible content sections; single or multi-open |
|
|
40
|
+
| Tabs | [tabs.md](tabs.md) | Horizontal/vertical tab navigation with keyboard support |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Wave 3 — Feedback *(Phase 17)*
|
|
45
|
+
|
|
46
|
+
| Component | Spec | Purpose |
|
|
47
|
+
|-----------|------|---------|
|
|
48
|
+
| Toast / Snackbar | — | Ephemeral status notification |
|
|
49
|
+
| Alert / Banner | — | Persistent inline status message |
|
|
50
|
+
| Progress | — | Linear and circular completion indicator |
|
|
51
|
+
| Skeleton | — | Loading placeholder matching content shape |
|
|
52
|
+
| Badge | — | Numeric or status indicator overlaid on another element |
|
|
53
|
+
| Chip / Tag | — | Compact, dismissible label |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Wave 4 — Navigation *(Phase 17)*
|
|
58
|
+
|
|
59
|
+
| Component | Spec | Purpose |
|
|
60
|
+
|-----------|------|---------|
|
|
61
|
+
| Breadcrumb | — | Hierarchical location trail |
|
|
62
|
+
| Pagination | — | Page-set navigation |
|
|
63
|
+
| Stepper | — | Sequential multi-step progress indicator |
|
|
64
|
+
| Navigation Menu | — | Top-level or sidebar navigation |
|
|
65
|
+
| Command Menu | — | Keyboard-first search + action launcher |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Wave 5 — Data & Advanced *(Phase 17)*
|
|
70
|
+
|
|
71
|
+
| Component | Spec | Purpose |
|
|
72
|
+
|-----------|------|---------|
|
|
73
|
+
| Table / Data Grid | — | Tabular data with sorting, filtering, selection |
|
|
74
|
+
| Date Picker | — | Calendar-based date/range selection |
|
|
75
|
+
| File Upload | — | Drag-drop or browse file input |
|
|
76
|
+
| Rich Text Editor | — | WYSIWYG content authoring |
|
|
77
|
+
| Virtualized List | — | Windowed rendering for large datasets |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Coverage Summary
|
|
82
|
+
|
|
83
|
+
| Wave | Specs | Status |
|
|
84
|
+
|------|-------|--------|
|
|
85
|
+
| Wave 1 — Inputs | 8 | v1.16.0 |
|
|
86
|
+
| Wave 2 — Containers | 7 | v1.16.0 |
|
|
87
|
+
| Wave 3 — Feedback | 6 | Phase 17 |
|
|
88
|
+
| Wave 4 — Navigation | 5 | Phase 17 |
|
|
89
|
+
| Wave 5 — Data & Advanced | 5 | Phase 17 |
|
|
90
|
+
| **Total** | **31** | — |
|