@rune-kit/rune 2.8.0 → 2.11.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.
Files changed (287) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +68 -34
  3. package/agents/adversary.md +27 -0
  4. package/agents/architect.md +19 -29
  5. package/agents/asset-creator.md +18 -4
  6. package/agents/audit.md +25 -4
  7. package/agents/autopsy.md +19 -4
  8. package/agents/ba.md +35 -0
  9. package/agents/brainstorm.md +31 -4
  10. package/agents/browser-pilot.md +21 -4
  11. package/agents/coder.md +21 -29
  12. package/agents/completion-gate.md +20 -4
  13. package/agents/constraint-check.md +18 -4
  14. package/agents/context-engine.md +22 -4
  15. package/agents/context-pack.md +32 -0
  16. package/agents/cook.md +41 -4
  17. package/agents/db.md +19 -4
  18. package/agents/debug.md +33 -4
  19. package/agents/dependency-doctor.md +20 -4
  20. package/agents/deploy.md +27 -4
  21. package/agents/design.md +22 -4
  22. package/agents/doc-processor.md +27 -0
  23. package/agents/docs-seeker.md +19 -4
  24. package/agents/docs.md +31 -0
  25. package/agents/fix.md +37 -4
  26. package/agents/git.md +29 -0
  27. package/agents/hallucination-guard.md +20 -4
  28. package/agents/incident.md +21 -4
  29. package/agents/integrity-check.md +18 -4
  30. package/agents/journal.md +19 -4
  31. package/agents/launch.md +32 -4
  32. package/agents/logic-guardian.md +26 -11
  33. package/agents/marketing.md +23 -4
  34. package/agents/mcp-builder.md +26 -0
  35. package/agents/neural-memory.md +30 -0
  36. package/agents/onboard.md +22 -4
  37. package/agents/perf.md +21 -4
  38. package/agents/plan.md +29 -4
  39. package/agents/preflight.md +22 -4
  40. package/agents/problem-solver.md +20 -4
  41. package/agents/rescue.md +23 -4
  42. package/agents/research.md +19 -4
  43. package/agents/researcher.md +19 -29
  44. package/agents/retro.md +32 -0
  45. package/agents/review-intake.md +20 -4
  46. package/agents/review.md +32 -4
  47. package/agents/reviewer.md +20 -28
  48. package/agents/safeguard.md +19 -4
  49. package/agents/sast.md +18 -4
  50. package/agents/scaffold.md +41 -0
  51. package/agents/scanner.md +19 -28
  52. package/agents/scope-guard.md +18 -4
  53. package/agents/scout.md +23 -4
  54. package/agents/sentinel-env.md +26 -0
  55. package/agents/sentinel.md +33 -4
  56. package/agents/sequential-thinking.md +20 -4
  57. package/agents/session-bridge.md +24 -4
  58. package/agents/skill-forge.md +22 -4
  59. package/agents/skill-router.md +26 -4
  60. package/agents/slides.md +24 -0
  61. package/agents/surgeon.md +19 -4
  62. package/agents/team.md +30 -4
  63. package/agents/test.md +36 -4
  64. package/agents/trend-scout.md +17 -4
  65. package/agents/verification.md +20 -4
  66. package/agents/video-creator.md +20 -4
  67. package/agents/watchdog.md +19 -4
  68. package/agents/worktree.md +17 -4
  69. package/commands/rune.md +168 -168
  70. package/compiler/__tests__/analytics.test.js +370 -0
  71. package/compiler/adapters/openclaw.js +2 -2
  72. package/compiler/analytics.js +385 -0
  73. package/compiler/bin/rune.js +68 -2
  74. package/compiler/dashboard.js +883 -0
  75. package/compiler/transforms/branding.js +1 -1
  76. package/contexts/dev.md +34 -34
  77. package/contexts/research.md +43 -43
  78. package/contexts/review.md +55 -55
  79. package/extensions/ai-ml/PACK.md +88 -88
  80. package/extensions/ai-ml/skills/ai-agents.md +172 -172
  81. package/extensions/ai-ml/skills/code-sandbox.md +187 -187
  82. package/extensions/ai-ml/skills/deep-research.md +146 -146
  83. package/extensions/ai-ml/skills/embedding-search.md +66 -66
  84. package/extensions/ai-ml/skills/fine-tuning-guide.md +74 -74
  85. package/extensions/ai-ml/skills/llm-architect.md +125 -125
  86. package/extensions/ai-ml/skills/llm-integration.md +64 -64
  87. package/extensions/ai-ml/skills/prompt-patterns.md +72 -72
  88. package/extensions/ai-ml/skills/rag-patterns.md +66 -66
  89. package/extensions/ai-ml/skills/web-extraction.md +114 -114
  90. package/extensions/analytics/PACK.md +92 -92
  91. package/extensions/analytics/skills/ab-testing.md +72 -72
  92. package/extensions/analytics/skills/dashboard-patterns.md +83 -83
  93. package/extensions/analytics/skills/data-validation.md +68 -68
  94. package/extensions/analytics/skills/funnel-analysis.md +81 -81
  95. package/extensions/analytics/skills/sql-patterns.md +57 -57
  96. package/extensions/analytics/skills/statistical-analysis.md +79 -79
  97. package/extensions/analytics/skills/tracking-setup.md +71 -71
  98. package/extensions/backend/PACK.md +104 -104
  99. package/extensions/backend/skills/api-patterns.md +84 -84
  100. package/extensions/backend/skills/async-pipeline.md +193 -193
  101. package/extensions/backend/skills/auth-patterns.md +97 -97
  102. package/extensions/backend/skills/background-jobs.md +133 -133
  103. package/extensions/backend/skills/caching-patterns.md +108 -108
  104. package/extensions/backend/skills/cli-generation.md +133 -133
  105. package/extensions/backend/skills/database-patterns.md +87 -87
  106. package/extensions/backend/skills/middleware-patterns.md +104 -104
  107. package/extensions/chrome-ext/PACK.md +93 -93
  108. package/extensions/chrome-ext/skills/cws-preflight.md +143 -143
  109. package/extensions/chrome-ext/skills/cws-publish.md +104 -104
  110. package/extensions/chrome-ext/skills/ext-ai-integration.md +251 -251
  111. package/extensions/chrome-ext/skills/ext-messaging.md +139 -139
  112. package/extensions/chrome-ext/skills/ext-storage.md +133 -133
  113. package/extensions/chrome-ext/skills/mv3-scaffold.md +164 -164
  114. package/extensions/content/PACK.md +96 -96
  115. package/extensions/content/skills/blog-patterns.md +88 -88
  116. package/extensions/content/skills/cms-integration.md +131 -131
  117. package/extensions/content/skills/content-scoring.md +107 -107
  118. package/extensions/content/skills/i18n.md +83 -83
  119. package/extensions/content/skills/mdx-authoring.md +137 -137
  120. package/extensions/content/skills/reference.md +1014 -1014
  121. package/extensions/content/skills/seo-patterns.md +67 -67
  122. package/extensions/content/skills/video-repurpose.md +153 -153
  123. package/extensions/devops/PACK.md +101 -101
  124. package/extensions/devops/skills/chaos-testing.md +67 -67
  125. package/extensions/devops/skills/ci-cd.md +75 -75
  126. package/extensions/devops/skills/docker.md +58 -58
  127. package/extensions/devops/skills/edge-serverless.md +163 -163
  128. package/extensions/devops/skills/infra-as-code.md +158 -158
  129. package/extensions/devops/skills/kubernetes.md +110 -110
  130. package/extensions/devops/skills/monitoring.md +57 -57
  131. package/extensions/devops/skills/server-setup.md +64 -64
  132. package/extensions/devops/skills/ssl-domain.md +42 -42
  133. package/extensions/ecommerce/PACK.md +116 -116
  134. package/extensions/ecommerce/skills/cart-system.md +79 -79
  135. package/extensions/ecommerce/skills/inventory-mgmt.md +102 -102
  136. package/extensions/ecommerce/skills/order-management.md +126 -126
  137. package/extensions/ecommerce/skills/payment-integration.md +472 -472
  138. package/extensions/ecommerce/skills/shopify-dev.md +69 -69
  139. package/extensions/ecommerce/skills/subscription-billing.md +93 -93
  140. package/extensions/ecommerce/skills/tax-compliance.md +117 -117
  141. package/extensions/gamedev/PACK.md +142 -142
  142. package/extensions/gamedev/skills/asset-pipeline.md +74 -74
  143. package/extensions/gamedev/skills/audio-system.md +129 -129
  144. package/extensions/gamedev/skills/camera-system.md +87 -87
  145. package/extensions/gamedev/skills/ecs.md +98 -98
  146. package/extensions/gamedev/skills/game-loops.md +72 -72
  147. package/extensions/gamedev/skills/input-system.md +199 -199
  148. package/extensions/gamedev/skills/multiplayer.md +180 -180
  149. package/extensions/gamedev/skills/particles.md +105 -105
  150. package/extensions/gamedev/skills/physics-engine.md +89 -89
  151. package/extensions/gamedev/skills/scene-management.md +146 -146
  152. package/extensions/gamedev/skills/threejs-patterns.md +90 -90
  153. package/extensions/gamedev/skills/webgl.md +71 -71
  154. package/extensions/mobile/PACK.md +106 -106
  155. package/extensions/mobile/skills/app-store-connect.md +152 -152
  156. package/extensions/mobile/skills/app-store-prep.md +66 -66
  157. package/extensions/mobile/skills/deep-linking.md +109 -109
  158. package/extensions/mobile/skills/flutter.md +60 -60
  159. package/extensions/mobile/skills/ios-build-pipeline.md +142 -142
  160. package/extensions/mobile/skills/native-bridge.md +66 -66
  161. package/extensions/mobile/skills/ota-updates.md +97 -97
  162. package/extensions/mobile/skills/push-notifications.md +111 -111
  163. package/extensions/mobile/skills/react-native.md +82 -82
  164. package/extensions/saas/PACK.md +116 -116
  165. package/extensions/saas/skills/billing-integration.md +200 -200
  166. package/extensions/saas/skills/feature-flags.md +130 -130
  167. package/extensions/saas/skills/multi-tenant.md +103 -103
  168. package/extensions/saas/skills/onboarding-flow.md +139 -139
  169. package/extensions/saas/skills/subscription-flow.md +95 -95
  170. package/extensions/saas/skills/team-management.md +144 -144
  171. package/extensions/security/PACK.md +99 -99
  172. package/extensions/security/skills/api-security.md +140 -140
  173. package/extensions/security/skills/compliance.md +68 -68
  174. package/extensions/security/skills/owasp-audit.md +64 -64
  175. package/extensions/security/skills/pentest-patterns.md +77 -77
  176. package/extensions/security/skills/secret-mgmt.md +65 -65
  177. package/extensions/security/skills/supply-chain.md +65 -65
  178. package/extensions/trading/PACK.md +80 -80
  179. package/extensions/trading/skills/chart-components.md +55 -55
  180. package/extensions/trading/skills/experiment-loop.md +125 -125
  181. package/extensions/trading/skills/fintech-patterns.md +47 -47
  182. package/extensions/trading/skills/indicator-library.md +58 -58
  183. package/extensions/trading/skills/quant-analysis.md +111 -111
  184. package/extensions/trading/skills/realtime-data.md +58 -58
  185. package/extensions/trading/skills/trade-logic.md +104 -104
  186. package/extensions/ui/PACK.md +130 -130
  187. package/extensions/ui/skills/a11y-audit.md +91 -91
  188. package/extensions/ui/skills/animation-patterns.md +127 -106
  189. package/extensions/ui/skills/component-patterns.md +100 -75
  190. package/extensions/ui/skills/design-decision.md +108 -108
  191. package/extensions/ui/skills/design-system.md +68 -68
  192. package/extensions/ui/skills/landing-patterns.md +155 -155
  193. package/extensions/ui/skills/palette-picker.md +173 -173
  194. package/extensions/ui/skills/react-health.md +90 -90
  195. package/extensions/ui/skills/type-system.md +125 -125
  196. package/extensions/ui/skills/web-vitals.md +153 -153
  197. package/extensions/zalo/PACK.md +145 -145
  198. package/extensions/zalo/skills/zalo-oa-mcp.md +317 -317
  199. package/extensions/zalo/skills/zalo-oa-messaging.md +429 -429
  200. package/extensions/zalo/skills/zalo-oa-setup.md +236 -236
  201. package/extensions/zalo/skills/zalo-oa-webhook.md +189 -189
  202. package/extensions/zalo/skills/zalo-personal-messaging.md +194 -194
  203. package/extensions/zalo/skills/zalo-personal-setup.md +153 -153
  204. package/extensions/zalo/skills/zalo-rate-guard.md +219 -219
  205. package/hooks/auto-format/index.cjs +48 -48
  206. package/hooks/context-watch/index.cjs +95 -68
  207. package/hooks/hooks.json +111 -111
  208. package/hooks/metrics-collector/index.cjs +86 -42
  209. package/hooks/post-session-reflect/index.cjs +189 -153
  210. package/hooks/pre-compact/index.cjs +95 -95
  211. package/hooks/run-hook.cmd +1 -1
  212. package/hooks/secrets-scan/index.cjs +100 -100
  213. package/hooks/session-start/index.cjs +71 -65
  214. package/hooks/typecheck/index.cjs +65 -65
  215. package/package.json +63 -63
  216. package/references/ui-pro-max-data/LICENSE-UI-PRO-MAX +21 -21
  217. package/references/ui-pro-max-data/charts.csv +26 -26
  218. package/references/ui-pro-max-data/colors.csv +161 -161
  219. package/references/ui-pro-max-data/styles.csv +68 -68
  220. package/references/ui-pro-max-data/typography.csv +74 -74
  221. package/references/ui-pro-max-data/ui-reasoning.csv +162 -162
  222. package/references/ui-pro-max-data/ux-guidelines.csv +99 -99
  223. package/skills/adversary/SKILL.md +283 -283
  224. package/skills/asset-creator/SKILL.md +157 -157
  225. package/skills/audit/SKILL.md +148 -2
  226. package/skills/autopsy/SKILL.md +335 -259
  227. package/skills/autopsy/references/repo-analysis-patterns.md +113 -0
  228. package/skills/ba/SKILL.md +72 -2
  229. package/skills/brainstorm/SKILL.md +342 -341
  230. package/skills/browser-pilot/SKILL.md +168 -168
  231. package/skills/constraint-check/SKILL.md +165 -165
  232. package/skills/context-engine/SKILL.md +404 -404
  233. package/skills/cook/SKILL.md +917 -834
  234. package/skills/cook/references/output-format.md +33 -0
  235. package/skills/db/SKILL.md +273 -272
  236. package/skills/debug/SKILL.md +465 -443
  237. package/skills/dependency-doctor/SKILL.md +265 -235
  238. package/skills/deploy/SKILL.md +274 -231
  239. package/skills/design/DESIGN-REFERENCE.md +365 -365
  240. package/skills/design/SKILL.md +589 -482
  241. package/skills/doc-processor/SKILL.md +254 -254
  242. package/skills/docs/SKILL.md +374 -373
  243. package/skills/docs-seeker/SKILL.md +177 -177
  244. package/skills/fix/SKILL.md +330 -308
  245. package/skills/git/SKILL.md +339 -339
  246. package/skills/graft/SKILL.md +352 -0
  247. package/skills/graft/references/challenge-framework.md +98 -0
  248. package/skills/graft/references/mode-decision.md +44 -0
  249. package/skills/hallucination-guard/SKILL.md +219 -219
  250. package/skills/incident/SKILL.md +254 -251
  251. package/skills/integrity-check/SKILL.md +169 -169
  252. package/skills/journal/SKILL.md +240 -238
  253. package/skills/launch/SKILL.md +344 -342
  254. package/skills/logic-guardian/SKILL.md +251 -251
  255. package/skills/marketing/SKILL.md +290 -245
  256. package/skills/mcp-builder/SKILL.md +425 -423
  257. package/skills/mcp-builder/references/auto-discovery-pattern.md +169 -0
  258. package/skills/neural-memory/SKILL.md +362 -362
  259. package/skills/onboard/SKILL.md +404 -403
  260. package/skills/perf/SKILL.md +346 -346
  261. package/skills/plan/SKILL.md +433 -370
  262. package/skills/plan/references/feature-map.md +84 -0
  263. package/skills/preflight/SKILL.md +415 -396
  264. package/skills/problem-solver/SKILL.md +380 -284
  265. package/skills/rescue/SKILL.md +474 -450
  266. package/skills/retro/SKILL.md +5 -1
  267. package/skills/review/SKILL.md +612 -535
  268. package/skills/review-intake/SKILL.md +249 -249
  269. package/skills/safeguard/SKILL.md +200 -200
  270. package/skills/sast/SKILL.md +190 -190
  271. package/skills/scaffold/SKILL.md +328 -286
  272. package/skills/scope-guard/SKILL.md +180 -162
  273. package/skills/scout/SKILL.md +263 -263
  274. package/skills/sentinel/SKILL.md +382 -353
  275. package/skills/sentinel-env/SKILL.md +254 -254
  276. package/skills/sequential-thinking/SKILL.md +234 -234
  277. package/skills/session-bridge/SKILL.md +543 -397
  278. package/skills/skill-forge/SKILL.md +581 -539
  279. package/skills/skill-router/{skill.md → SKILL.md} +30 -2
  280. package/skills/surgeon/SKILL.md +215 -215
  281. package/skills/team/SKILL.md +556 -514
  282. package/skills/test/SKILL.md +614 -587
  283. package/skills/trend-scout/SKILL.md +145 -145
  284. package/skills/verification/SKILL.md +326 -325
  285. package/skills/video-creator/SKILL.md +201 -201
  286. package/skills/watchdog/SKILL.md +168 -168
  287. package/skills/worktree/SKILL.md +140 -140
@@ -1,106 +1,127 @@
1
- ---
2
- name: "animation-patterns"
3
- pack: "@rune/ui"
4
- description: "Motion design patterns — micro-interactions, page transitions, scroll animations, loading states. Applies CSS transitions, Framer Motion, or GSAP based on project stack. Always respects prefers-reduced-motion."
5
- model: sonnet
6
- tools: [Read, Edit, Write, Grep, Glob, Bash]
7
- ---
8
-
9
- # animation-patterns
10
-
11
- Motion design patterns — micro-interactions, page transitions, scroll animations, loading states. Applies CSS transitions, Framer Motion, or GSAP based on project stack. Always respects `prefers-reduced-motion`.
12
-
13
- #### Workflow
14
-
15
- **Step 1 — Detect interaction points**
16
- Use Grep to find hover handlers (`onMouseEnter`, `:hover`), route changes (Next.js `useRouter`, SvelteKit `goto`), and loading states (`isLoading`, `isPending`). Read component files to understand where motion can add feedback or polish.
17
-
18
- **Step 2 — Apply micro-interactions**
19
- For each interaction point, select the appropriate pattern: hover → scale + shadow lift; button click → press-down (scale 0.97); data load → skeleton pulse then fade-in; route change → slide or fade transition. Emit the updated component with motion classes or Framer Motion variants.
20
-
21
- **Step 3 — Audit reduced-motion compliance**
22
- Use Grep to find every animation/transition declaration. Verify each is wrapped in a `prefers-reduced-motion: no-preference` media query or uses Framer Motion's `useReducedMotion()` hook. Flag any that are not.
23
-
24
- **Step 4 — Page transition patterns**
25
- Apply View Transitions API for same-document navigations (SvelteKit, Astro, vanilla JS). For React/Next.js, use Framer Motion `AnimatePresence` + `layoutId` for shared layout animations. Emit transition wrapper component with both strategies.
26
-
27
- #### Example
28
-
29
- ```tsx
30
- // Tailwind micro-interaction with reduced-motion respect
31
- <button
32
- className="
33
- transform transition-all duration-200 ease-out
34
- hover:scale-105 hover:shadow-md
35
- active:scale-95
36
- motion-reduce:transform-none motion-reduce:transition-none
37
- "
38
- >
39
- Confirm
40
- </button>
41
-
42
- // Framer Motion with reduced-motion hook
43
- const prefersReduced = useReducedMotion()
44
-
45
- <motion.div
46
- initial={{ opacity: 0, y: prefersReduced ? 0 : 16 }}
47
- animate={{ opacity: 1, y: 0 }}
48
- transition={{ duration: prefersReduced ? 0 : 0.25 }}
49
- />
50
- ```
51
-
52
- ```tsx
53
- // Shared layout animation — card expands to modal (Framer Motion)
54
- // Works because both use the same layoutId="card-{id}"
55
- function CardGrid({ items }: { items: Item[] }) {
56
- const [selected, setSelected] = useState<string | null>(null)
57
- return (
58
- <>
59
- {items.map((item) => (
60
- <motion.div
61
- key={item.id}
62
- layoutId={`card-${item.id}`}
63
- onClick={() => setSelected(item.id)}
64
- className="rounded-xl bg-[var(--bg-card)] border border-[var(--border)] cursor-pointer"
65
- >
66
- <motion.h3 layoutId={`title-${item.id}`}>{item.title}</motion.h3>
67
- </motion.div>
68
- ))}
69
-
70
- <AnimatePresence>
71
- {selected && (
72
- <motion.div
73
- layoutId={`card-${selected}`}
74
- className="fixed inset-8 z-50 rounded-2xl bg-[var(--bg-card)] p-8"
75
- >
76
- <motion.h3 layoutId={`title-${selected}`} className="text-h2 font-bold">
77
- {items.find(i => i.id === selected)?.title}
78
- </motion.h3>
79
- <button onClick={() => setSelected(null)} aria-label="Close">
80
- <X aria-hidden="true" />
81
- </button>
82
- </motion.div>
83
- )}
84
- </AnimatePresence>
85
- </>
86
- )
87
- }
88
- ```
89
-
90
- ```css
91
- /* View Transitions API — SvelteKit / Astro page transitions */
92
- /* In app.css or global stylesheet */
93
- @media (prefers-reduced-motion: no-preference) {
94
- ::view-transition-old(root) {
95
- animation: 200ms ease-out both fade-out;
96
- }
97
- ::view-transition-new(root) {
98
- animation: 250ms ease-in both fade-in;
99
- }
100
- }
101
-
102
- @keyframes fade-out { from { opacity: 1; } to { opacity: 0; } }
103
- @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }
104
-
105
- /* SvelteKit: enable in svelte.config.js → experimental: { viewTransitions: true } */
106
- ```
1
+ ---
2
+ name: "animation-patterns"
3
+ pack: "@rune/ui"
4
+ description: "Motion design patterns — micro-interactions, page transitions, scroll animations, loading states. Applies CSS transitions, Framer Motion, or GSAP based on project stack. Always respects prefers-reduced-motion."
5
+ model: sonnet
6
+ tools: [Read, Edit, Write, Grep, Glob, Bash]
7
+ ---
8
+
9
+ # animation-patterns
10
+
11
+ Motion design patterns — micro-interactions, page transitions, scroll animations, loading states. Applies CSS transitions, Framer Motion, or GSAP based on project stack. Always respects `prefers-reduced-motion`.
12
+
13
+ #### Workflow
14
+
15
+ **Step 1 — Detect interaction points**
16
+ Use Grep to find hover handlers (`onMouseEnter`, `:hover`), route changes (Next.js `useRouter`, SvelteKit `goto`), and loading states (`isLoading`, `isPending`). Read component files to understand where motion can add feedback or polish.
17
+
18
+ **Step 2 — Apply micro-interactions**
19
+ For each interaction point, select the appropriate pattern: hover → scale + shadow lift; button click → press-down (scale 0.97); data load → skeleton pulse then fade-in; route change → slide or fade transition. Emit the updated component with motion classes or Framer Motion variants.
20
+
21
+ **Step 3 — Audit reduced-motion compliance**
22
+ Use Grep to find every animation/transition declaration. Verify each is wrapped in a `prefers-reduced-motion: no-preference` media query or uses Framer Motion's `useReducedMotion()` hook. Flag any that are not.
23
+
24
+ **Step 4 — Page transition patterns**
25
+ Apply View Transitions API for same-document navigations (SvelteKit, Astro, vanilla JS). For React/Next.js, use Framer Motion `AnimatePresence` + `layoutId` for shared layout animations. Emit transition wrapper component with both strategies.
26
+
27
+ **Step 5 — Mood-to-Animation Timing**
28
+
29
+ If `.rune/design-system.md` contains a `## Mood` section, read the selected mood and apply the matching motion profile. This ensures animation feel aligns with the product's emotional intent — not just technical correctness.
30
+
31
+ | Mood | Duration | Easing | Hover | Enter/Exit | Scroll | Signature |
32
+ |------|----------|--------|-------|------------|--------|-----------|
33
+ | **Impressed** | 0.8-1.2s | `ease-out` | Scale 1.03 + deep shadow | Fade-up 24px | Parallax layers | Staggered reveals with 100ms delay between items |
34
+ | **Excited** | 0.4-0.6s | `spring(1, 80, 10)` | Scale 1.06 + color shift | Slide-in from edge | Snap scroll | Overshoot on entry (1.56 bounce), pulse on data change |
35
+ | **Calm** | 0.6-0.8s | `ease-out-quad` | Subtle opacity 0.8→1 | Slow fade 300ms | Gentle float | Breathing rhythm on idle elements (opacity 0.7↔1, 4s loop) |
36
+ | **Confident** | 0.3-0.5s | `ease` | Precise underline/border | Clean slide 16px | None or minimal | Sharp, decisive — no overshoot, no bounce |
37
+ | **Playful** | 0.4-0.6s | `spring(1, 100, 12)` | Wobble or tilt (rotate ±2°) | Bounce-in from bottom | Elastic snap | Squish on click (scaleX 1.05, scaleY 0.95), emoji-like feedback |
38
+ | **Techy** | 0.15-0.3s | `ease-out` | Glow border or underline | Instant or 100ms fade | Sticky headers | Typewriter text, cursor blink, terminal-feel transitions |
39
+ | **Professional** | 0.2-0.3s | `ease` | Background tint only | Simple fade | Fixed header | Minimal — motion serves function, never decoration |
40
+ | **Inspired** | 0.5-0.8s | `cubic-bezier(0.4, 0, 0.2, 1)` | Reveal hidden detail | Scroll-driven enter | Parallax + reveal | Cinematic — content appears as user discovers, like turning pages |
41
+
42
+ **Usage rules:**
43
+ 1. Read mood from `.rune/design-system.md` → select matching row → apply as default motion tokens
44
+ 2. If no mood defined, fall back to **Professional** (safest, least opinionated)
45
+ 3. ALL timing values must be wrapped in `prefers-reduced-motion` check — mood doesn't override accessibility
46
+ 4. Mood overrides generic Step 2 micro-interactions where they conflict
47
+
48
+ #### Example
49
+
50
+ ```tsx
51
+ // Tailwind micro-interaction with reduced-motion respect
52
+ <button
53
+ className="
54
+ transform transition-all duration-200 ease-out
55
+ hover:scale-105 hover:shadow-md
56
+ active:scale-95
57
+ motion-reduce:transform-none motion-reduce:transition-none
58
+ "
59
+ >
60
+ Confirm
61
+ </button>
62
+
63
+ // Framer Motion with reduced-motion hook
64
+ const prefersReduced = useReducedMotion()
65
+
66
+ <motion.div
67
+ initial={{ opacity: 0, y: prefersReduced ? 0 : 16 }}
68
+ animate={{ opacity: 1, y: 0 }}
69
+ transition={{ duration: prefersReduced ? 0 : 0.25 }}
70
+ />
71
+ ```
72
+
73
+ ```tsx
74
+ // Shared layout animation — card expands to modal (Framer Motion)
75
+ // Works because both use the same layoutId="card-{id}"
76
+ function CardGrid({ items }: { items: Item[] }) {
77
+ const [selected, setSelected] = useState<string | null>(null)
78
+ return (
79
+ <>
80
+ {items.map((item) => (
81
+ <motion.div
82
+ key={item.id}
83
+ layoutId={`card-${item.id}`}
84
+ onClick={() => setSelected(item.id)}
85
+ className="rounded-xl bg-[var(--bg-card)] border border-[var(--border)] cursor-pointer"
86
+ >
87
+ <motion.h3 layoutId={`title-${item.id}`}>{item.title}</motion.h3>
88
+ </motion.div>
89
+ ))}
90
+
91
+ <AnimatePresence>
92
+ {selected && (
93
+ <motion.div
94
+ layoutId={`card-${selected}`}
95
+ className="fixed inset-8 z-50 rounded-2xl bg-[var(--bg-card)] p-8"
96
+ >
97
+ <motion.h3 layoutId={`title-${selected}`} className="text-h2 font-bold">
98
+ {items.find(i => i.id === selected)?.title}
99
+ </motion.h3>
100
+ <button onClick={() => setSelected(null)} aria-label="Close">
101
+ <X aria-hidden="true" />
102
+ </button>
103
+ </motion.div>
104
+ )}
105
+ </AnimatePresence>
106
+ </>
107
+ )
108
+ }
109
+ ```
110
+
111
+ ```css
112
+ /* View Transitions API — SvelteKit / Astro page transitions */
113
+ /* In app.css or global stylesheet */
114
+ @media (prefers-reduced-motion: no-preference) {
115
+ ::view-transition-old(root) {
116
+ animation: 200ms ease-out both fade-out;
117
+ }
118
+ ::view-transition-new(root) {
119
+ animation: 250ms ease-in both fade-in;
120
+ }
121
+ }
122
+
123
+ @keyframes fade-out { from { opacity: 1; } to { opacity: 0; } }
124
+ @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }
125
+
126
+ /* SvelteKit: enable in svelte.config.js → experimental: { viewTransitions: true } */
127
+ ```
@@ -1,75 +1,100 @@
1
- ---
2
- name: "component-patterns"
3
- pack: "@rune/ui"
4
- description: "Component architecture patterns — compound components, render props, composition, slots. Detects prop-heavy components and guides refactoring toward composable, maintainable architectures."
5
- model: sonnet
6
- tools: [Read, Edit, Write, Grep, Glob, Bash]
7
- ---
8
-
9
- # component-patterns
10
-
11
- Component architecture patterns — compound components, render props, composition, slots. Detects prop-heavy components and guides refactoring toward composable, maintainable architectures.
12
-
13
- #### Workflow
14
-
15
- **Step 1 — Detect prop-heavy components**
16
- Use Grep to find component signatures with more than 8 props (`interface \w+Props \{` then count fields, or scan function parameter lists). Read each flagged file to understand the component's responsibilities.
17
-
18
- **Step 2 — Classify and suggest pattern**
19
- For each flagged component, classify by smell: boolean-flag hell → compound component; render logic branching → render props or slots; deeply nested data → context + provider. Output a refactor plan with the specific pattern to apply.
20
-
21
- **Step 3 — Emit refactored scaffold**
22
- Write the refactored component skeleton following the compound component pattern. Do not overwrite the original — emit to a `*.refactored.tsx` file for review.
23
-
24
- **Step 4 — Composition vs inheritance + slot patterns**
25
- After structural refactor, audit for slot opportunities (Svelte `<slot>`, Vue `v-slot`, React `children` with typed slots). Enforce: prefer composition (pass components as props) over inheritance (extend base class). Flag any `extends React.Component` or class-based patterns for migration.
26
-
27
- #### Example
28
-
29
- ```tsx
30
- // BEFORE: prop-heavy (9 props, hard to extend)
31
- <Modal title="..." open footer actions size variant onClose onConfirm loading />
32
-
33
- // AFTER: compound component pattern
34
- <Modal open onClose={handleClose}>
35
- <Modal.Header>Confirm Action</Modal.Header>
36
- <Modal.Body>Are you sure?</Modal.Body>
37
- <Modal.Footer>
38
- <Button variant="ghost" onClick={handleClose}>Cancel</Button>
39
- <Button variant="primary" loading={isLoading} onClick={handleConfirm}>
40
- Confirm
41
- </Button>
42
- </Modal.Footer>
43
- </Modal>
44
- ```
45
-
46
- ```tsx
47
- // Svelte slot patterncomposition over prop drilling
48
- // Caller decides what goes in header/footer, component owns layout
49
- <Card>
50
- <svelte:fragment slot="header">
51
- <h3 class="text-h3 font-semibold">Usage this month</h3>
52
- </svelte:fragment>
53
-
54
- <MetricChart data={usage} />
55
-
56
- <svelte:fragment slot="footer">
57
- <a href="/billing" class="text-sm text-[var(--primary)]">View invoice</a>
58
- </svelte:fragment>
59
- </Card>
60
- ```
61
-
62
- ```tsx
63
- // React typed children slots via discriminated union
64
- type ModalSlot = { as: 'header' | 'body' | 'footer'; children: React.ReactNode }
65
-
66
- function resolveSlots(children: React.ReactNode) {
67
- const slots: Record<string, React.ReactNode> = {}
68
- React.Children.forEach(children, (child) => {
69
- if (React.isValidElement<ModalSlot>(child) && child.props.as) {
70
- slots[child.props.as] = child.props.children
71
- }
72
- })
73
- return slots
74
- }
75
- ```
1
+ ---
2
+ name: "component-patterns"
3
+ pack: "@rune/ui"
4
+ description: "Component architecture patterns — compound components, render props, composition, slots. Detects prop-heavy components and guides refactoring toward composable, maintainable architectures."
5
+ model: sonnet
6
+ tools: [Read, Edit, Write, Grep, Glob, Bash]
7
+ ---
8
+
9
+ # component-patterns
10
+
11
+ Component architecture patterns — compound components, render props, composition, slots. Detects prop-heavy components and guides refactoring toward composable, maintainable architectures.
12
+
13
+ #### Workflow
14
+
15
+ **Step 1 — Detect prop-heavy components**
16
+ Use Grep to find component signatures with more than 8 props (`interface \w+Props \{` then count fields, or scan function parameter lists). Read each flagged file to understand the component's responsibilities.
17
+
18
+ **Step 2 — Classify and suggest pattern**
19
+ For each flagged component, classify by smell: boolean-flag hell → compound component; render logic branching → render props or slots; deeply nested data → context + provider. Output a refactor plan with the specific pattern to apply.
20
+
21
+ **Step 3 — Emit refactored scaffold**
22
+ Write the refactored component skeleton following the compound component pattern. Do not overwrite the original — emit to a `*.refactored.tsx` file for review.
23
+
24
+ **Step 4 — Composition vs inheritance + slot patterns**
25
+ After structural refactor, audit for slot opportunities (Svelte `<slot>`, Vue `v-slot`, React `children` with typed slots). Enforce: prefer composition (pass components as props) over inheritance (extend base class). Flag any `extends React.Component` or class-based patterns for migration.
26
+
27
+ **Step 5 — Bento Card Archetypes**
28
+
29
+ When designing card-based layouts, apply named archetypes instead of uniform grids. Each archetype has a specific interaction model and animation signature. Mix archetypes within a page to create visual hierarchy.
30
+
31
+ | Archetype | Content Type | Layout | Interaction | Animation |
32
+ |-----------|-------------|--------|-------------|-----------|
33
+ | **Intelligent List** | Ranked/sortable items (leaderboard, top assets, recent activity) | Vertical stack, auto-reorders | Drag to reorder, click to expand | `layoutId` shared animation on reorder — items slide to new position (Framer Motion `layout` prop) |
34
+ | **Command Input** | Search, AI prompt, quick actions | Single input + dropdown results | Type to filter, keyboard nav, Enter to execute | Typewriter placeholder text + shimmer gradient on focus + results fade-in with 50ms stagger |
35
+ | **Live Status** | Real-time metrics (uptime, price, active users) | Compact card, number-dominant | Hover for sparkline/history | Breathing pulse on idle (opacity 0.85↔1, 3s), overshoot scale on value change (spring) |
36
+ | **Wide Data Stream** | Horizontal feed (news, transactions, timeline) | Full-width horizontal scroll or infinite carousel | Swipe/drag, auto-advance optional | Infinite scroll with momentum, snap to item, fade edges to signal overflow |
37
+ | **Contextual Panel** | Detail view, settings, metadata | Expandable from parent card or sidebar | Click parent → panel slides in | Stagger children (50ms each), float-in from right (translateX 24px → 0) |
38
+
39
+ **Anti-patterns for card layouts:**
40
+ - ❌ **Uniform grid** — all cards same size, same padding, same content structure = AI signature
41
+ - ❌ **Card soup** — cards with no clear grouping or hierarchy
42
+ - ❌ **Static bento** — bento layout without interaction model = decorative, not functional
43
+
44
+ **Composition rules:**
45
+ 1. A page should use 2-4 archetypes max — more = visual noise
46
+ 2. **Live Status** cards cluster together (dashboard KPI row)
47
+ 3. **Intelligent List** is the primary content area usually takes 60%+ of viewport
48
+ 4. **Command Input** is a singleton — ONE per page, always accessible (often pinned top or Cmd+K)
49
+ 5. **Wide Data Stream** breaks vertical rhythm — use as section separator between dense blocks
50
+ 6. **Contextual Panel** is secondary — triggered by interaction, never shown by default on load
51
+
52
+ #### Example
53
+
54
+ ```tsx
55
+ // BEFORE: prop-heavy (9 props, hard to extend)
56
+ <Modal title="..." open footer actions size variant onClose onConfirm loading />
57
+
58
+ // AFTER: compound component pattern
59
+ <Modal open onClose={handleClose}>
60
+ <Modal.Header>Confirm Action</Modal.Header>
61
+ <Modal.Body>Are you sure?</Modal.Body>
62
+ <Modal.Footer>
63
+ <Button variant="ghost" onClick={handleClose}>Cancel</Button>
64
+ <Button variant="primary" loading={isLoading} onClick={handleConfirm}>
65
+ Confirm
66
+ </Button>
67
+ </Modal.Footer>
68
+ </Modal>
69
+ ```
70
+
71
+ ```tsx
72
+ // Svelte slot pattern — composition over prop drilling
73
+ // Caller decides what goes in header/footer, component owns layout
74
+ <Card>
75
+ <svelte:fragment slot="header">
76
+ <h3 class="text-h3 font-semibold">Usage this month</h3>
77
+ </svelte:fragment>
78
+
79
+ <MetricChart data={usage} />
80
+
81
+ <svelte:fragment slot="footer">
82
+ <a href="/billing" class="text-sm text-[var(--primary)]">View invoice</a>
83
+ </svelte:fragment>
84
+ </Card>
85
+ ```
86
+
87
+ ```tsx
88
+ // React typed children slots via discriminated union
89
+ type ModalSlot = { as: 'header' | 'body' | 'footer'; children: React.ReactNode }
90
+
91
+ function resolveSlots(children: React.ReactNode) {
92
+ const slots: Record<string, React.ReactNode> = {}
93
+ React.Children.forEach(children, (child) => {
94
+ if (React.isValidElement<ModalSlot>(child) && child.props.as) {
95
+ slots[child.props.as] = child.props.children
96
+ }
97
+ })
98
+ return slots
99
+ }
100
+ ```
@@ -1,108 +1,108 @@
1
- ---
2
- name: "design-decision"
3
- pack: "@rune/ui"
4
- description: "Product domain → style mapping. Given a product category, outputs a complete design recommendation: visual style, palette, typography pairing, component aesthetic, and a design-system.md scaffold."
5
- model: sonnet
6
- tools: [Read, Edit, Write, Grep, Glob, Bash]
7
- ---
8
-
9
- # design-decision
10
-
11
- Product domain → style mapping. Given a product category, outputs a complete design recommendation: visual style, palette, typography pairing, component aesthetic, and a `design-system.md` scaffold. Bridges the gap between "I need to build a UI" and "I know exactly what it should look like."
12
-
13
- #### Workflow
14
-
15
- **Step 1 — Classify product domain**
16
- Read `CLAUDE.md`, `README.md`, or ask: "What problem does this product solve? Who uses it?" Map to one of the 9 domains below.
17
-
18
- **Step 2 — Recommend style stack**
19
- Apply the domain → style matrix. Output: visual style name, palette slug, typography pairing, component aesthetic, and 3 reference patterns to avoid ("do NOT do X").
20
-
21
- **Step 3 — Generate design-system.md**
22
- Emit a `design-system.md` file in the project root (or `.rune/`) with: color tokens (CSS custom properties), font pairing (Google Fonts link), spacing scale, component aesthetic rules, and anti-patterns for this domain.
23
-
24
- #### Domain → Style Matrix
25
-
26
- The matrix below provides default mappings. When `references/ui-pro-max-data/styles.csv` is available, query it for **84 additional styles** with industry-specific parameters — filter by domain column for expanded recommendations beyond these 10 defaults.
27
-
28
- ```
29
- Domain Style Palette Typography Component Aesthetic
30
- ─────────────────────────────────────────────────────────────────────────────────────────────
31
- Fintech/Trading Dark + Precision midnight-profit Space Grotesk+Mono Dense tables, data overlays
32
- Healthcare Clean + Calm clean-clinic DM Sans+DM Serif Rounded, soft, spacious
33
- Education Warm + Friendly warm-academy* Fredoka+Nunito Illustrated, playful cards
34
- Gaming Dark + Neon neon-arena Rajdhani+Exo 2 Hard edges, glow effects
35
- Ecommerce Trust + Focused trust-cart Inter+Inter Product-first, clean CTA
36
- SaaS/Dashboard Precision + Flex slate-precision Space Grotesk+Inter Data-dense, sidebar nav
37
- Social/Community Vibrant + Engaged gradient-social* Inter+Inter Avatar-heavy, reaction UX
38
- News/Content Readable + Neutral neutral-ink* Playfair+Source Serif Wide columns, drop caps
39
- Productivity Minimal + Calm calm-focus* Inter+Inter (weight) Almost no decoration
40
- DevTools Terminal + Crisp terminal-dark JetBrains Mono+Inter Code blocks, mono emphasis
41
-
42
- * Palette not shown in palette-picker example block — generate with same CSS custom props pattern.
43
- ```
44
-
45
- #### Extended Data (UI/UX Pro Max)
46
-
47
- When `references/ui-pro-max-data/` exists:
48
- - `styles.csv` — 84 styles with color params, animation, WCAG levels, mobile flags
49
- - `typography.csv` — 73 font pairings with Google Fonts URLs, Tailwind config, mood keywords
50
- - `ui-reasoning.csv` — 161 industry-specific reasoning rules (filter by domain)
51
- - Query: filter CSV by domain/category column → get expanded recommendations
52
-
53
- #### Style Characteristic Reference
54
-
55
- ```
56
- glassmorphism When: premium SaaS landing, dark bg hero. Avoid: dense data tables (illegible).
57
- CSS: background: rgba(255,255,255,0.05); backdrop-filter: blur(12px);
58
- border: 1px solid rgba(255,255,255,0.1); border-radius: 16px;
59
-
60
- neubrutalism When: bold brand statement, startup, creative tool. Avoid: healthcare, finance.
61
- CSS: border: 2px solid #000; box-shadow: 4px 4px 0 #000;
62
- background: #ffe600; (or other saturated fill)
63
-
64
- claymorphism When: education, kids, consumer apps. Avoid: enterprise, B2B data tools.
65
- CSS: border-radius: 20px; box-shadow: 0 8px 0 rgba(0,0,0,0.15),
66
- inset 0 -4px 0 rgba(0,0,0,0.1); (inflated, soft look)
67
-
68
- aurora/gradient When: landing page hero ONLY, used sparingly. AVOID as overall theme.
69
- CSS: background: conic-gradient(from 180deg at 50% 50%, ...); opacity: 0.15;
70
- (subtle, behind content — never the main visual)
71
-
72
- flat/minimal When: productivity, devtools, content. Best default for B2B SaaS.
73
- CSS: No shadows except --shadow-sm. Single accent color. Whitespace-heavy.
74
-
75
- dark-precision When: fintech, devtools, monitoring. Default dark bg with high-contrast accents.
76
- CSS: bg #0f172a or darker; mono fonts for data; green/red semantic signals.
77
- ```
78
-
79
- #### Example — Generated design-system.md
80
-
81
- ```markdown
82
- # Design System: [Product Name]
83
-
84
- ## Domain
85
- SaaS Dashboard — B2B productivity tool for engineering teams
86
-
87
- ## Visual Style
88
- Flat/Minimal with Slate Precision palette. Dark mode default.
89
- Do NOT use gradient blobs, glassmorphism panels, or Lucide icons.
90
-
91
- ## Color Tokens
92
- [→ See palette.css — generated by palette-picker, slate-precision]
93
-
94
- ## Typography
95
- Pairing: Space Grotesk (headings, 600–700) + Inter (body, 400–500)
96
- [→ See Google Fonts link in type-system output]
97
-
98
- ## Component Rules
99
- - Cards: bg-card + border border-[var(--border)] + rounded-lg. NO drop shadows on cards.
100
- - Buttons: primary = bg-primary text-white. ghost = border + transparent bg.
101
- - Icons: Phosphor Icons only. Weight: regular for UI, fill for status indicators.
102
- - Data tables: zebra stripe with bg-elevated on odd rows. Mono font for numbers.
103
-
104
- ## Anti-Patterns for This Domain
105
- - No centered hero with 2-button CTA
106
- - No gradient backgrounds
107
- - No uniform card grid (vary card sizes by content importance)
108
- ```
1
+ ---
2
+ name: "design-decision"
3
+ pack: "@rune/ui"
4
+ description: "Product domain → style mapping. Given a product category, outputs a complete design recommendation: visual style, palette, typography pairing, component aesthetic, and a design-system.md scaffold."
5
+ model: sonnet
6
+ tools: [Read, Edit, Write, Grep, Glob, Bash]
7
+ ---
8
+
9
+ # design-decision
10
+
11
+ Product domain → style mapping. Given a product category, outputs a complete design recommendation: visual style, palette, typography pairing, component aesthetic, and a `design-system.md` scaffold. Bridges the gap between "I need to build a UI" and "I know exactly what it should look like."
12
+
13
+ #### Workflow
14
+
15
+ **Step 1 — Classify product domain**
16
+ Read `CLAUDE.md`, `README.md`, or ask: "What problem does this product solve? Who uses it?" Map to one of the 9 domains below.
17
+
18
+ **Step 2 — Recommend style stack**
19
+ Apply the domain → style matrix. Output: visual style name, palette slug, typography pairing, component aesthetic, and 3 reference patterns to avoid ("do NOT do X").
20
+
21
+ **Step 3 — Generate design-system.md**
22
+ Emit a `design-system.md` file in the project root (or `.rune/`) with: color tokens (CSS custom properties), font pairing (Google Fonts link), spacing scale, component aesthetic rules, and anti-patterns for this domain.
23
+
24
+ #### Domain → Style Matrix
25
+
26
+ The matrix below provides default mappings. When `references/ui-pro-max-data/styles.csv` is available, query it for **84 additional styles** with industry-specific parameters — filter by domain column for expanded recommendations beyond these 10 defaults.
27
+
28
+ ```
29
+ Domain Style Palette Typography Component Aesthetic
30
+ ─────────────────────────────────────────────────────────────────────────────────────────────
31
+ Fintech/Trading Dark + Precision midnight-profit Space Grotesk+Mono Dense tables, data overlays
32
+ Healthcare Clean + Calm clean-clinic DM Sans+DM Serif Rounded, soft, spacious
33
+ Education Warm + Friendly warm-academy* Fredoka+Nunito Illustrated, playful cards
34
+ Gaming Dark + Neon neon-arena Rajdhani+Exo 2 Hard edges, glow effects
35
+ Ecommerce Trust + Focused trust-cart Inter+Inter Product-first, clean CTA
36
+ SaaS/Dashboard Precision + Flex slate-precision Space Grotesk+Inter Data-dense, sidebar nav
37
+ Social/Community Vibrant + Engaged gradient-social* Inter+Inter Avatar-heavy, reaction UX
38
+ News/Content Readable + Neutral neutral-ink* Playfair+Source Serif Wide columns, drop caps
39
+ Productivity Minimal + Calm calm-focus* Inter+Inter (weight) Almost no decoration
40
+ DevTools Terminal + Crisp terminal-dark JetBrains Mono+Inter Code blocks, mono emphasis
41
+
42
+ * Palette not shown in palette-picker example block — generate with same CSS custom props pattern.
43
+ ```
44
+
45
+ #### Extended Data (UI/UX Pro Max)
46
+
47
+ When `references/ui-pro-max-data/` exists:
48
+ - `styles.csv` — 84 styles with color params, animation, WCAG levels, mobile flags
49
+ - `typography.csv` — 73 font pairings with Google Fonts URLs, Tailwind config, mood keywords
50
+ - `ui-reasoning.csv` — 161 industry-specific reasoning rules (filter by domain)
51
+ - Query: filter CSV by domain/category column → get expanded recommendations
52
+
53
+ #### Style Characteristic Reference
54
+
55
+ ```
56
+ glassmorphism When: premium SaaS landing, dark bg hero. Avoid: dense data tables (illegible).
57
+ CSS: background: rgba(255,255,255,0.05); backdrop-filter: blur(12px);
58
+ border: 1px solid rgba(255,255,255,0.1); border-radius: 16px;
59
+
60
+ neubrutalism When: bold brand statement, startup, creative tool. Avoid: healthcare, finance.
61
+ CSS: border: 2px solid #000; box-shadow: 4px 4px 0 #000;
62
+ background: #ffe600; (or other saturated fill)
63
+
64
+ claymorphism When: education, kids, consumer apps. Avoid: enterprise, B2B data tools.
65
+ CSS: border-radius: 20px; box-shadow: 0 8px 0 rgba(0,0,0,0.15),
66
+ inset 0 -4px 0 rgba(0,0,0,0.1); (inflated, soft look)
67
+
68
+ aurora/gradient When: landing page hero ONLY, used sparingly. AVOID as overall theme.
69
+ CSS: background: conic-gradient(from 180deg at 50% 50%, ...); opacity: 0.15;
70
+ (subtle, behind content — never the main visual)
71
+
72
+ flat/minimal When: productivity, devtools, content. Best default for B2B SaaS.
73
+ CSS: No shadows except --shadow-sm. Single accent color. Whitespace-heavy.
74
+
75
+ dark-precision When: fintech, devtools, monitoring. Default dark bg with high-contrast accents.
76
+ CSS: bg #0f172a or darker; mono fonts for data; green/red semantic signals.
77
+ ```
78
+
79
+ #### Example — Generated design-system.md
80
+
81
+ ```markdown
82
+ # Design System: [Product Name]
83
+
84
+ ## Domain
85
+ SaaS Dashboard — B2B productivity tool for engineering teams
86
+
87
+ ## Visual Style
88
+ Flat/Minimal with Slate Precision palette. Dark mode default.
89
+ Do NOT use gradient blobs, glassmorphism panels, or Lucide icons.
90
+
91
+ ## Color Tokens
92
+ [→ See palette.css — generated by palette-picker, slate-precision]
93
+
94
+ ## Typography
95
+ Pairing: Space Grotesk (headings, 600–700) + Inter (body, 400–500)
96
+ [→ See Google Fonts link in type-system output]
97
+
98
+ ## Component Rules
99
+ - Cards: bg-card + border border-[var(--border)] + rounded-lg. NO drop shadows on cards.
100
+ - Buttons: primary = bg-primary text-white. ghost = border + transparent bg.
101
+ - Icons: Phosphor Icons only. Weight: regular for UI, fill for status indicators.
102
+ - Data tables: zebra stripe with bg-elevated on odd rows. Mono font for numbers.
103
+
104
+ ## Anti-Patterns for This Domain
105
+ - No centered hero with 2-button CTA
106
+ - No gradient backgrounds
107
+ - No uniform card grid (vary card sizes by content importance)
108
+ ```