get-shit-pretty 0.2.0 → 0.4.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 (101) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -9
  3. package/agents/{gsp-accessibility-auditor.md → gsp-auditor.md} +17 -14
  4. package/agents/gsp-brand-auditor.md +97 -0
  5. package/agents/gsp-brand-strategist.md +64 -27
  6. package/agents/{gsp-design-engineer.md → gsp-builder.md} +12 -9
  7. package/agents/gsp-campaign-director.md +50 -11
  8. package/agents/gsp-codebase-scanner.md +171 -0
  9. package/agents/gsp-critic.md +18 -13
  10. package/agents/gsp-designer.md +126 -0
  11. package/agents/gsp-identity-designer.md +90 -0
  12. package/agents/gsp-project-researcher.md +102 -0
  13. package/agents/gsp-researcher.md +54 -18
  14. package/agents/gsp-reviewer.md +66 -0
  15. package/agents/gsp-scoper.md +103 -0
  16. package/agents/gsp-system-architect.md +91 -26
  17. package/agents/gsp-verbal-strategist.md +84 -0
  18. package/bin/install.js +161 -5
  19. package/commands/gsp/brand-audit.md +116 -0
  20. package/commands/gsp/brand-discover.md +17 -0
  21. package/commands/gsp/brand-identity.md +200 -0
  22. package/commands/gsp/brand-patterns.md +223 -0
  23. package/commands/gsp/brand-research.md +99 -0
  24. package/commands/gsp/brand-strategy.md +140 -0
  25. package/commands/gsp/brand-system.md +17 -0
  26. package/commands/gsp/brand-verbal.md +94 -0
  27. package/commands/gsp/brand.md +9 -83
  28. package/commands/gsp/brief.md +142 -0
  29. package/commands/gsp/build.md +49 -41
  30. package/commands/gsp/critique.md +140 -0
  31. package/commands/gsp/design.md +65 -50
  32. package/commands/gsp/discover.md +17 -0
  33. package/commands/gsp/doctor.md +319 -0
  34. package/commands/gsp/help.md +85 -38
  35. package/commands/gsp/identity.md +18 -0
  36. package/commands/gsp/launch.md +55 -35
  37. package/commands/gsp/new-project.md +5 -86
  38. package/commands/gsp/new.md +237 -0
  39. package/commands/gsp/plan.md +18 -0
  40. package/commands/gsp/progress.md +58 -26
  41. package/commands/gsp/research.md +91 -34
  42. package/commands/gsp/review.md +115 -59
  43. package/commands/gsp/strategy.md +18 -0
  44. package/commands/gsp/system.md +8 -65
  45. package/commands/gsp/update.md +102 -0
  46. package/commands/gsp/verbal.md +18 -0
  47. package/package.json +2 -2
  48. package/prompts/01-design-system-architect.md +35 -3
  49. package/prompts/03-ui-ux-pattern-master.md +11 -1
  50. package/prompts/09-design-to-code-translator.md +9 -0
  51. package/prompts/10-project-scoper.md +51 -0
  52. package/prompts/11-deliverable-reviewer.md +58 -0
  53. package/prompts/12-project-researcher.md +57 -0
  54. package/references/brand-archetypes.md +151 -0
  55. package/references/brand-prism.md +138 -0
  56. package/references/chunk-format.md +48 -0
  57. package/references/design-trends.md +47 -0
  58. package/references/positioning-frameworks.md +197 -0
  59. package/references/questioning.md +1 -1
  60. package/references/trends/aurora-gradients.md +245 -0
  61. package/references/trends/bento-grid.md +473 -0
  62. package/references/trends/claymorphism.md +232 -0
  63. package/references/trends/dark-mode-oled.md +282 -0
  64. package/references/trends/glassmorphism.md +455 -0
  65. package/references/trends/kinetic-typography.md +277 -0
  66. package/references/trends/liquid-glass.md +236 -0
  67. package/references/trends/micro-interactions.md +307 -0
  68. package/references/trends/neubrutalism.md +276 -0
  69. package/references/voice-tone.md +193 -0
  70. package/scripts/gsp-statusline.js +1 -1
  71. package/templates/branding/brief.md +74 -0
  72. package/templates/branding/config.json +26 -0
  73. package/templates/branding/roadmap.md +43 -0
  74. package/templates/branding/state.md +29 -0
  75. package/templates/changelog.md +4 -0
  76. package/templates/codebase-inventory.md +71 -0
  77. package/templates/exports-index.md +93 -0
  78. package/templates/manifest.md +19 -0
  79. package/templates/phases/brief.md +53 -0
  80. package/templates/phases/build.md +24 -48
  81. package/templates/phases/critique.md +68 -0
  82. package/templates/phases/design.md +54 -32
  83. package/templates/phases/discover.md +60 -0
  84. package/templates/phases/identity.md +78 -0
  85. package/templates/phases/launch.md +48 -55
  86. package/templates/phases/research.md +75 -47
  87. package/templates/phases/review.md +27 -75
  88. package/templates/phases/strategy.md +67 -0
  89. package/templates/phases/system.md +84 -78
  90. package/templates/phases/verbal.md +63 -0
  91. package/templates/{project.md → projects/brief.md} +13 -17
  92. package/templates/projects/config.json +32 -0
  93. package/templates/projects/roadmap.md +59 -0
  94. package/templates/{state.md → projects/state.md} +19 -9
  95. package/agents/gsp-spec-engineer.md +0 -121
  96. package/agents/gsp-ui-designer.md +0 -59
  97. package/commands/gsp/spec.md +0 -88
  98. package/templates/config.json +0 -26
  99. package/templates/phases/brand.md +0 -60
  100. package/templates/phases/spec.md +0 -46
  101. package/templates/roadmap.md +0 -62
@@ -0,0 +1,282 @@
1
+ # OLED-Optimized Dark Mode
2
+
3
+ > True OLED optimization with pure blacks for pixel-off battery savings, reduced contrast for eye comfort, and structured surface/text token hierarchies.
4
+
5
+ Last verified: 2026-03-04
6
+
7
+ ---
8
+
9
+ ## Visual Characteristics
10
+
11
+ - True black (`#000000`) base — OLED pixels turn off completely
12
+ - Surface hierarchy via subtle lightness steps (`#000` → `#0A0A0A` → `#141414` → `#1E1E1E` → `#282828`)
13
+ - Off-white text (`#E0E0E0` max) to prevent halation — bright white text glows on OLED
14
+ - Desaturated accent colors (~15-20% less saturation than light mode)
15
+ - Elevation expressed through lightness, not shadows (shadows are invisible on dark surfaces)
16
+ - 82% of mobile users prefer dark mode (Android/iOS usage data, 2025)
17
+
18
+ ---
19
+
20
+ ## CSS Implementation
21
+
22
+ ### Color Token Strategy
23
+
24
+ ```css
25
+ :root {
26
+ /* Surface hierarchy */
27
+ --surface-base: #000000; /* true black — OLED pixel off */
28
+ --surface-1: #0A0A0A; /* barely lifted — cards on pure black */
29
+ --surface-2: #141414; /* secondary surface */
30
+ --surface-3: #1E1E1E; /* elevated (modals, popovers) */
31
+ --surface-4: #282828; /* highest elevation */
32
+
33
+ /* Text hierarchy */
34
+ --text-primary: #E0E0E0; /* off-white — never pure #FFF */
35
+ --text-secondary: #A0A0A0; /* muted */
36
+ --text-tertiary: #666666; /* disabled / placeholder */
37
+
38
+ /* Borders */
39
+ --border-subtle: rgba(255, 255, 255, 0.06);
40
+ --border-default: rgba(255, 255, 255, 0.12);
41
+ --border-strong: rgba(255, 255, 255, 0.20);
42
+ }
43
+ ```
44
+
45
+ ### Key Rules
46
+
47
+ - **True black `#000000`** for base backgrounds — OLED pixels turn off, saving significant battery
48
+ - **Never pure white `#FFFFFF`** text — causes halation (text glow/bleed) on OLED panels. Maximum brightness: `#E0E0E0`
49
+ - **Surface elevation via lightness** — each step increases by ~10 in hex (`0A`, `14`, `1E`, `28`). Shadows are invisible on dark, so lightness = elevation
50
+ - **Desaturate accents** ~15-20% for dark mode — full saturation causes eye strain on dark backgrounds
51
+ - **Minimum contrast**: 4.5:1 for body text, 3:1 for large text (WCAG AA)
52
+ - **Test on real OLED devices** — LCD emulators display dark grey, not true black
53
+
54
+ ### Media Query
55
+
56
+ ```css
57
+ @media (prefers-color-scheme: dark) {
58
+ :root {
59
+ color-scheme: dark;
60
+ /* swap all semantic tokens to dark values */
61
+ }
62
+ }
63
+ ```
64
+
65
+ ### Battery Savings Context
66
+
67
+ The commonly cited "47% battery savings" for true black OLED comes from a 2018 Google/Android study comparing full-white vs full-black screens at max brightness. Real-world savings depend on actual screen content mix — typical dark UI interfaces see ~20-30% savings compared to light mode. The benefit is real but varies with usage patterns.
68
+
69
+ ---
70
+
71
+ ## Implementation Guide
72
+
73
+ ### Step-by-step
74
+
75
+ 1. Define surface hierarchy tokens: 5 levels from `#000000` to `#282828`
76
+ 2. Define text hierarchy: primary (`#E0E0E0`), secondary (`#A0A0A0`), tertiary (`#666666`)
77
+ 3. Define border tokens using `rgba(255,255,255)` at varying opacities (0.06, 0.12, 0.20)
78
+ 4. Desaturate all accent colors 15-20% for dark mode variants
79
+ 5. Apply `color-scheme: dark` to `:root` inside the media query
80
+ 6. Replace shadow-based elevation with surface lightness stepping
81
+ 7. Test all text/surface combinations for WCAG contrast compliance
82
+ 8. Test on a real OLED device — halation is invisible on LCD/emulators
83
+
84
+ ### Progressive Enhancement
85
+
86
+ ```css
87
+ /* Baseline: light mode */
88
+ :root {
89
+ --bg: #ffffff;
90
+ --text: #1a1a1a;
91
+ }
92
+
93
+ /* Enhanced: dark mode when system preference is set */
94
+ @media (prefers-color-scheme: dark) {
95
+ :root {
96
+ color-scheme: dark;
97
+ --bg: #000000;
98
+ --text: #E0E0E0;
99
+ }
100
+ }
101
+ ```
102
+
103
+ For manual toggle support, use a class-based approach:
104
+
105
+ ```css
106
+ /* User-toggled dark mode */
107
+ html.dark {
108
+ color-scheme: dark;
109
+ --bg: #000000;
110
+ --text: #E0E0E0;
111
+ }
112
+ ```
113
+
114
+ ### Framework Notes
115
+
116
+ #### React + Tailwind CSS
117
+
118
+ Tailwind supports two dark mode strategies:
119
+
120
+ ```js
121
+ // tailwind.config.js
122
+ module.exports = {
123
+ darkMode: 'class', // 'class' for manual toggle, 'media' for system preference
124
+ }
125
+ ```
126
+
127
+ ```tsx
128
+ // Component with dark mode support
129
+ export function Card({ children }) {
130
+ return (
131
+ <div className="bg-white dark:bg-[#0A0A0A] text-zinc-900 dark:text-[#E0E0E0] border border-zinc-200 dark:border-white/[0.12] rounded-2xl p-6">
132
+ {children}
133
+ </div>
134
+ );
135
+ }
136
+
137
+ // OLED surface hierarchy via Tailwind
138
+ // surface-base: dark:bg-black
139
+ // surface-1: dark:bg-[#0A0A0A]
140
+ // surface-2: dark:bg-[#141414]
141
+ // surface-3: dark:bg-[#1E1E1E]
142
+ // surface-4: dark:bg-[#282828]
143
+ ```
144
+
145
+ #### React Native
146
+
147
+ ```tsx
148
+ import { useColorScheme } from 'react-native';
149
+
150
+ export function useOLEDTheme() {
151
+ const scheme = useColorScheme();
152
+ return scheme === 'dark' ? {
153
+ surfaceBase: '#000000',
154
+ surface1: '#0A0A0A',
155
+ surface2: '#141414',
156
+ surface3: '#1E1E1E',
157
+ textPrimary: '#E0E0E0',
158
+ textSecondary: '#A0A0A0',
159
+ borderDefault: 'rgba(255,255,255,0.12)',
160
+ } : {
161
+ surfaceBase: '#FFFFFF',
162
+ surface1: '#F5F5F5',
163
+ surface2: '#EEEEEE',
164
+ surface3: '#E0E0E0',
165
+ textPrimary: '#1A1A1A',
166
+ textSecondary: '#666666',
167
+ borderDefault: 'rgba(0,0,0,0.12)',
168
+ };
169
+ }
170
+ ```
171
+
172
+ For true black on React Native, ensure no background color overrides on ancestor views — any non-black ancestor prevents OLED pixel-off.
173
+
174
+ #### Vanilla CSS
175
+
176
+ The CSS implementation section above is pure vanilla. Use CSS custom properties for the full token system and swap values inside the media query.
177
+
178
+ ### Common Pitfalls
179
+
180
+ 1. **Pure white text on black**: causes halation — bright text bleeds/glows on OLED screens. Cap text brightness at `#E0E0E0`.
181
+ 2. **Using shadows for elevation in dark mode**: shadows are invisible on dark surfaces. Use surface lightness stepping instead.
182
+ 3. **Same accent saturation as light mode**: fully saturated colors cause eye strain on dark backgrounds. Desaturate 15-20%.
183
+ 4. **Testing on LCD only**: dark grey (`#0A0A0A`) and true black (`#000000`) look identical on LCD but are visually distinct on OLED. Always test on real OLED hardware.
184
+ 5. **Forgetting `color-scheme: dark`**: without this property, form elements, scrollbars, and browser chrome stay in light mode appearance.
185
+
186
+ ---
187
+
188
+ ## Examples Gallery
189
+
190
+ | Site | What They Do Well | Screenshot Description |
191
+ |------|-------------------|----------------------|
192
+ | Twitter/X (mobile) | True black OLED mode with #000000 base, surface hierarchy for cards and menus | Timeline with pure black background and elevated card surfaces |
193
+ | Spotify | True black with vibrant (but desaturated) accent colors — album art drives color | Player screen with black base and colorful album artwork |
194
+ | YouTube (dark mode) | Surface hierarchy: #000 base, #0F0F0F for cards, #272727 for elevated elements | Video player with layered dark surfaces |
195
+ | Apple Developer (docs) | System-respecting dark mode with precise surface hierarchy and desaturated code highlighting | Documentation with OLED-optimized code blocks |
196
+ | Linear | Dark-first product — true black with aurora gradient accents and glass overlays | Issue tracker with atmospheric dark background |
197
+
198
+ ---
199
+
200
+ ## Accessibility
201
+
202
+ ### Contrast Requirements
203
+
204
+ | Text Type | WCAG AA Minimum | Recommended |
205
+ |-----------|----------------|-------------|
206
+ | Body text on surface-base | 4.5:1 | `#E0E0E0` on `#000` = 18.4:1 |
207
+ | Body text on surface-2 | 4.5:1 | `#E0E0E0` on `#141414` = 14.9:1 |
208
+ | Secondary text on surface-base | 4.5:1 | `#A0A0A0` on `#000` = 10.3:1 |
209
+ | Tertiary text on surface-base | 3:1 (large text) | `#666666` on `#000` = 4.0:1 |
210
+ | Disabled text | No minimum | `#666666` — clearly visible but muted |
211
+
212
+ ### Halation Prevention
213
+
214
+ Halation occurs when bright content (above ~`#E8E8E8`) on a pure black OLED background causes the text to appear to glow or bleed. The threshold varies by device, but `#E0E0E0` (88% brightness) is a safe maximum for body text.
215
+
216
+ ### Focus Indicators
217
+
218
+ On dark surfaces, use high-contrast focus rings:
219
+
220
+ ```css
221
+ :focus-visible {
222
+ outline: 2px solid #60A5FA; /* blue works well on dark surfaces */
223
+ outline-offset: 2px;
224
+ }
225
+ ```
226
+
227
+ ---
228
+
229
+ ## Performance
230
+
231
+ - **OLED battery**: true black areas consume zero power (pixels off). Real-world UI savings: 20-30% vs light mode
232
+ - **No GPU cost**: dark mode is a color swap — no filters, blur, or compositing involved
233
+ - **CSS custom properties**: token swapping via media query is computed once on theme change, not per-frame
234
+ - **Image consideration**: images on true black backgrounds may appear too bright. Consider reducing image brightness by 5-10% in dark mode
235
+ - **Transition**: when toggling themes, use `transition: background-color 200ms ease, color 200ms ease` on body — but not `*` (too expensive)
236
+
237
+ ---
238
+
239
+ ## When to Use / When to Avoid
240
+
241
+ ### Use When
242
+ - Default: offer both modes, respect `prefers-color-scheme` system preference
243
+ - Dark-first: media apps, developer tools, creative tools, nighttime-use apps
244
+ - OLED-targeting mobile apps where battery savings matter
245
+ - Environments with low ambient light where bright screens cause discomfort
246
+
247
+ ### Avoid When
248
+ - Print-focused content where dark mode creates excessive ink usage on print
249
+ - Products where brand identity requires a light aesthetic (some luxury, healthcare)
250
+ - Consider: auto-switching based on ambient light sensor or time of day
251
+
252
+ ---
253
+
254
+ ## Design Tokens
255
+
256
+ ```json
257
+ {
258
+ "dark-oled": {
259
+ "surface-base": "#000000",
260
+ "surface-1": "#0A0A0A",
261
+ "surface-2": "#141414",
262
+ "surface-3": "#1E1E1E",
263
+ "surface-4": "#282828",
264
+ "text-primary": "#E0E0E0",
265
+ "text-secondary": "#A0A0A0",
266
+ "text-tertiary": "#666666",
267
+ "border-subtle": "rgba(255, 255, 255, 0.06)",
268
+ "border-default": "rgba(255, 255, 255, 0.12)",
269
+ "border-strong": "rgba(255, 255, 255, 0.20)",
270
+ "accent-desaturate": "15%",
271
+ "halation-max-brightness": "#E0E0E0"
272
+ }
273
+ }
274
+ ```
275
+
276
+ ---
277
+
278
+ ## Related
279
+
280
+ - [Glassmorphism](./glassmorphism.md) — dark glassmorphism variant with adjusted opacity and border values
281
+ - [Aurora Gradients](./aurora-gradients.md) — aurora on true black is visually stunning
282
+ - [Liquid Glass](./liquid-glass.md) — surface token adaptation needed for dark liquid glass