@theproductguy/create-mission-control 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.js +63 -7
- package/package.json +2 -2
- package/src/template/.env.example +28 -0
- package/src/template/.github/ISSUE_TEMPLATE/bug_report.md +40 -0
- package/src/template/.github/ISSUE_TEMPLATE/feature_request.md +30 -0
- package/src/template/.github/PULL_REQUEST_TEMPLATE.md +33 -0
- package/src/template/.github/workflows/ci.yml +83 -0
- package/src/template/.husky/commit-msg +1 -0
- package/src/template/.husky/pre-commit +1 -0
- package/src/template/.prettierrc +11 -0
- package/src/template/README.md +78 -0
- package/src/template/agent-os/commands/create-constitution/create-constitution.md +89 -0
- package/src/template/agent-os/commands/export-product/export-product.md +24 -0
- package/src/template/agent-os/commands/initialize-design/initialize-design.md +10 -1
- package/src/template/agent-os/commands/research-tech/research-tech.md +93 -0
- package/src/template/agent-os/commands/shape-spec/shape-spec.md +2 -1
- package/src/template/agent-os/docs/context7.md +20 -0
- package/src/template/commitlint.config.js +25 -0
- package/src/template/control-center/backend/index.js +67 -4
- package/src/template/control-center/frontend/src/App.tsx +193 -64
- package/src/template/design-system/{.claude → .gemini}/commands/design-os/design-shell.md +95 -69
- package/src/template/design-system/.gemini/commands/design-os/design-tokens.md +211 -0
- package/src/template/design-system/.gemini/commands/impeccable/WORKFLOW.md +163 -0
- package/src/template/design-system/.gemini/commands/impeccable/adapt.md +189 -0
- package/src/template/design-system/.gemini/commands/impeccable/animate.md +184 -0
- package/src/template/design-system/.gemini/commands/impeccable/audit.md +123 -0
- package/src/template/design-system/.gemini/commands/impeccable/bolder.md +126 -0
- package/src/template/design-system/.gemini/commands/impeccable/clarify.md +173 -0
- package/src/template/design-system/.gemini/commands/impeccable/colorize.md +152 -0
- package/src/template/design-system/.gemini/commands/impeccable/critique.md +112 -0
- package/src/template/design-system/.gemini/commands/impeccable/delight.md +311 -0
- package/src/template/design-system/.gemini/commands/impeccable/extract.md +88 -0
- package/src/template/design-system/.gemini/commands/impeccable/harden.md +351 -0
- package/src/template/design-system/.gemini/commands/impeccable/normalize.md +61 -0
- package/src/template/design-system/.gemini/commands/impeccable/onboard.md +236 -0
- package/src/template/design-system/.gemini/commands/impeccable/optimize.md +262 -0
- package/src/template/design-system/.gemini/commands/impeccable/polish.md +196 -0
- package/src/template/design-system/.gemini/commands/impeccable/quieter.md +112 -0
- package/src/template/design-system/.gemini/commands/impeccable/simplify.md +131 -0
- package/src/template/design-system/.gemini/commands/impeccable/teach-impeccable.md +67 -0
- package/src/template/design-system/.gemini/hooks/ai-slop-guard.md +80 -0
- package/src/template/design-system/.gemini/hooks/on-design-complete.md +63 -0
- package/src/template/design-system/.gemini/skills/frontend-design/SKILL.md +126 -0
- package/src/template/design-system/.gemini/skills/frontend-design/reference/color-and-contrast.md +132 -0
- package/src/template/design-system/.gemini/skills/frontend-design/reference/interaction-design.md +123 -0
- package/src/template/design-system/.gemini/skills/frontend-design/reference/motion-design.md +99 -0
- package/src/template/design-system/.gemini/skills/frontend-design/reference/responsive-design.md +114 -0
- package/src/template/design-system/.gemini/skills/frontend-design/reference/spatial-design.md +100 -0
- package/src/template/design-system/.gemini/skills/frontend-design/reference/typography.md +131 -0
- package/src/template/design-system/.gemini/skills/frontend-design/reference/ux-writing.md +107 -0
- package/src/template/design-system/src/components/DesignPage.tsx +104 -0
- package/src/template/eslint.config.js +37 -0
- package/src/template/lint-staged.config.js +6 -0
- package/src/template/package-lock.json +10308 -0
- package/src/template/package.json +25 -2
- package/src/template/src/__tests__/example.test.ts +17 -0
- package/src/template/src/__tests__/setup.ts +14 -0
- package/src/template/vitest.config.ts +25 -0
- package/src/template/design-system/.claude/commands/design-os/design-tokens.md +0 -166
- package/src/template/design-system/.claude/skills/frontend-design/SKILL.md +0 -42
- /package/src/template/design-system/{.claude → .gemini}/commands/design-os/data-model.md +0 -0
- /package/src/template/design-system/{.claude → .gemini}/commands/design-os/design-screen.md +0 -0
- /package/src/template/design-system/{.claude → .gemini}/commands/design-os/export-product.md +0 -0
- /package/src/template/design-system/{.claude → .gemini}/commands/design-os/product-roadmap.md +0 -0
- /package/src/template/design-system/{.claude → .gemini}/commands/design-os/product-vision.md +0 -0
- /package/src/template/design-system/{.claude → .gemini}/commands/design-os/sample-data.md +0 -0
- /package/src/template/design-system/{.claude → .gemini}/commands/design-os/screenshot-design.md +0 -0
- /package/src/template/design-system/{.claude → .gemini}/commands/design-os/shape-section.md +0 -0
- /package/src/template/design-system/{claude.md → gemini.md} +0 -0
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
# COMMAND: Optimize
|
|
2
|
+
**Description**: Improve interface performance across loading speed, rendering, animations, images, and bundle size. Makes experiences faster and smoother.
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
Identify and fix performance issues to create faster, smoother user experiences.
|
|
6
|
+
|
|
7
|
+
## Assess Performance Issues
|
|
8
|
+
|
|
9
|
+
Understand current performance and identify problems:
|
|
10
|
+
|
|
11
|
+
1. **Measure current state**:
|
|
12
|
+
- **Core Web Vitals**: LCP, FID/INP, CLS scores
|
|
13
|
+
- **Load time**: Time to interactive, first contentful paint
|
|
14
|
+
- **Bundle size**: JavaScript, CSS, image sizes
|
|
15
|
+
- **Runtime performance**: Frame rate, memory usage, CPU usage
|
|
16
|
+
- **Network**: Request count, payload sizes, waterfall
|
|
17
|
+
|
|
18
|
+
2. **Identify bottlenecks**:
|
|
19
|
+
- What's slow? (Initial load? Interactions? Animations?)
|
|
20
|
+
- What's causing it? (Large images? Expensive JavaScript? Layout thrashing?)
|
|
21
|
+
- How bad is it? (Perceivable? Annoying? Blocking?)
|
|
22
|
+
- Who's affected? (All users? Mobile only? Slow connections?)
|
|
23
|
+
|
|
24
|
+
**CRITICAL**: Measure before and after. Premature optimization wastes time. Optimize what actually matters.
|
|
25
|
+
|
|
26
|
+
## Optimization Strategy
|
|
27
|
+
|
|
28
|
+
Create systematic improvement plan:
|
|
29
|
+
|
|
30
|
+
### Loading Performance
|
|
31
|
+
|
|
32
|
+
**Optimize Images**:
|
|
33
|
+
- Use modern formats (WebP, AVIF)
|
|
34
|
+
- Proper sizing (don't load 3000px image for 300px display)
|
|
35
|
+
- Lazy loading for below-fold images
|
|
36
|
+
- Responsive images (`srcset`, `picture` element)
|
|
37
|
+
- Compress images (80-85% quality is usually imperceptible)
|
|
38
|
+
- Use CDN for faster delivery
|
|
39
|
+
|
|
40
|
+
```html
|
|
41
|
+
<img
|
|
42
|
+
src="hero.webp"
|
|
43
|
+
srcset="hero-400.webp 400w, hero-800.webp 800w, hero-1200.webp 1200w"
|
|
44
|
+
sizes="(max-width: 400px) 400px, (max-width: 800px) 800px, 1200px"
|
|
45
|
+
loading="lazy"
|
|
46
|
+
alt="Hero image"
|
|
47
|
+
/>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Reduce JavaScript Bundle**:
|
|
51
|
+
- Code splitting (route-based, component-based)
|
|
52
|
+
- Tree shaking (remove unused code)
|
|
53
|
+
- Remove unused dependencies
|
|
54
|
+
- Lazy load non-critical code
|
|
55
|
+
- Use dynamic imports for large components
|
|
56
|
+
|
|
57
|
+
```javascript
|
|
58
|
+
// Lazy load heavy component
|
|
59
|
+
const HeavyChart = lazy(() => import('./HeavyChart'));
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Optimize CSS**:
|
|
63
|
+
- Remove unused CSS
|
|
64
|
+
- Critical CSS inline, rest async
|
|
65
|
+
- Minimize CSS files
|
|
66
|
+
- Use CSS containment for independent regions
|
|
67
|
+
|
|
68
|
+
**Optimize Fonts**:
|
|
69
|
+
- Use `font-display: swap` or `optional`
|
|
70
|
+
- Subset fonts (only characters you need)
|
|
71
|
+
- Preload critical fonts
|
|
72
|
+
- Use system fonts when appropriate
|
|
73
|
+
- Limit font weights loaded
|
|
74
|
+
|
|
75
|
+
```css
|
|
76
|
+
@font-face {
|
|
77
|
+
font-family: 'CustomFont';
|
|
78
|
+
src: url('/fonts/custom.woff2') format('woff2');
|
|
79
|
+
font-display: swap; /* Show fallback immediately */
|
|
80
|
+
unicode-range: U+0020-007F; /* Basic Latin only */
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Optimize Loading Strategy**:
|
|
85
|
+
- Critical resources first (async/defer non-critical)
|
|
86
|
+
- Preload critical assets
|
|
87
|
+
- Prefetch likely next pages
|
|
88
|
+
- Service worker for offline/caching
|
|
89
|
+
- HTTP/2 or HTTP/3 for multiplexing
|
|
90
|
+
|
|
91
|
+
### Rendering Performance
|
|
92
|
+
|
|
93
|
+
**Avoid Layout Thrashing**:
|
|
94
|
+
```javascript
|
|
95
|
+
// ❌ Bad: Alternating reads and writes (causes reflows)
|
|
96
|
+
elements.forEach(el => {
|
|
97
|
+
const height = el.offsetHeight; // Read (forces layout)
|
|
98
|
+
el.style.height = height * 2; // Write
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// ✅ Good: Batch reads, then batch writes
|
|
102
|
+
const heights = elements.map(el => el.offsetHeight); // All reads
|
|
103
|
+
elements.forEach((el, i) => {
|
|
104
|
+
el.style.height = heights[i] * 2; // All writes
|
|
105
|
+
});
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Optimize Rendering**:
|
|
109
|
+
- Use CSS `contain` property for independent regions
|
|
110
|
+
- Minimize DOM depth (flatter is faster)
|
|
111
|
+
- Reduce DOM size (fewer elements)
|
|
112
|
+
- Use `content-visibility: auto` for long lists
|
|
113
|
+
- Virtual scrolling for very long lists (react-window, react-virtualized)
|
|
114
|
+
|
|
115
|
+
**Reduce Paint & Composite**:
|
|
116
|
+
- Use `transform` and `opacity` for animations (GPU-accelerated)
|
|
117
|
+
- Avoid animating layout properties (width, height, top, left)
|
|
118
|
+
- Use `will-change` sparingly for known expensive operations
|
|
119
|
+
- Minimize paint areas (smaller is faster)
|
|
120
|
+
|
|
121
|
+
### Animation Performance
|
|
122
|
+
|
|
123
|
+
**GPU Acceleration**:
|
|
124
|
+
```css
|
|
125
|
+
/* ✅ GPU-accelerated (fast) */
|
|
126
|
+
.animated {
|
|
127
|
+
transform: translateX(100px);
|
|
128
|
+
opacity: 0.5;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/* ❌ CPU-bound (slow) */
|
|
132
|
+
.animated {
|
|
133
|
+
left: 100px;
|
|
134
|
+
width: 300px;
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Smooth 60fps**:
|
|
139
|
+
- Target 16ms per frame (60fps)
|
|
140
|
+
- Use `requestAnimationFrame` for JS animations
|
|
141
|
+
- Debounce/throttle scroll handlers
|
|
142
|
+
- Use CSS animations when possible
|
|
143
|
+
- Avoid long-running JavaScript during animations
|
|
144
|
+
|
|
145
|
+
**Intersection Observer**:
|
|
146
|
+
```javascript
|
|
147
|
+
// Efficiently detect when elements enter viewport
|
|
148
|
+
const observer = new IntersectionObserver((entries) => {
|
|
149
|
+
entries.forEach(entry => {
|
|
150
|
+
if (entry.isIntersecting) {
|
|
151
|
+
// Element is visible, lazy load or animate
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### React/Framework Optimization
|
|
158
|
+
|
|
159
|
+
**React-specific**:
|
|
160
|
+
- Use `memo()` for expensive components
|
|
161
|
+
- `useMemo()` and `useCallback()` for expensive computations
|
|
162
|
+
- Virtualize long lists
|
|
163
|
+
- Code split routes
|
|
164
|
+
- Avoid inline function creation in render
|
|
165
|
+
- Use React DevTools Profiler
|
|
166
|
+
|
|
167
|
+
**Framework-agnostic**:
|
|
168
|
+
- Minimize re-renders
|
|
169
|
+
- Debounce expensive operations
|
|
170
|
+
- Memoize computed values
|
|
171
|
+
- Lazy load routes and components
|
|
172
|
+
|
|
173
|
+
### Network Optimization
|
|
174
|
+
|
|
175
|
+
**Reduce Requests**:
|
|
176
|
+
- Combine small files
|
|
177
|
+
- Use SVG sprites for icons
|
|
178
|
+
- Inline small critical assets
|
|
179
|
+
- Remove unused third-party scripts
|
|
180
|
+
|
|
181
|
+
**Optimize APIs**:
|
|
182
|
+
- Use pagination (don't load everything)
|
|
183
|
+
- GraphQL to request only needed fields
|
|
184
|
+
- Response compression (gzip, brotli)
|
|
185
|
+
- HTTP caching headers
|
|
186
|
+
- CDN for static assets
|
|
187
|
+
|
|
188
|
+
**Optimize for Slow Connections**:
|
|
189
|
+
- Adaptive loading based on connection (navigator.connection)
|
|
190
|
+
- Optimistic UI updates
|
|
191
|
+
- Request prioritization
|
|
192
|
+
- Progressive enhancement
|
|
193
|
+
|
|
194
|
+
## Core Web Vitals Optimization
|
|
195
|
+
|
|
196
|
+
### Largest Contentful Paint (LCP < 2.5s)
|
|
197
|
+
- Optimize hero images
|
|
198
|
+
- Inline critical CSS
|
|
199
|
+
- Preload key resources
|
|
200
|
+
- Use CDN
|
|
201
|
+
- Server-side rendering
|
|
202
|
+
|
|
203
|
+
### First Input Delay (FID < 100ms) / INP (< 200ms)
|
|
204
|
+
- Break up long tasks
|
|
205
|
+
- Defer non-critical JavaScript
|
|
206
|
+
- Use web workers for heavy computation
|
|
207
|
+
- Reduce JavaScript execution time
|
|
208
|
+
|
|
209
|
+
### Cumulative Layout Shift (CLS < 0.1)
|
|
210
|
+
- Set dimensions on images and videos
|
|
211
|
+
- Don't inject content above existing content
|
|
212
|
+
- Use `aspect-ratio` CSS property
|
|
213
|
+
- Reserve space for ads/embeds
|
|
214
|
+
- Avoid animations that cause layout shifts
|
|
215
|
+
|
|
216
|
+
```css
|
|
217
|
+
/* Reserve space for image */
|
|
218
|
+
.image-container {
|
|
219
|
+
aspect-ratio: 16 / 9;
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Performance Monitoring
|
|
224
|
+
|
|
225
|
+
**Tools to use**:
|
|
226
|
+
- Chrome DevTools (Lighthouse, Performance panel)
|
|
227
|
+
- WebPageTest
|
|
228
|
+
- Core Web Vitals (Chrome UX Report)
|
|
229
|
+
- Bundle analyzers (webpack-bundle-analyzer)
|
|
230
|
+
- Performance monitoring (Sentry, DataDog, New Relic)
|
|
231
|
+
|
|
232
|
+
**Key metrics**:
|
|
233
|
+
- LCP, FID/INP, CLS (Core Web Vitals)
|
|
234
|
+
- Time to Interactive (TTI)
|
|
235
|
+
- First Contentful Paint (FCP)
|
|
236
|
+
- Total Blocking Time (TBT)
|
|
237
|
+
- Bundle size
|
|
238
|
+
- Request count
|
|
239
|
+
|
|
240
|
+
**IMPORTANT**: Measure on real devices with real network conditions. Desktop Chrome with fast connection isn't representative.
|
|
241
|
+
|
|
242
|
+
**NEVER**:
|
|
243
|
+
- Optimize without measuring (premature optimization)
|
|
244
|
+
- Sacrifice accessibility for performance
|
|
245
|
+
- Break functionality while optimizing
|
|
246
|
+
- Use `will-change` everywhere (creates new layers, uses memory)
|
|
247
|
+
- Lazy load above-fold content
|
|
248
|
+
- Optimize micro-optimizations while ignoring major issues (optimize the biggest bottleneck first)
|
|
249
|
+
- Forget about mobile performance (often slower devices, slower connections)
|
|
250
|
+
|
|
251
|
+
## Verify Improvements
|
|
252
|
+
|
|
253
|
+
Test that optimizations worked:
|
|
254
|
+
|
|
255
|
+
- **Before/after metrics**: Compare Lighthouse scores
|
|
256
|
+
- **Real user monitoring**: Track improvements for real users
|
|
257
|
+
- **Different devices**: Test on low-end Android, not just flagship iPhone
|
|
258
|
+
- **Slow connections**: Throttle to 3G, test experience
|
|
259
|
+
- **No regressions**: Ensure functionality still works
|
|
260
|
+
- **User perception**: Does it *feel* faster?
|
|
261
|
+
|
|
262
|
+
Remember: Performance is a feature. Fast experiences feel more responsive, more polished, more professional. Optimize systematically, measure ruthlessly, and prioritize user-perceived performance.
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
# COMMAND: Polish
|
|
2
|
+
**Description**: Final quality pass before shipping. Fixes alignment, spacing, consistency, and detail issues that separate good from great.
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
**First**: Use the frontend-design skill for design principles and anti-patterns.
|
|
6
|
+
|
|
7
|
+
Perform a meticulous final pass to catch all the small details that separate good work from great work. The difference between shipped and polished.
|
|
8
|
+
|
|
9
|
+
## Pre-Polish Assessment
|
|
10
|
+
|
|
11
|
+
Understand the current state and goals:
|
|
12
|
+
|
|
13
|
+
1. **Review completeness**:
|
|
14
|
+
- Is it functionally complete?
|
|
15
|
+
- Are there known issues to preserve (mark with TODOs)?
|
|
16
|
+
- What's the quality bar? (MVP vs flagship feature?)
|
|
17
|
+
- When does it ship? (How much time for polish?)
|
|
18
|
+
|
|
19
|
+
2. **Identify polish areas**:
|
|
20
|
+
- Visual inconsistencies
|
|
21
|
+
- Spacing and alignment issues
|
|
22
|
+
- Interaction state gaps
|
|
23
|
+
- Copy inconsistencies
|
|
24
|
+
- Edge cases and error states
|
|
25
|
+
- Loading and transition smoothness
|
|
26
|
+
|
|
27
|
+
**CRITICAL**: Polish is the last step, not the first. Don't polish work that's not functionally complete.
|
|
28
|
+
|
|
29
|
+
## Polish Systematically
|
|
30
|
+
|
|
31
|
+
Work through these dimensions methodically:
|
|
32
|
+
|
|
33
|
+
### Visual Alignment & Spacing
|
|
34
|
+
|
|
35
|
+
- **Pixel-perfect alignment**: Everything lines up to grid
|
|
36
|
+
- **Consistent spacing**: All gaps use spacing scale (no random 13px gaps)
|
|
37
|
+
- **Optical alignment**: Adjust for visual weight (icons may need offset for optical centering)
|
|
38
|
+
- **Responsive consistency**: Spacing and alignment work at all breakpoints
|
|
39
|
+
- **Grid adherence**: Elements snap to baseline grid
|
|
40
|
+
|
|
41
|
+
**Check**:
|
|
42
|
+
- Enable grid overlay and verify alignment
|
|
43
|
+
- Check spacing with browser inspector
|
|
44
|
+
- Test at multiple viewport sizes
|
|
45
|
+
- Look for elements that "feel" off
|
|
46
|
+
|
|
47
|
+
### Typography Refinement
|
|
48
|
+
|
|
49
|
+
- **Hierarchy consistency**: Same elements use same sizes/weights throughout
|
|
50
|
+
- **Line length**: 45-75 characters for body text
|
|
51
|
+
- **Line height**: Appropriate for font size and context
|
|
52
|
+
- **Widows & orphans**: No single words on last line
|
|
53
|
+
- **Hyphenation**: Appropriate for language and column width
|
|
54
|
+
- **Kerning**: Adjust letter spacing where needed (especially headlines)
|
|
55
|
+
- **Font loading**: No FOUT/FOIT flashes
|
|
56
|
+
|
|
57
|
+
### Color & Contrast
|
|
58
|
+
|
|
59
|
+
- **Contrast ratios**: All text meets WCAG standards
|
|
60
|
+
- **Consistent token usage**: No hard-coded colors, all use design tokens
|
|
61
|
+
- **Theme consistency**: Works in all theme variants
|
|
62
|
+
- **Color meaning**: Same colors mean same things throughout
|
|
63
|
+
- **Accessible focus**: Focus indicators visible with sufficient contrast
|
|
64
|
+
- **Tinted neutrals**: No pure gray or pure black—add subtle color tint (0.01 chroma)
|
|
65
|
+
- **Gray on color**: Never put gray text on colored backgrounds—use a shade of that color or transparency
|
|
66
|
+
|
|
67
|
+
### Interaction States
|
|
68
|
+
|
|
69
|
+
Every interactive element needs all states:
|
|
70
|
+
|
|
71
|
+
- **Default**: Resting state
|
|
72
|
+
- **Hover**: Subtle feedback (color, scale, shadow)
|
|
73
|
+
- **Focus**: Keyboard focus indicator (never remove without replacement)
|
|
74
|
+
- **Active**: Click/tap feedback
|
|
75
|
+
- **Disabled**: Clearly non-interactive
|
|
76
|
+
- **Loading**: Async action feedback
|
|
77
|
+
- **Error**: Validation or error state
|
|
78
|
+
- **Success**: Successful completion
|
|
79
|
+
|
|
80
|
+
**Missing states create confusion and broken experiences**.
|
|
81
|
+
|
|
82
|
+
### Micro-interactions & Transitions
|
|
83
|
+
|
|
84
|
+
- **Smooth transitions**: All state changes animated appropriately (150-300ms)
|
|
85
|
+
- **Consistent easing**: Use ease-out-quart/quint/expo for natural deceleration. Never bounce or elastic—they feel dated.
|
|
86
|
+
- **No jank**: 60fps animations, only animate transform and opacity
|
|
87
|
+
- **Appropriate motion**: Motion serves purpose, not decoration
|
|
88
|
+
- **Reduced motion**: Respects `prefers-reduced-motion`
|
|
89
|
+
|
|
90
|
+
### Content & Copy
|
|
91
|
+
|
|
92
|
+
- **Consistent terminology**: Same things called same names throughout
|
|
93
|
+
- **Consistent capitalization**: Title Case vs Sentence case applied consistently
|
|
94
|
+
- **Grammar & spelling**: No typos
|
|
95
|
+
- **Appropriate length**: Not too wordy, not too terse
|
|
96
|
+
- **Punctuation consistency**: Periods on sentences, not on labels (unless all labels have them)
|
|
97
|
+
|
|
98
|
+
### Icons & Images
|
|
99
|
+
|
|
100
|
+
- **Consistent style**: All icons from same family or matching style
|
|
101
|
+
- **Appropriate sizing**: Icons sized consistently for context
|
|
102
|
+
- **Proper alignment**: Icons align with adjacent text optically
|
|
103
|
+
- **Alt text**: All images have descriptive alt text
|
|
104
|
+
- **Loading states**: Images don't cause layout shift, proper aspect ratios
|
|
105
|
+
- **Retina support**: 2x assets for high-DPI screens
|
|
106
|
+
|
|
107
|
+
### Forms & Inputs
|
|
108
|
+
|
|
109
|
+
- **Label consistency**: All inputs properly labeled
|
|
110
|
+
- **Required indicators**: Clear and consistent
|
|
111
|
+
- **Error messages**: Helpful and consistent
|
|
112
|
+
- **Tab order**: Logical keyboard navigation
|
|
113
|
+
- **Auto-focus**: Appropriate (don't overuse)
|
|
114
|
+
- **Validation timing**: Consistent (on blur vs on submit)
|
|
115
|
+
|
|
116
|
+
### Edge Cases & Error States
|
|
117
|
+
|
|
118
|
+
- **Loading states**: All async actions have loading feedback
|
|
119
|
+
- **Empty states**: Helpful empty states, not just blank space
|
|
120
|
+
- **Error states**: Clear error messages with recovery paths
|
|
121
|
+
- **Success states**: Confirmation of successful actions
|
|
122
|
+
- **Long content**: Handles very long names, descriptions, etc.
|
|
123
|
+
- **No content**: Handles missing data gracefully
|
|
124
|
+
- **Offline**: Appropriate offline handling (if applicable)
|
|
125
|
+
|
|
126
|
+
### Responsiveness
|
|
127
|
+
|
|
128
|
+
- **All breakpoints**: Test mobile, tablet, desktop
|
|
129
|
+
- **Touch targets**: 44x44px minimum on touch devices
|
|
130
|
+
- **Readable text**: No text smaller than 14px on mobile
|
|
131
|
+
- **No horizontal scroll**: Content fits viewport
|
|
132
|
+
- **Appropriate reflow**: Content adapts logically
|
|
133
|
+
|
|
134
|
+
### Performance
|
|
135
|
+
|
|
136
|
+
- **Fast initial load**: Optimize critical path
|
|
137
|
+
- **No layout shift**: Elements don't jump after load (CLS)
|
|
138
|
+
- **Smooth interactions**: No lag or jank
|
|
139
|
+
- **Optimized images**: Appropriate formats and sizes
|
|
140
|
+
- **Lazy loading**: Off-screen content loads lazily
|
|
141
|
+
|
|
142
|
+
### Code Quality
|
|
143
|
+
|
|
144
|
+
- **Remove console logs**: No debug logging in production
|
|
145
|
+
- **Remove commented code**: Clean up dead code
|
|
146
|
+
- **Remove unused imports**: Clean up unused dependencies
|
|
147
|
+
- **Consistent naming**: Variables and functions follow conventions
|
|
148
|
+
- **Type safety**: No TypeScript `any` or ignored errors
|
|
149
|
+
- **Accessibility**: Proper ARIA labels and semantic HTML
|
|
150
|
+
|
|
151
|
+
## Polish Checklist
|
|
152
|
+
|
|
153
|
+
Go through systematically. **Save the results to `design-system/QA/polish-report.md`** (Create directory if missing).
|
|
154
|
+
Mark items as `[x]` (Verified) or `[ ]` (Pending/Not Applicable).
|
|
155
|
+
|
|
156
|
+
- [ ] Visual alignment perfect at all breakpoints
|
|
157
|
+
- [ ] Spacing uses design tokens consistently
|
|
158
|
+
- [ ] Typography hierarchy consistent
|
|
159
|
+
- [ ] All interactive states implemented
|
|
160
|
+
- [ ] All transitions smooth (60fps)
|
|
161
|
+
- [ ] Copy is consistent and polished
|
|
162
|
+
- [ ] Icons are consistent and properly sized
|
|
163
|
+
- [ ] All forms properly labeled and validated
|
|
164
|
+
- [ ] Error states are helpful
|
|
165
|
+
- [ ] Loading states are clear
|
|
166
|
+
- [ ] Empty states are welcoming
|
|
167
|
+
- [ ] Touch targets are 44x44px minimum
|
|
168
|
+
- [ ] Contrast ratios meet WCAG AA
|
|
169
|
+
- [ ] Keyboard navigation works
|
|
170
|
+
- [ ] Focus indicators visible
|
|
171
|
+
- [ ] No console errors or warnings
|
|
172
|
+
- [ ] No layout shift on load
|
|
173
|
+
- [ ] Works in all supported browsers
|
|
174
|
+
- [ ] Respects reduced motion preference
|
|
175
|
+
- [ ] Code is clean (no TODOs, console.logs, commented code)
|
|
176
|
+
|
|
177
|
+
**IMPORTANT**: Polish is about details. Zoom in. Squint at it. Use it yourself. The little things add up.
|
|
178
|
+
|
|
179
|
+
**NEVER**:
|
|
180
|
+
- Polish before it's functionally complete
|
|
181
|
+
- Spend hours on polish if it ships in 30 minutes (triage)
|
|
182
|
+
- Introduce bugs while polishing (test thoroughly)
|
|
183
|
+
- Ignore systematic issues (if spacing is off everywhere, fix the system)
|
|
184
|
+
- Perfect one thing while leaving others rough (consistent quality level)
|
|
185
|
+
|
|
186
|
+
## Final Verification
|
|
187
|
+
|
|
188
|
+
Before marking as done:
|
|
189
|
+
|
|
190
|
+
- **Use it yourself**: Actually interact with the feature
|
|
191
|
+
- **Test on real devices**: Not just browser DevTools
|
|
192
|
+
- **Ask someone else to review**: Fresh eyes catch things
|
|
193
|
+
- **Compare to design**: Match intended design
|
|
194
|
+
- **Check all states**: Don't just test happy path
|
|
195
|
+
|
|
196
|
+
Remember: You have impeccable attention to detail and exquisite taste. Polish until it feels effortless, looks intentional, and works flawlessly. Sweat the details - they matter.
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# COMMAND: Quieter
|
|
2
|
+
**Description**: Tone down overly bold or visually aggressive designs. Reduces intensity while maintaining design quality and impact.
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
Reduce visual intensity in designs that are too bold, aggressive, or overstimulating, creating a more refined and approachable aesthetic without losing effectiveness.
|
|
6
|
+
|
|
7
|
+
## MANDATORY PREPARATION
|
|
8
|
+
|
|
9
|
+
### Context Gathering (Do This First)
|
|
10
|
+
|
|
11
|
+
You cannot do a great job without having necessary context, such as target audience (critical), desired use-cases (critical), brand personality/tone, and everything else that a great human designer would need as well.
|
|
12
|
+
|
|
13
|
+
Attempt to gather these from the current thread or codebase.
|
|
14
|
+
|
|
15
|
+
1. If you don't find *exact* information and have to infer from existing design and functionality, you MUST STOP and ask the user directly to clarify what you cannot infer. whether you got it right.
|
|
16
|
+
2. Otherwise, if you can't fully infer or your level of confidence is medium or lower, you MUST ask the user directly to clarify what you cannot infer. clarifying questions first to complete your context.
|
|
17
|
+
|
|
18
|
+
Do NOT proceed until you have answers. Guessing leads to generic design.
|
|
19
|
+
|
|
20
|
+
### Use frontend-design skill
|
|
21
|
+
|
|
22
|
+
Use the frontend-design skill for design principles and anti-patterns. Do NOT proceed until it has executed and you know all DO's and DON'Ts.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Assess Current State
|
|
27
|
+
|
|
28
|
+
Analyze what makes the design feel too intense:
|
|
29
|
+
|
|
30
|
+
1. **Identify intensity sources**:
|
|
31
|
+
- **Color saturation**: Overly bright or saturated colors
|
|
32
|
+
- **Contrast extremes**: Too much high-contrast juxtaposition
|
|
33
|
+
- **Visual weight**: Too many bold, heavy elements competing
|
|
34
|
+
- **Animation excess**: Too much motion or overly dramatic effects
|
|
35
|
+
- **Complexity**: Too many visual elements, patterns, or decorations
|
|
36
|
+
- **Scale**: Everything is large and loud with no hierarchy
|
|
37
|
+
|
|
38
|
+
2. **Understand the context**:
|
|
39
|
+
- What's the purpose? (Marketing vs tool vs reading experience)
|
|
40
|
+
- Who's the audience? (Some contexts need energy)
|
|
41
|
+
- What's working? (Don't throw away good ideas)
|
|
42
|
+
- What's the core message? (Preserve what matters)
|
|
43
|
+
|
|
44
|
+
If any of these are unclear from the codebase, ask the user directly to clarify what you cannot infer.
|
|
45
|
+
|
|
46
|
+
**CRITICAL**: "Quieter" doesn't mean boring or generic. It means refined, sophisticated, and easier on the eyes. Think luxury, not laziness.
|
|
47
|
+
|
|
48
|
+
## Plan Refinement
|
|
49
|
+
|
|
50
|
+
Create a strategy to reduce intensity while maintaining impact:
|
|
51
|
+
|
|
52
|
+
- **Color approach**: Desaturate or shift to more sophisticated tones?
|
|
53
|
+
- **Hierarchy approach**: Which elements should stay bold (very few), which should recede?
|
|
54
|
+
- **Simplification approach**: What can be removed entirely?
|
|
55
|
+
- **Sophistication approach**: How can we signal quality through restraint?
|
|
56
|
+
|
|
57
|
+
**IMPORTANT**: Great quiet design is harder than great bold design. Subtlety requires precision.
|
|
58
|
+
|
|
59
|
+
## Refine the Design
|
|
60
|
+
|
|
61
|
+
Systematically reduce intensity across these dimensions:
|
|
62
|
+
|
|
63
|
+
### Color Refinement
|
|
64
|
+
- **Reduce saturation**: Shift from fully saturated to 70-85% saturation
|
|
65
|
+
- **Soften palette**: Replace bright colors with muted, sophisticated tones
|
|
66
|
+
- **Reduce color variety**: Use fewer colors more thoughtfully
|
|
67
|
+
- **Neutral dominance**: Let neutrals do more work, use color as accent (10% rule)
|
|
68
|
+
- **Gentler contrasts**: High contrast only where it matters most
|
|
69
|
+
- **Tinted grays**: Use warm or cool tinted grays instead of pure gray—adds sophistication without loudness
|
|
70
|
+
- **Never gray on color**: If you have gray text on a colored background, use a darker shade of that color or transparency instead
|
|
71
|
+
|
|
72
|
+
### Visual Weight Reduction
|
|
73
|
+
- **Typography**: Reduce font weights (900 → 600, 700 → 500), decrease sizes where appropriate
|
|
74
|
+
- **Hierarchy through subtlety**: Use weight, size, and space instead of color and boldness
|
|
75
|
+
- **White space**: Increase breathing room, reduce density
|
|
76
|
+
- **Borders & lines**: Reduce thickness, decrease opacity, or remove entirely
|
|
77
|
+
|
|
78
|
+
### Simplification
|
|
79
|
+
- **Remove decorative elements**: Gradients, shadows, patterns, textures that don't serve purpose
|
|
80
|
+
- **Simplify shapes**: Reduce border radius extremes, simplify custom shapes
|
|
81
|
+
- **Reduce layering**: Flatten visual hierarchy where possible
|
|
82
|
+
- **Clean up effects**: Reduce or remove blur effects, glows, multiple shadows
|
|
83
|
+
|
|
84
|
+
### Motion Reduction
|
|
85
|
+
- **Reduce animation intensity**: Shorter distances (10-20px instead of 40px), gentler easing
|
|
86
|
+
- **Remove decorative animations**: Keep functional motion, remove flourishes
|
|
87
|
+
- **Subtle micro-interactions**: Replace dramatic effects with gentle feedback
|
|
88
|
+
- **Refined easing**: Use ease-out-quart for smooth, understated motion—never bounce or elastic
|
|
89
|
+
- **Remove animations entirely** if they're not serving a clear purpose
|
|
90
|
+
|
|
91
|
+
### Composition Refinement
|
|
92
|
+
- **Reduce scale jumps**: Smaller contrast between sizes creates calmer feeling
|
|
93
|
+
- **Align to grid**: Bring rogue elements back into systematic alignment
|
|
94
|
+
- **Even out spacing**: Replace extreme spacing variations with consistent rhythm
|
|
95
|
+
|
|
96
|
+
**NEVER**:
|
|
97
|
+
- Make everything the same size/weight (hierarchy still matters)
|
|
98
|
+
- Remove all color (quiet ≠ grayscale)
|
|
99
|
+
- Eliminate all personality (maintain character through refinement)
|
|
100
|
+
- Sacrifice usability for aesthetics (functional elements still need clear affordances)
|
|
101
|
+
- Make everything small and light (some anchors needed)
|
|
102
|
+
|
|
103
|
+
## Verify Quality
|
|
104
|
+
|
|
105
|
+
Ensure refinement maintains quality:
|
|
106
|
+
|
|
107
|
+
- **Still functional**: Can users still accomplish tasks easily?
|
|
108
|
+
- **Still distinctive**: Does it have character, or is it generic now?
|
|
109
|
+
- **Better reading**: Is text easier to read for extended periods?
|
|
110
|
+
- **Sophistication**: Does it feel more refined and premium?
|
|
111
|
+
|
|
112
|
+
Remember: Quiet design is confident design. It doesn't need to shout. Less is more, but less is also harder. Refine with precision and maintain intentionality.
|