@rune-kit/rune 2.1.1

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.
Files changed (155) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +357 -0
  3. package/agents/.gitkeep +0 -0
  4. package/agents/architect.md +29 -0
  5. package/agents/asset-creator.md +11 -0
  6. package/agents/audit.md +11 -0
  7. package/agents/autopsy.md +11 -0
  8. package/agents/brainstorm.md +11 -0
  9. package/agents/browser-pilot.md +11 -0
  10. package/agents/coder.md +29 -0
  11. package/agents/completion-gate.md +11 -0
  12. package/agents/constraint-check.md +11 -0
  13. package/agents/context-engine.md +11 -0
  14. package/agents/cook.md +11 -0
  15. package/agents/db.md +11 -0
  16. package/agents/debug.md +11 -0
  17. package/agents/dependency-doctor.md +11 -0
  18. package/agents/deploy.md +11 -0
  19. package/agents/design.md +11 -0
  20. package/agents/docs-seeker.md +11 -0
  21. package/agents/fix.md +11 -0
  22. package/agents/hallucination-guard.md +11 -0
  23. package/agents/incident.md +11 -0
  24. package/agents/integrity-check.md +11 -0
  25. package/agents/journal.md +11 -0
  26. package/agents/launch.md +11 -0
  27. package/agents/logic-guardian.md +11 -0
  28. package/agents/marketing.md +11 -0
  29. package/agents/onboard.md +11 -0
  30. package/agents/perf.md +11 -0
  31. package/agents/plan.md +11 -0
  32. package/agents/preflight.md +11 -0
  33. package/agents/problem-solver.md +11 -0
  34. package/agents/rescue.md +11 -0
  35. package/agents/research.md +11 -0
  36. package/agents/researcher.md +29 -0
  37. package/agents/review-intake.md +11 -0
  38. package/agents/review.md +11 -0
  39. package/agents/reviewer.md +28 -0
  40. package/agents/safeguard.md +11 -0
  41. package/agents/sast.md +11 -0
  42. package/agents/scanner.md +28 -0
  43. package/agents/scope-guard.md +11 -0
  44. package/agents/scout.md +11 -0
  45. package/agents/sentinel.md +11 -0
  46. package/agents/sequential-thinking.md +11 -0
  47. package/agents/session-bridge.md +11 -0
  48. package/agents/skill-forge.md +11 -0
  49. package/agents/skill-router.md +11 -0
  50. package/agents/surgeon.md +11 -0
  51. package/agents/team.md +11 -0
  52. package/agents/test.md +11 -0
  53. package/agents/trend-scout.md +11 -0
  54. package/agents/verification.md +11 -0
  55. package/agents/video-creator.md +11 -0
  56. package/agents/watchdog.md +11 -0
  57. package/agents/worktree.md +11 -0
  58. package/commands/.gitkeep +0 -0
  59. package/commands/rune.md +168 -0
  60. package/compiler/__tests__/openclaw-adapter.test.js +140 -0
  61. package/compiler/__tests__/parser.test.js +55 -0
  62. package/compiler/adapters/antigravity.js +59 -0
  63. package/compiler/adapters/claude.js +37 -0
  64. package/compiler/adapters/cursor.js +67 -0
  65. package/compiler/adapters/generic.js +60 -0
  66. package/compiler/adapters/index.js +45 -0
  67. package/compiler/adapters/openclaw.js +150 -0
  68. package/compiler/adapters/windsurf.js +60 -0
  69. package/compiler/bin/rune.js +288 -0
  70. package/compiler/doctor.js +153 -0
  71. package/compiler/emitter.js +240 -0
  72. package/compiler/parser.js +208 -0
  73. package/compiler/transformer.js +69 -0
  74. package/compiler/transforms/branding.js +27 -0
  75. package/compiler/transforms/cross-references.js +29 -0
  76. package/compiler/transforms/frontmatter.js +38 -0
  77. package/compiler/transforms/hooks.js +68 -0
  78. package/compiler/transforms/subagents.js +36 -0
  79. package/compiler/transforms/tool-names.js +60 -0
  80. package/contexts/dev.md +34 -0
  81. package/contexts/research.md +43 -0
  82. package/contexts/review.md +55 -0
  83. package/extensions/ai-ml/PACK.md +517 -0
  84. package/extensions/analytics/PACK.md +557 -0
  85. package/extensions/backend/PACK.md +678 -0
  86. package/extensions/chrome-ext/PACK.md +995 -0
  87. package/extensions/content/PACK.md +381 -0
  88. package/extensions/devops/PACK.md +520 -0
  89. package/extensions/ecommerce/PACK.md +280 -0
  90. package/extensions/gamedev/PACK.md +393 -0
  91. package/extensions/mobile/PACK.md +273 -0
  92. package/extensions/saas/PACK.md +805 -0
  93. package/extensions/security/PACK.md +536 -0
  94. package/extensions/trading/PACK.md +597 -0
  95. package/extensions/ui/PACK.md +947 -0
  96. package/package.json +47 -0
  97. package/skills/.gitkeep +0 -0
  98. package/skills/adversary/SKILL.md +271 -0
  99. package/skills/asset-creator/SKILL.md +157 -0
  100. package/skills/audit/SKILL.md +466 -0
  101. package/skills/autopsy/SKILL.md +200 -0
  102. package/skills/ba/SKILL.md +279 -0
  103. package/skills/brainstorm/SKILL.md +266 -0
  104. package/skills/browser-pilot/SKILL.md +168 -0
  105. package/skills/completion-gate/SKILL.md +151 -0
  106. package/skills/constraint-check/SKILL.md +165 -0
  107. package/skills/context-engine/SKILL.md +176 -0
  108. package/skills/cook/SKILL.md +636 -0
  109. package/skills/db/SKILL.md +256 -0
  110. package/skills/debug/SKILL.md +240 -0
  111. package/skills/dependency-doctor/SKILL.md +235 -0
  112. package/skills/deploy/SKILL.md +174 -0
  113. package/skills/design/DESIGN-REFERENCE.md +365 -0
  114. package/skills/design/SKILL.md +462 -0
  115. package/skills/doc-processor/SKILL.md +254 -0
  116. package/skills/docs/SKILL.md +336 -0
  117. package/skills/docs-seeker/SKILL.md +166 -0
  118. package/skills/fix/SKILL.md +192 -0
  119. package/skills/git/SKILL.md +285 -0
  120. package/skills/hallucination-guard/SKILL.md +204 -0
  121. package/skills/incident/SKILL.md +241 -0
  122. package/skills/integrity-check/SKILL.md +169 -0
  123. package/skills/journal/SKILL.md +190 -0
  124. package/skills/launch/SKILL.md +330 -0
  125. package/skills/logic-guardian/SKILL.md +240 -0
  126. package/skills/marketing/SKILL.md +229 -0
  127. package/skills/mcp-builder/SKILL.md +311 -0
  128. package/skills/onboard/SKILL.md +298 -0
  129. package/skills/perf/SKILL.md +297 -0
  130. package/skills/plan/SKILL.md +520 -0
  131. package/skills/preflight/SKILL.md +231 -0
  132. package/skills/problem-solver/SKILL.md +284 -0
  133. package/skills/rescue/SKILL.md +434 -0
  134. package/skills/research/SKILL.md +122 -0
  135. package/skills/review/SKILL.md +354 -0
  136. package/skills/review-intake/SKILL.md +222 -0
  137. package/skills/safeguard/SKILL.md +188 -0
  138. package/skills/sast/SKILL.md +190 -0
  139. package/skills/scaffold/SKILL.md +276 -0
  140. package/skills/scope-guard/SKILL.md +150 -0
  141. package/skills/scout/SKILL.md +232 -0
  142. package/skills/sentinel/SKILL.md +320 -0
  143. package/skills/sentinel-env/SKILL.md +226 -0
  144. package/skills/sequential-thinking/SKILL.md +234 -0
  145. package/skills/session-bridge/SKILL.md +287 -0
  146. package/skills/skill-forge/SKILL.md +317 -0
  147. package/skills/skill-router/SKILL.md +267 -0
  148. package/skills/surgeon/SKILL.md +203 -0
  149. package/skills/team/SKILL.md +397 -0
  150. package/skills/test/SKILL.md +271 -0
  151. package/skills/trend-scout/SKILL.md +145 -0
  152. package/skills/verification/SKILL.md +201 -0
  153. package/skills/video-creator/SKILL.md +201 -0
  154. package/skills/watchdog/SKILL.md +166 -0
  155. package/skills/worktree/SKILL.md +140 -0
@@ -0,0 +1,365 @@
1
+ # Design Reference — Rune Baseline
2
+
3
+ Public design knowledge for the `design` skill. Universal best practices — not personal taste.
4
+
5
+ > **Override**: Users can create `~/.claude/docs/design-dna.md` to override any section with their own curated preferences. The design skill reads this file first if it exists, then falls back to this baseline.
6
+
7
+ ---
8
+
9
+ ## 1. Font Pairing Guide
10
+
11
+ Choose based on product domain. Avoid using a single font family for everything.
12
+
13
+ ### Recommended Pairings
14
+
15
+ | Name | Headline | Body | Best For |
16
+ |------|----------|------|----------|
17
+ | **Tech Modern** | Space Grotesk 700 | Inter 400/500 | SaaS, Developer Tools, AI |
18
+ | **Financial Trust** | IBM Plex Sans 600 | IBM Plex Sans 400 | Banking, Insurance, Enterprise |
19
+ | **Startup Bold** | Satoshi 700 | DM Sans 400 | Startups, Products, Landing |
20
+ | **Editorial Clean** | Playfair Display 700 | Source Sans 3 400 | Blogs, Magazines, Portfolios |
21
+ | **Medical Clear** | Inter 600 | Inter 400 | Healthcare, Government, Accessibility-first |
22
+ | **E-commerce Warm** | DM Serif Display 400 | DM Sans 400 | Retail, Lifestyle, Fashion |
23
+ | **Gaming Bold** | Rajdhani 700 | Exo 2 400 | Gaming, Esports, Entertainment |
24
+ | **Data Dense** | Inter 600 | Inter 400 | Dashboards, Analytics, BI |
25
+
26
+ ### Monospace Fonts (for numeric data)
27
+
28
+ | Font | Best For |
29
+ |------|----------|
30
+ | JetBrains Mono 700 | Financial data, prices, P&L, metrics |
31
+ | Fira Code 500 | Code blocks, terminal output |
32
+ | IBM Plex Mono 400 | Tables, technical documentation |
33
+
34
+ ### Rules
35
+
36
+ - Financial numbers: **always** monospace + bold — prevents layout shift and signals precision
37
+ - Body text: minimum 14px, prefer 16px for readability
38
+ - Line height: 1.5 for body, 1.2 for headings
39
+ - Max content width: 720px for prose, 1280px for dashboards
40
+ - Heading scale ratio: ~1.25 (minor third) for dense UI, ~1.333 (perfect fourth) for marketing
41
+
42
+ ---
43
+
44
+ ## 2. Chart Type Selection
45
+
46
+ Match chart type to the data story, not to what looks fancy.
47
+
48
+ | Data Story | Chart Type | Notes |
49
+ |------------|-----------|-------|
50
+ | **Trend over time** | Line chart, Area chart | Area for volume, Line for precision |
51
+ | **Comparison** | Bar chart (vertical or horizontal) | Horizontal for long labels |
52
+ | **Part of whole** | Donut, Treemap | Donut for ≤6 segments, Treemap for hierarchical |
53
+ | **Distribution** | Histogram, Box plot | Box plot for comparing distributions |
54
+ | **Correlation** | Scatter plot | Always include a data table fallback for accessibility |
55
+ | **Ranking** | Horizontal bar | Sort by value, not alphabetically |
56
+ | **Flow/Process** | Sankey, Funnel | Funnel for conversion, Sankey for multi-path |
57
+ | **Geographic** | Choropleth map | Pair with data table (maps are hard to read precisely) |
58
+ | **Real-time** | Streaming line/area | Include pause button, auto-scroll, last-updated timestamp |
59
+ | **Financial** | Candlestick (OHLC) | Use dedicated charting lib (Lightweight Charts, TradingView) |
60
+ | **KPI/Metric** | Single number + sparkline | Large number, small contextual trend line |
61
+
62
+ ### Chart Accessibility
63
+
64
+ - Never rely on color alone — use patterns, labels, or both
65
+ - Provide data table alternative for screen readers
66
+ - Minimum contrast between adjacent data series
67
+ - Include clear axis labels and units
68
+
69
+ ### Recommended Libraries
70
+
71
+ | Platform | Library | Notes |
72
+ |----------|---------|-------|
73
+ | React | Recharts | Simple, composable, good defaults |
74
+ | React (advanced) | Nivo | D3-based, rich chart types |
75
+ | Financial | Lightweight Charts (TradingView) | Candlestick, real-time optimized |
76
+ | General web | Chart.js | Lightweight, canvas-based |
77
+ | Data-heavy | Observable Plot | Statistical charts, D3-based |
78
+
79
+ ---
80
+
81
+ ## 3. Component Architecture
82
+
83
+ Three-layer pattern prevents component bloat.
84
+
85
+ ```
86
+ ui/ → Primitives (Button, Input, Dialog, Card, Badge, Avatar)
87
+ No business logic. Props = visual variants only.
88
+ Example: <Button variant="primary" size="md" />
89
+
90
+ components/ → Composed (PriceDisplay, UserCard, NotificationBell, SearchBar)
91
+ Combines 2-5 primitives with light business logic.
92
+ Example: <PriceDisplay value={42.50} currency="USD" change={+2.3} />
93
+
94
+ features/ → Page modules (DashboardOverview, SettingsPanel, CheckoutFlow)
95
+ Full business logic, data fetching, state management.
96
+ Never imported by ui/ or components/.
97
+ ```
98
+
99
+ ### Rules
100
+
101
+ - Primitives: <100 LOC, ≤5 props (not counting `className`)
102
+ - If a component has >8 boolean props → refactor to compound pattern
103
+ - If a component has >3 conditional renders → split into variants
104
+ - Features never import from other features (use shared components/ instead)
105
+
106
+ ---
107
+
108
+ ## 4. Color Fundamentals
109
+
110
+ Not specific palettes — principles for choosing colors.
111
+
112
+ ### Semantic Color Roles
113
+
114
+ Every design system needs these 10 tokens minimum:
115
+
116
+ ```
117
+ Background: --bg-base, --bg-surface, --bg-elevated
118
+ Text: --text-primary, --text-secondary
119
+ Border: --border-default
120
+ Interactive: --accent (brand/primary action)
121
+ Status: --success, --danger, --warning
122
+ ```
123
+
124
+ ### Domain-Specific Color Rules
125
+
126
+ | Domain | Key Rule |
127
+ |--------|----------|
128
+ | Finance/Trading | Profit/Loss colors are semantic signals, NOT brand. Reserve green/red exclusively for data meaning. |
129
+ | Healthcare | Red = clinical alert ONLY. Never decorative red. |
130
+ | E-commerce | CTA button must be highest-contrast element on page. |
131
+ | Developer Tools | Dark mode default. Accent colors should complement syntax highlighting, not clash. |
132
+ | AI/ML | Purple/violet is acceptable (established AI signal). Not elsewhere. |
133
+
134
+ ### Contrast Requirements (WCAG 2.2 AA)
135
+
136
+ | Element | Minimum Ratio |
137
+ |---------|---------------|
138
+ | Normal text (<18px) | 4.5:1 |
139
+ | Large text (≥18px bold or ≥24px) | 3:1 |
140
+ | UI components (borders, icons) | 3:1 |
141
+ | Focus indicator | 3:1 against adjacent colors |
142
+
143
+ ### Dark Mode Principles
144
+
145
+ - Don't just invert colors — adjust saturation (desaturate in dark mode)
146
+ - Surface elevation = lighter shade (not darker)
147
+ - Avoid pure white (#fff) text on dark — use #f0f0f0 or similar
148
+ - Test both modes — don't treat dark mode as afterthought
149
+
150
+ ---
151
+
152
+ ## 5. Spacing & Layout
153
+
154
+ ### 8px Grid
155
+
156
+ ```
157
+ xs: 4px — tight inline spacing
158
+ sm: 8px — default gap between related elements
159
+ md: 16px — section padding, card padding
160
+ lg: 24px — section gaps
161
+ xl: 32px — major section breaks
162
+ 2xl: 48px — page section spacing
163
+ 3xl: 64px — hero/above-fold vertical rhythm
164
+ ```
165
+
166
+ ### Border Radius
167
+
168
+ ```
169
+ sm: 6px — inputs, small chips
170
+ md: 8px — cards, containers
171
+ lg: 12px — modals, large surfaces
172
+ xl: 16px — hero cards, feature sections
173
+ full: 9999px — pills, avatars, circular buttons
174
+ ```
175
+
176
+ ### Responsive Breakpoints
177
+
178
+ ```
179
+ sm: 640px — mobile landscape
180
+ md: 768px — tablet portrait
181
+ lg: 1024px — tablet landscape / small desktop
182
+ xl: 1280px — desktop
183
+ 2xl: 1536px — large desktop
184
+ ```
185
+
186
+ - Design mobile-first (min-width media queries)
187
+ - Test at: 375px (iPhone SE), 768px, 1024px, 1440px
188
+ - Content max-width: 1280px (dashboard), 720px (prose)
189
+
190
+ ---
191
+
192
+ ## 6. Interaction Patterns
193
+
194
+ ### Micro-Interactions (Universal)
195
+
196
+ | Trigger | Animation | Duration | Easing |
197
+ |---------|-----------|----------|--------|
198
+ | Hover on card | scale(1.02) + shadow lift | 200ms | ease-out |
199
+ | Button click | scale(0.97) | 100ms | ease-in |
200
+ | Page transition | fade + slide 8px | 200ms | ease |
201
+ | Data loading | Skeleton shimmer | loop | linear |
202
+ | Toast notification | slide-in from edge | 300ms | cubic-bezier(0.34, 1.56, 0.64, 1) |
203
+ | Modal open | fade bg + scale content from 0.95 | 200ms | ease-out |
204
+
205
+ ### Real-Time Data UX
206
+
207
+ - Price/value updates: flash background color briefly (green up, red down, 600ms fade)
208
+ - Live indicator: pulsing green dot (CSS animation, not JS)
209
+ - Auto-updating lists: new items slide in from top, don't jump
210
+ - Always show "Last updated: X seconds ago" for stale data awareness
211
+ - Pause/resume button for streaming data
212
+
213
+ ### Loading States
214
+
215
+ | Duration | Pattern |
216
+ |----------|---------|
217
+ | <300ms | No indicator (perceived as instant) |
218
+ | 300ms–2s | Skeleton loader or spinner |
219
+ | 2s–10s | Progress bar or step indicator |
220
+ | >10s | Progress + estimated time + cancel button |
221
+
222
+ ### Form Patterns
223
+
224
+ - Inline validation (on blur, not on every keystroke)
225
+ - Disable submit button during async operation + show spinner
226
+ - Error messages below the field, not in alert dialogs
227
+ - Success: brief toast (3s auto-dismiss) — don't redirect immediately
228
+
229
+ ---
230
+
231
+ ## 7. UX Checklist
232
+
233
+ ### Critical (Block Ship)
234
+
235
+ - [ ] Color contrast ≥ 4.5:1 for all text
236
+ - [ ] Focus-visible ring on ALL interactive elements (never `outline: none` alone)
237
+ - [ ] Touch targets ≥ 44×44px with 8px gap between targets
238
+ - [ ] `aria-label` on ALL icon-only buttons
239
+ - [ ] Every `<input>` has associated `<label>` or `aria-label`
240
+ - [ ] Semantic HTML (`<button>` not `<div onClick>`, `<nav>`, `<main>`, `<section>`)
241
+ - [ ] `aria-hidden="true"` on decorative icons/images
242
+ - [ ] `cursor-pointer` on all clickable non-button elements
243
+ - [ ] Don't convey information by color alone — add icon, text, or pattern
244
+
245
+ ### High (Fix Before Launch)
246
+
247
+ - [ ] Empty state, error state, loading state for all async data
248
+ - [ ] Disable + spinner on async buttons (prevent double submit)
249
+ - [ ] Virtualize lists with >50 items (react-window, @tanstack/virtual)
250
+ - [ ] `prefers-reduced-motion` respected for all animations
251
+ - [ ] Dark mode support (or explicit documented reason why not)
252
+ - [ ] Responsive tested at 375px, 768px, 1024px, 1440px
253
+ - [ ] No layout shift on data load (reserve space with skeletons)
254
+ - [ ] Error messages are specific and actionable (not "Something went wrong")
255
+
256
+ ### Medium (Polish)
257
+
258
+ - [ ] Skeleton loaders match actual content shape (not generic boxes)
259
+ - [ ] Hover states on all interactive elements
260
+ - [ ] Keyboard navigation works for all flows (Tab, Enter, Escape)
261
+ - [ ] Command palette (Cmd+K / Ctrl+K) for power users (SaaS/DevTools)
262
+ - [ ] Number count-up animation on KPI cards (first load only)
263
+ - [ ] Toast notifications positioned consistently (bottom-right recommended)
264
+ - [ ] Page titles update on navigation (`<title>` or document.title)
265
+
266
+ ---
267
+
268
+ ## 8. CSS Patterns
269
+
270
+ ### Glassmorphism
271
+
272
+ ```css
273
+ .glass {
274
+ background: rgba(255, 255, 255, 0.05);
275
+ backdrop-filter: blur(12px);
276
+ -webkit-backdrop-filter: blur(12px);
277
+ border: 1px solid rgba(255, 255, 255, 0.1);
278
+ border-radius: 16px;
279
+ }
280
+ ```
281
+
282
+ ### Shadows
283
+
284
+ ```css
285
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
286
+ --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07);
287
+ --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
288
+ --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.15);
289
+ ```
290
+
291
+ ### Animation Timing
292
+
293
+ ```css
294
+ --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
295
+ --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
296
+ --duration-fast: 150ms;
297
+ --duration-normal: 250ms;
298
+ --duration-slow: 350ms;
299
+ ```
300
+
301
+ ### Reduced Motion
302
+
303
+ ```css
304
+ @media (prefers-reduced-motion: reduce) {
305
+ *, *::before, *::after {
306
+ animation-duration: 0.01ms !important;
307
+ animation-iteration-count: 1 !important;
308
+ transition-duration: 0.01ms !important;
309
+ scroll-behavior: auto !important;
310
+ }
311
+ }
312
+ ```
313
+
314
+ ---
315
+
316
+ ## 9. Number & Currency Formatting
317
+
318
+ ```typescript
319
+ // Always use Intl.NumberFormat — never manual toFixed()
320
+ const fmtCurrency = (v: number, currency = 'USD') =>
321
+ new Intl.NumberFormat('en-US', {
322
+ style: 'currency',
323
+ currency,
324
+ minimumFractionDigits: 2
325
+ }).format(v)
326
+
327
+ const fmtCompact = (v: number) =>
328
+ new Intl.NumberFormat('en-US', {
329
+ notation: 'compact',
330
+ maximumFractionDigits: 1
331
+ }).format(v)
332
+
333
+ const fmtPercent = (v: number) =>
334
+ new Intl.NumberFormat('en-US', {
335
+ style: 'percent',
336
+ minimumFractionDigits: 2
337
+ }).format(v / 100)
338
+ ```
339
+
340
+ ### Rules
341
+
342
+ - Financial values: always 2 decimal places, monospace font
343
+ - Large numbers: compact notation (1.2K, 3.4M) for display, full on hover
344
+ - Percentages: include sign (+2.34%, -1.50%)
345
+ - Variance coloring: positive = success color, negative = danger color
346
+ - Add directional icon alongside color: ▲ up, ▼ down (don't rely on color alone)
347
+
348
+ ---
349
+
350
+ ## 10. Anti-Pattern Signatures (AI-Generated UI)
351
+
352
+ These patterns signal "this was generated by AI, not designed by a human." Avoid them.
353
+
354
+ | Anti-Pattern | Why It Fails | Fix |
355
+ |-------------|-------------|-----|
356
+ | Purple-to-blue gradient hero | Default AI output, no design intent | Choose domain-appropriate palette |
357
+ | Card grid monotony | Every section is equal cards in a grid | Vary layout: hero → features → testimonials → CTA |
358
+ | Centered everything | Breaks left-to-right reading flow | Left-align body text, center only headings/CTAs |
359
+ | Inter-only typography | Zero personality, signals laziness | Use a pairing: display font + body font |
360
+ | Generic stock photos | Instantly recognizable as filler | Use illustrations, icons, or real screenshots |
361
+ | Animations on everything | Distracting, delays information access | Animate entry once, keep data static |
362
+ | Missing states | No empty, error, or loading states | Design all 4 states: default, loading, empty, error |
363
+ | Enormous padding | Wastes space, signals no content | Tighter spacing in data-dense UI, generous only in marketing |
364
+ | Rainbow status colors | Red, yellow, green, blue, purple all on one dashboard | Max 3 status colors per context |
365
+ | Fixed-width everything | Doesn't respond to viewport | Fluid widths, container queries where appropriate |