antigravity-devkit 1.0.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 (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +421 -0
  3. package/bin/cli.js +179 -0
  4. package/package.json +38 -0
  5. package/template/ARCHITECTURE.md +148 -0
  6. package/template/README.md +421 -0
  7. package/template/agents/backend-specialist.md +137 -0
  8. package/template/agents/database-architect.md +114 -0
  9. package/template/agents/debugger.md +108 -0
  10. package/template/agents/devops-engineer.md +125 -0
  11. package/template/agents/documentation-writer.md +109 -0
  12. package/template/agents/explorer-agent.md +107 -0
  13. package/template/agents/frontend-specialist.md +231 -0
  14. package/template/agents/orchestrator.md +100 -0
  15. package/template/agents/performance-optimizer.md +109 -0
  16. package/template/agents/project-planner.md +123 -0
  17. package/template/agents/security-auditor.md +107 -0
  18. package/template/agents/test-engineer.md +133 -0
  19. package/template/rules/GEMINI.md +180 -0
  20. package/template/scripts/checklist.py +170 -0
  21. package/template/scripts/verify_all.py +243 -0
  22. package/template/skills/api-patterns/SKILL.md +116 -0
  23. package/template/skills/architecture/SKILL.md +98 -0
  24. package/template/skills/aspnet-patterns/SKILL.md +120 -0
  25. package/template/skills/azure-aks/SKILL.md +136 -0
  26. package/template/skills/azure-devops/SKILL.md +123 -0
  27. package/template/skills/azure-keyvault/SKILL.md +100 -0
  28. package/template/skills/brainstorming/SKILL.md +96 -0
  29. package/template/skills/clean-code/SKILL.md +84 -0
  30. package/template/skills/csharp-patterns/SKILL.md +115 -0
  31. package/template/skills/documentation-templates/SKILL.md +127 -0
  32. package/template/skills/english-education/SKILL.md +116 -0
  33. package/template/skills/english-education/references/lesson-templates.md +151 -0
  34. package/template/skills/english-education/references/quiz-templates.md +177 -0
  35. package/template/skills/english-education/scripts/curriculum_validator.py +175 -0
  36. package/template/skills/frontend-design/SKILL.md +199 -0
  37. package/template/skills/frontend-design/animation-guide.md +217 -0
  38. package/template/skills/frontend-design/design-systems.md +230 -0
  39. package/template/skills/frontend-design/ux-psychology.md +128 -0
  40. package/template/skills/gitops-patterns/SKILL.md +105 -0
  41. package/template/skills/grafana-logging/SKILL.md +107 -0
  42. package/template/skills/intelligent-routing/SKILL.md +75 -0
  43. package/template/skills/plan-writing/SKILL.md +96 -0
  44. package/template/skills/sqlserver-design/SKILL.md +97 -0
  45. package/template/skills/systematic-debugging/SKILL.md +98 -0
  46. package/template/skills/testing-patterns/SKILL.md +102 -0
  47. package/template/skills/vitest-testing/SKILL.md +116 -0
  48. package/template/skills/vue3-patterns/SKILL.md +195 -0
  49. package/template/skills/vulnerability-scanner/SKILL.md +104 -0
  50. package/template/skills/xunit-testing/SKILL.md +127 -0
  51. package/template/workflows/brainstorm.md +69 -0
  52. package/template/workflows/code.md +82 -0
  53. package/template/workflows/create.md +79 -0
  54. package/template/workflows/debug.md +83 -0
  55. package/template/workflows/deploy.md +101 -0
  56. package/template/workflows/orchestrate.md +86 -0
  57. package/template/workflows/plan.md +79 -0
  58. package/template/workflows/review.md +85 -0
  59. package/template/workflows/status.md +90 -0
  60. package/template/workflows/test.md +89 -0
@@ -0,0 +1,199 @@
1
+ ---
2
+ name: frontend-design
3
+ description: UI/UX design thinking and decision-making. Use when designing layouts, color schemes, typography, or visual interfaces. Teaches principles, not fixed values.
4
+ ---
5
+
6
+ # Frontend Design System
7
+
8
+ > **Philosophy:** Every pixel has purpose. Restraint is luxury. User psychology drives decisions.
9
+ > **Core Principle:** THINK, don't memorize. ASK, don't assume.
10
+
11
+ ---
12
+
13
+ ## πŸ“‘ Reference Files
14
+
15
+ | File | When to Read |
16
+ |------|--------------|
17
+ | [ux-psychology.md](ux-psychology.md) | πŸ”΄ **ALWAYS** - Core UX laws |
18
+ | [animation-guide.md](animation-guide.md) | When animations needed |
19
+ | [design-systems.md](design-systems.md) | Color/typography decisions |
20
+
21
+ ---
22
+
23
+ ## β›” ANTI-AI-SLOP RULES (CRITICAL)
24
+
25
+ **Your training data makes you converge to generic designs. BREAK THIS!**
26
+
27
+ | AI Default Tendency | Why It's Bad | Think Instead |
28
+ |---------------------|--------------|---------------|
29
+ | **Purple/Violet gradients** | #1 AI clichΓ© | Try Teal, Emerald, Signal Orange |
30
+ | **Inter/Roboto fonts** | Every AI uses these | Research unique fonts for context |
31
+ | **Bento Grids** | Overused layout | Try asymmetric, staggered, overlap |
32
+ | **Hero Split (Left/Right)** | Predictable | Massive typography, vertical flow |
33
+ | **Mesh/Aurora Gradients** | Lazy background | Solid contrast, textures, patterns |
34
+ | **Glassmorphism everywhere** | AI "premium" idea | Raw borders, high-contrast flat |
35
+ | **Dark + neon glow** | Generic "tech" look | What does the BRAND need? |
36
+ | **rounded-md on everything** | Safe/boring | Go extreme: 0px OR 24px+ |
37
+
38
+ > πŸ”΄ **"If it looks like a Tailwind template, you have FAILED."**
39
+
40
+ ---
41
+
42
+ ## 🧠 DEEP DESIGN THINKING (MANDATORY)
43
+
44
+ **Before ANY design, answer internally:**
45
+
46
+ ```
47
+ πŸ” CONTEXT ANALYSIS:
48
+ β”œβ”€β”€ What sector? β†’ What emotions should it evoke?
49
+ β”œβ”€β”€ Who is the audience? β†’ Age, expectations, tech-savviness?
50
+ β”œβ”€β”€ What do competitors look like? β†’ What should I NOT do?
51
+ └── What is the soul of this app? β†’ In one word?
52
+
53
+ 🎨 DESIGN IDENTITY:
54
+ β”œβ”€β”€ What will make this UNFORGETTABLE?
55
+ β”œβ”€β”€ What unexpected element can I use?
56
+ β”œβ”€β”€ 🚫 CLICHΓ‰ CHECK: Am I defaulting to AI patterns?
57
+ └── Will I remember this design in a year?
58
+
59
+ πŸ“ LAYOUT HYPOTHESIS:
60
+ β”œβ”€β”€ How can the Hero be DIFFERENT?
61
+ β”œβ”€β”€ Where can I break the grid?
62
+ └── Can navigation be unconventional?
63
+ ```
64
+
65
+ ---
66
+
67
+ ## 🎨 DESIGN COMMITMENT (REQUIRED OUTPUT)
68
+
69
+ **Present this block to user BEFORE coding:**
70
+
71
+ ```markdown
72
+ 🎨 DESIGN COMMITMENT:
73
+
74
+ - **Style Choice:** [Brutalist / Neo-Retro / Swiss Punk / Minimal Luxury]
75
+ - **Primary Color:** [NOT purple/blue - justify choice]
76
+ - **Typography:** [Specific fonts, not Inter/Roboto]
77
+ - **Layout Risk:** [What unconventional decision did I take?]
78
+ - **ClichΓ© Avoided:** [Which AI default did I explicitly kill?]
79
+ ```
80
+
81
+ ---
82
+
83
+ ## ⚠️ ASK BEFORE ASSUMING
84
+
85
+ **If user request is vague, ASK:**
86
+
87
+ | Unspecified | Ask This |
88
+ |-------------|----------|
89
+ | Color | "What palette? (warm/cool/bold/minimal)" |
90
+ | Style | "What vibe? (professional/playful/luxurious)" |
91
+ | Layout | "Any preference? (spacious/dense/asymmetric)" |
92
+ | Audience | "Who is this for? (age/tech-savviness)" |
93
+
94
+ ---
95
+
96
+ ## πŸ“ LAYOUT PRINCIPLES
97
+
98
+ ### Layout Alternatives (NOT Split Screen)
99
+
100
+ | Layout | When to Use |
101
+ |--------|-------------|
102
+ | **Massive Typography** | Hero with 80px+ text as visual |
103
+ | **Staggered Grid** | Cards at different alignments |
104
+ | **Overlapping Elements** | Depth through z-layers |
105
+ | **Extreme Asymmetry** | 90/10 split for tension |
106
+ | **Vertical Flow** | No "above the fold" hero |
107
+
108
+ ### 8-Point Grid
109
+
110
+ ```
111
+ All spacing in multiples of 8:
112
+ β”œβ”€β”€ Tight: 4px, 8px
113
+ β”œβ”€β”€ Medium: 16px, 24px
114
+ β”œβ”€β”€ Large: 32px, 48px
115
+ └── XL: 64px, 80px
116
+ ```
117
+
118
+ ---
119
+
120
+ ## ✨ MANDATORY VISUAL POLISH
121
+
122
+ ### Animation Requirements
123
+
124
+ - [ ] **Scroll reveals** - Staggered entrance animations
125
+ - [ ] **Micro-interactions** - Hover/click feedback on all interactive elements
126
+ - [ ] **Spring physics** - Natural, not linear easing
127
+ - [ ] **prefers-reduced-motion** - MUST respect accessibility
128
+
129
+ ### Depth & Texture
130
+
131
+ - [ ] **Layering** - Overlapping elements, parallax
132
+ - [ ] **Shadows** - Meaningful elevation hierarchy
133
+ - [ ] **Texture** - Grain, patterns, not flat colors only
134
+
135
+ ---
136
+
137
+ ## 🧐 REALITY CHECK (ANTI-SELF-DECEPTION)
138
+
139
+ Before delivering, verify HONESTLY:
140
+
141
+ | Question | FAIL | PASS |
142
+ |----------|------|------|
143
+ | "Could this be a template?" | "It's clean..." | "No way, this is unique" |
144
+ | "Would I scroll past on Dribbble?" | "It's professional" | "I'd stop and look" |
145
+ | "Can I describe without 'clean'?" | "Clean minimal" | "Brutalist with aurora accents" |
146
+
147
+ ### Self-Deception Patterns
148
+
149
+ - ❌ "I used custom color" β†’ But it's still blue+white
150
+ - ❌ "I have hover effects" β†’ But just `opacity: 0.8`
151
+ - ❌ "Layout is varied" β†’ But 3-column equal grid
152
+
153
+ > πŸ”΄ **If it looks generic, you have FAILED. No exceptions.**
154
+
155
+ ---
156
+
157
+ ## Vue3 + Tailwind Implementation
158
+
159
+ ### Component Animation (Vue)
160
+
161
+ ```vue
162
+ <template>
163
+ <Transition name="slide-up" appear>
164
+ <div v-if="show" class="card">...</div>
165
+ </Transition>
166
+ </template>
167
+
168
+ <style>
169
+ .slide-up-enter-active { transition: all 0.4s ease-out; }
170
+ .slide-up-enter-from { opacity: 0; transform: translateY(20px); }
171
+ </style>
172
+ ```
173
+
174
+ ### Tailwind Custom Theme
175
+
176
+ ```javascript
177
+ // tailwind.config.js - CUSTOMIZE, don't use defaults
178
+ module.exports = {
179
+ theme: {
180
+ extend: {
181
+ colors: {
182
+ primary: '#0d9488', // NOT default purple
183
+ accent: '#f59e0b', // Distinctive accent
184
+ },
185
+ fontFamily: {
186
+ display: ['Space Grotesk', 'sans-serif'], // Unique font
187
+ body: ['DM Sans', 'sans-serif'],
188
+ },
189
+ borderRadius: {
190
+ 'card': '2px', // Sharp, not rounded-md
191
+ }
192
+ }
193
+ }
194
+ }
195
+ ```
196
+
197
+ ---
198
+
199
+ > **Remember:** Design is THINKING, not copying. Avoid the "Modern SaaS Safe Harbor"!
@@ -0,0 +1,217 @@
1
+ # Animation Guidelines
2
+
3
+ > Animation principles and timing psychology. Learn to decide, not copy.
4
+
5
+ ---
6
+
7
+ ## Duration Principles
8
+
9
+ ### What Affects Timing
10
+
11
+ ```
12
+ Factors determining animation speed:
13
+ β”œβ”€β”€ DISTANCE: Further travel = longer duration
14
+ β”œβ”€β”€ SIZE: Larger elements = slower animations
15
+ β”œβ”€β”€ IMPORTANCE: Critical actions = clear feedback
16
+ └── CONTEXT: Urgent = fast, luxurious = slow
17
+ ```
18
+
19
+ ### Duration Ranges
20
+
21
+ | Purpose | Range | Example |
22
+ |---------|-------|---------|
23
+ | Instant feedback | 50-100ms | Button press |
24
+ | Micro-interactions | 100-200ms | Hover effects |
25
+ | Standard transitions | 200-300ms | Tabs, toggles |
26
+ | Complex animations | 300-500ms | Modal open |
27
+ | Page transitions | 400-600ms | Route change |
28
+ | Premium/Wow effects | 800ms+ | Hero reveals |
29
+
30
+ ---
31
+
32
+ ## Easing Principles
33
+
34
+ | Easing | Best For | Feels Like |
35
+ |--------|----------|------------|
36
+ | **ease-out** | Elements entering | Arriving, settling |
37
+ | **ease-in** | Elements leaving | Departing, exiting |
38
+ | **ease-in-out** | Emphasis, loops | Smooth, deliberate |
39
+ | **linear** | Continuous motion | Mechanical |
40
+ | **spring/bounce** | Playful UI | Fun, energetic |
41
+
42
+ ### The Pattern
43
+
44
+ ```css
45
+ /* ENTERING = ease-out (decelerate) */
46
+ .enter { animation-timing-function: ease-out; }
47
+
48
+ /* LEAVING = ease-in (accelerate) */
49
+ .exit { animation-timing-function: ease-in; }
50
+
51
+ /* CONTINUOUS = ease-in-out */
52
+ .loop { animation-timing-function: ease-in-out; }
53
+ ```
54
+
55
+ ---
56
+
57
+ ## Micro-Interactions
58
+
59
+ ### Purpose
60
+
61
+ ```
62
+ β”œβ”€β”€ FEEDBACK: Confirm action happened
63
+ β”œβ”€β”€ GUIDANCE: Show what's possible
64
+ β”œβ”€β”€ STATUS: Indicate current state
65
+ └── DELIGHT: Small moments of joy
66
+ ```
67
+
68
+ ### Button States
69
+
70
+ | State | Effect | Tailwind Example |
71
+ |-------|--------|------------------|
72
+ | Hover | Lift + glow | `hover:-translate-y-1 hover:shadow-lg` |
73
+ | Active | Press down | `active:scale-95` |
74
+ | Focus | Ring indicator | `focus:ring-2 focus:ring-offset-2` |
75
+ | Loading | Spinner | `animate-spin` |
76
+
77
+ ---
78
+
79
+ ## Scroll Animations (Vue3 + Tailwind)
80
+
81
+ ### Intersection Observer Pattern
82
+
83
+ ```vue
84
+ <script setup lang="ts">
85
+ import { ref, onMounted } from 'vue'
86
+
87
+ const isVisible = ref(false)
88
+ const element = ref<HTMLElement>()
89
+
90
+ onMounted(() => {
91
+ const observer = new IntersectionObserver(([entry]) => {
92
+ isVisible.value = entry.isIntersecting
93
+ }, { threshold: 0.1 })
94
+
95
+ if (element.value) observer.observe(element.value)
96
+ })
97
+ </script>
98
+
99
+ <template>
100
+ <div
101
+ ref="element"
102
+ :class="[
103
+ 'transition-all duration-500 ease-out',
104
+ isVisible ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-8'
105
+ ]"
106
+ >
107
+ Content reveals on scroll
108
+ </div>
109
+ </template>
110
+ ```
111
+
112
+ ### Staggered Animation
113
+
114
+ ```vue
115
+ <template>
116
+ <div v-for="(item, i) in items" :key="i"
117
+ :style="{ transitionDelay: `${i * 100}ms` }"
118
+ :class="isVisible ? 'opacity-100' : 'opacity-0'"
119
+ >
120
+ {{ item }}
121
+ </div>
122
+ </template>
123
+ ```
124
+
125
+ ---
126
+
127
+ ## Vue Transition Components
128
+
129
+ ```vue
130
+ <!-- Fade -->
131
+ <Transition name="fade">
132
+ <div v-if="show">Content</div>
133
+ </Transition>
134
+
135
+ <style>
136
+ .fade-enter-active, .fade-leave-active {
137
+ transition: opacity 0.3s ease;
138
+ }
139
+ .fade-enter-from, .fade-leave-to {
140
+ opacity: 0;
141
+ }
142
+ </style>
143
+
144
+ <!-- Slide Up -->
145
+ <Transition name="slide-up" appear>
146
+ <div v-if="show">Content</div>
147
+ </Transition>
148
+
149
+ <style>
150
+ .slide-up-enter-active {
151
+ transition: all 0.4s ease-out;
152
+ }
153
+ .slide-up-enter-from {
154
+ opacity: 0;
155
+ transform: translateY(20px);
156
+ }
157
+ </style>
158
+ ```
159
+
160
+ ---
161
+
162
+ ## Performance Rules
163
+
164
+ ### βœ… Animate ONLY
165
+
166
+ ```css
167
+ /* GPU-accelerated (FAST) */
168
+ transform: translate(), scale(), rotate();
169
+ opacity: 0 to 1;
170
+ ```
171
+
172
+ ### ❌ NEVER Animate
173
+
174
+ ```css
175
+ /* CPU-intensive (SLOW) */
176
+ width, height
177
+ top, left, right, bottom
178
+ margin, padding
179
+ border-radius
180
+ box-shadow
181
+ ```
182
+
183
+ ### Accessibility (MANDATORY)
184
+
185
+ ```css
186
+ @media (prefers-reduced-motion: reduce) {
187
+ *, *::before, *::after {
188
+ animation-duration: 0.01ms !important;
189
+ transition-duration: 0.01ms !important;
190
+ }
191
+ }
192
+ ```
193
+
194
+ ---
195
+
196
+ ## Animation Checklist
197
+
198
+ Before adding animation:
199
+
200
+ - [ ] **Purpose** - Feedback, guidance, or delight?
201
+ - [ ] **Timing** - Appropriate duration?
202
+ - [ ] **Easing** - Correct for enter/exit/emphasis?
203
+ - [ ] **Performance** - transform/opacity only?
204
+ - [ ] **Reduced motion** - Accessibility respected?
205
+ - [ ] **Consistency** - Matches other animations?
206
+
207
+ ### Anti-Patterns
208
+
209
+ - ❌ Same timing every project
210
+ - ❌ Animation without purpose
211
+ - ❌ Ignoring reduced-motion
212
+ - ❌ Animating expensive properties
213
+ - ❌ Too many things moving at once
214
+
215
+ ---
216
+
217
+ > **Remember:** Animation is communication. Every motion should serve the user.
@@ -0,0 +1,230 @@
1
+ # Design Systems Reference
2
+
3
+ > Color theory, typography, and visual hierarchy principles for Vue3 + Tailwind.
4
+
5
+ ---
6
+
7
+ ## Color Principles
8
+
9
+ ### 60-30-10 Rule
10
+
11
+ ```
12
+ 60% β†’ Primary/Background (calm, neutral base)
13
+ 30% β†’ Secondary (supporting areas)
14
+ 10% β†’ Accent (CTAs, highlights)
15
+ ```
16
+
17
+ ### Color Psychology
18
+
19
+ | Need | Consider | Avoid |
20
+ |------|----------|-------|
21
+ | Trust, calm | Blue family | Aggressive reds |
22
+ | Growth, nature | Green family | Industrial grays |
23
+ | Energy, urgency | Orange, red | Passive blues |
24
+ | Luxury | Deep Teal, Gold, Emerald | Cheap brights |
25
+ | Clean, minimal | Neutrals | Overwhelming color |
26
+
27
+ ### β›” Colors to AVOID (AI ClichΓ©s)
28
+
29
+ | ❌ Avoid | Why | βœ… Try Instead |
30
+ |----------|-----|----------------|
31
+ | Purple/Violet | #1 AI default | Teal, Emerald, Coral |
32
+ | Fintech Blue | Safe harbor | Signal Orange, Deep Green |
33
+ | Pink gradients | Overused | Rich Gold, Warm Terracotta |
34
+ | Neon glow | Generic "tech" | Solid contrast, texture |
35
+
36
+ ### Selection Process
37
+
38
+ 1. **Industry?** β†’ Narrows options
39
+ 2. **Emotion?** β†’ Picks primary
40
+ 3. **Light/Dark mode?** β†’ Sets foundation
41
+ 4. **ASK USER** if not specified
42
+
43
+ ---
44
+
45
+ ## Tailwind Custom Palette
46
+
47
+ ```javascript
48
+ // tailwind.config.js - UNIQUE colors
49
+ module.exports = {
50
+ theme: {
51
+ extend: {
52
+ colors: {
53
+ // Define brand-specific colors
54
+ brand: {
55
+ 50: '#f0fdfa',
56
+ 500: '#14b8a6', // Primary - NOT purple
57
+ 900: '#134e4a',
58
+ },
59
+ accent: {
60
+ DEFAULT: '#f59e0b', // Distinctive accent
61
+ hover: '#d97706',
62
+ }
63
+ }
64
+ }
65
+ }
66
+ }
67
+ ```
68
+
69
+ ---
70
+
71
+ ## Typography Principles
72
+
73
+ ### Scale Ratios
74
+
75
+ | Content Type | Ratio | Feel |
76
+ |--------------|-------|------|
77
+ | Dense UI | 1.125-1.2 | Compact, efficient |
78
+ | General web | 1.25 | Balanced |
79
+ | Editorial | 1.333 | Readable, spacious |
80
+ | Hero/display | 1.5-1.618 | Dramatic |
81
+
82
+ ### Font Pairing Concept
83
+
84
+ ```
85
+ Contrast + Harmony:
86
+ β”œβ”€β”€ DIFFERENT enough for hierarchy
87
+ β”œβ”€β”€ SIMILAR enough for cohesion
88
+ └── Usually: display + neutral, or serif + sans
89
+ ```
90
+
91
+ ### β›” Fonts to AVOID (AI Defaults)
92
+
93
+ | ❌ Avoid | Why | βœ… Try Instead |
94
+ |----------|-----|----------------|
95
+ | Inter | Every AI uses it | Space Grotesk, DM Sans |
96
+ | Roboto | Generic | Outfit, General Sans |
97
+ | Poppins | Overused | Cabinet Grotesk, Clash Display |
98
+ | System fonts | Lazy | Research unique fonts |
99
+
100
+ ### Unique Font Suggestions
101
+
102
+ | Purpose | Font Options |
103
+ |---------|--------------|
104
+ | Display/Hero | Clash Display, Cabinet Grotesk, Syne |
105
+ | Body | DM Sans, Outfit, General Sans |
106
+ | Mono/Code | JetBrains Mono, Fira Code |
107
+ | Elegant | Fraunces, Newsreader, Lora |
108
+
109
+ ---
110
+
111
+ ## Tailwind Typography Setup
112
+
113
+ ```javascript
114
+ // tailwind.config.js
115
+ module.exports = {
116
+ theme: {
117
+ extend: {
118
+ fontFamily: {
119
+ display: ['Clash Display', 'sans-serif'],
120
+ body: ['DM Sans', 'sans-serif'],
121
+ mono: ['JetBrains Mono', 'monospace'],
122
+ },
123
+ fontSize: {
124
+ 'hero': ['4.5rem', { lineHeight: '1.1', letterSpacing: '-0.02em' }],
125
+ 'display': ['3rem', { lineHeight: '1.2' }],
126
+ }
127
+ }
128
+ }
129
+ }
130
+ ```
131
+
132
+ ### Readability Rules
133
+
134
+ - **Line length:** 45-75 characters optimal
135
+ - **Line height:** 1.4-1.6 for body
136
+ - **Contrast:** WCAG AA minimum (4.5:1)
137
+ - **Base size:** 16px+ for web
138
+
139
+ ---
140
+
141
+ ## Visual Hierarchy
142
+
143
+ ### Sizing Principles
144
+
145
+ | Element | Consideration |
146
+ |---------|---------------|
147
+ | **Touch targets** | Min 44Γ—44px mobile |
148
+ | **Buttons** | Height by importance (48/40/36px) |
149
+ | **Inputs** | Match button height |
150
+ | **Cards** | Consistent padding |
151
+ | **Reading width** | max-w-prose (65ch) |
152
+
153
+ ### 8-Point Grid
154
+
155
+ ```css
156
+ /* All spacing in multiples of 8 */
157
+ .spacing {
158
+ --space-1: 4px; /* half-step */
159
+ --space-2: 8px;
160
+ --space-3: 16px;
161
+ --space-4: 24px;
162
+ --space-5: 32px;
163
+ --space-6: 48px;
164
+ --space-7: 64px;
165
+ --space-8: 80px;
166
+ }
167
+ ```
168
+
169
+ ---
170
+
171
+ ## Border Radius Strategy
172
+
173
+ **Don't default to `rounded-md`!**
174
+
175
+ | Style | Radius | Use Case |
176
+ |-------|--------|----------|
177
+ | **Sharp** | 0-2px | Tech, Luxury, Brutalist |
178
+ | **Subtle** | 4-6px | Professional, B2B |
179
+ | **Medium** | 8-12px | General, balanced |
180
+ | **Friendly** | 16-24px | Social, lifestyle |
181
+ | **Pill** | 9999px | Buttons, badges |
182
+
183
+ ```javascript
184
+ // tailwind.config.js - COMMIT to a style
185
+ module.exports = {
186
+ theme: {
187
+ extend: {
188
+ borderRadius: {
189
+ 'card': '2px', // Sharp for tech
190
+ 'button': '9999px', // Pill buttons
191
+ }
192
+ }
193
+ }
194
+ }
195
+ ```
196
+
197
+ ---
198
+
199
+ ## Shadow Hierarchy
200
+
201
+ ```css
202
+ /* Tailwind shadow scale */
203
+ .elevation-1 { @apply shadow-sm; } /* Subtle lift */
204
+ .elevation-2 { @apply shadow-md; } /* Cards */
205
+ .elevation-3 { @apply shadow-lg; } /* Modals, dropdowns */
206
+ .elevation-4 { @apply shadow-xl; } /* Popovers */
207
+ .elevation-5 { @apply shadow-2xl; } /* Dialogs */
208
+
209
+ /* Custom dramatic shadow */
210
+ .shadow-dramatic {
211
+ box-shadow:
212
+ 0 25px 50px -12px rgba(0, 0, 0, 0.25),
213
+ 0 0 0 1px rgba(0, 0, 0, 0.05);
214
+ }
215
+ ```
216
+
217
+ ---
218
+
219
+ ## Quick Decision Checklist
220
+
221
+ - [ ] **Color** - NOT purple, justified choice
222
+ - [ ] **Typography** - NOT Inter/Roboto, unique fonts
223
+ - [ ] **Border radius** - Committed style (sharp OR rounded)
224
+ - [ ] **Shadows** - Elevation hierarchy defined
225
+ - [ ] **Spacing** - 8-point grid consistent
226
+ - [ ] **60-30-10** - Color ratio balanced
227
+
228
+ ---
229
+
230
+ > **Remember:** Design systems create consistency. Define your tokens ONCE, use everywhere.