@kood/claude-code 0.4.1 → 0.5.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 (149) hide show
  1. package/dist/index.js +53 -7
  2. package/package.json +2 -1
  3. package/templates/.claude/PARALLEL_AGENTS.md +737 -0
  4. package/templates/.claude/agents/analyst.md +416 -0
  5. package/templates/.claude/agents/architect.md +569 -0
  6. package/templates/.claude/agents/code-reviewer.md +132 -133
  7. package/templates/.claude/agents/dependency-manager.md +93 -94
  8. package/templates/.claude/agents/deployment-validator.md +64 -65
  9. package/templates/.claude/agents/designer.md +655 -0
  10. package/templates/.claude/agents/document-writer.md +500 -0
  11. package/templates/.claude/agents/explore.md +499 -0
  12. package/templates/.claude/agents/git-operator.md +74 -75
  13. package/templates/.claude/agents/implementation-executor.md +138 -109
  14. package/templates/.claude/agents/ko-to-en-translator.md +18 -22
  15. package/templates/.claude/agents/lint-fixer.md +250 -93
  16. package/templates/.claude/agents/planner.md +356 -0
  17. package/templates/.claude/agents/refactor-advisor.md +135 -136
  18. package/templates/.claude/commands/bug-fix.md +296 -207
  19. package/templates/.claude/commands/git-all.md +199 -46
  20. package/templates/.claude/commands/git-session.md +113 -57
  21. package/templates/.claude/commands/lint-fix.md +219 -153
  22. package/templates/.claude/commands/lint-init.md +113 -76
  23. package/templates/.claude/commands/pre-deploy.md +190 -124
  24. package/templates/.claude/commands/refactor.md +407 -162
  25. package/templates/.claude/commands/version-update.md +138 -37
  26. package/templates/.claude/instructions/context-engineering/ANTHROPIC_CONTEXT_ENGINEERING.md +178 -0
  27. package/templates/.claude/instructions/context-engineering/references/claude-4x.md +215 -0
  28. package/templates/.claude/instructions/context-engineering/references/core-principles.md +137 -0
  29. package/templates/.claude/instructions/context-engineering/references/examples.md +351 -0
  30. package/templates/.claude/instructions/context-engineering/references/techniques.md +162 -0
  31. package/templates/.claude/instructions/parallel-agent-execution.md +874 -0
  32. package/templates/.claude/skills/docs-creator/AGENTS.md +238 -0
  33. package/templates/.claude/{commands/docs-creator.md → skills/docs-creator/SKILL.md} +61 -75
  34. package/templates/.claude/skills/docs-refactor/AGENTS.md +270 -0
  35. package/templates/.claude/{commands/docs-refactor.md → skills/docs-refactor/SKILL.md} +30 -44
  36. package/templates/.claude/skills/execute/SKILL.md +451 -0
  37. package/templates/.claude/skills/figma-to-code/AGENTS.md +287 -0
  38. package/templates/.claude/skills/figma-to-code/SKILL.md +225 -225
  39. package/templates/.claude/skills/figma-to-code/references/design-tokens.md +75 -73
  40. package/templates/.claude/skills/figma-to-code/references/figma-mcp-tools.md +73 -73
  41. package/templates/.claude/skills/figma-to-code/references/layout-mapping.md +104 -104
  42. package/templates/.claude/skills/figma-to-code/references/responsive-design.md +99 -99
  43. package/templates/.claude/skills/figma-to-code/references/verification.md +91 -91
  44. package/templates/.claude/skills/global-uiux-design/AGENTS.md +317 -0
  45. package/templates/.claude/skills/global-uiux-design/SKILL.md +738 -0
  46. package/templates/.claude/skills/global-uiux-design/references/accessibility.md +401 -0
  47. package/templates/.claude/skills/global-uiux-design/references/color-system.md +275 -0
  48. package/templates/.claude/skills/global-uiux-design/references/design-philosophy.md +206 -0
  49. package/templates/.claude/skills/global-uiux-design/references/design-systems.md +446 -0
  50. package/templates/.claude/skills/korea-uiux-design/AGENTS.md +307 -0
  51. package/templates/.claude/skills/korea-uiux-design/SKILL.md +170 -0
  52. package/templates/.claude/skills/nextjs-react-best-practices/AGENTS.md +95 -116
  53. package/templates/.claude/skills/nextjs-react-best-practices/SKILL.md +134 -152
  54. package/templates/.claude/skills/nextjs-react-best-practices/rules/advanced-event-handler-refs.md +6 -6
  55. package/templates/.claude/skills/nextjs-react-best-practices/rules/advanced-use-latest.md +5 -5
  56. package/templates/.claude/skills/nextjs-react-best-practices/rules/async-api-routes.md +5 -5
  57. package/templates/.claude/skills/nextjs-react-best-practices/rules/async-defer-await.md +22 -22
  58. package/templates/.claude/skills/nextjs-react-best-practices/rules/async-dependencies.md +5 -5
  59. package/templates/.claude/skills/nextjs-react-best-practices/rules/async-parallel.md +4 -4
  60. package/templates/.claude/skills/nextjs-react-best-practices/rules/async-suspense-boundaries.md +21 -21
  61. package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-barrel-imports.md +18 -18
  62. package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-conditional.md +4 -4
  63. package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-defer-third-party.md +4 -4
  64. package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-dynamic-imports.md +4 -4
  65. package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-preload.md +5 -5
  66. package/templates/.claude/skills/nextjs-react-best-practices/rules/client-event-listeners.md +9 -9
  67. package/templates/.claude/skills/nextjs-react-best-practices/rules/client-swr-dedup.md +7 -7
  68. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-batch-dom-css.md +13 -13
  69. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-function-results.md +14 -14
  70. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-property-access.md +4 -4
  71. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-storage.md +10 -10
  72. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-combine-iterations.md +4 -4
  73. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-early-exit.md +7 -7
  74. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-hoist-regexp.md +6 -6
  75. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-index-maps.md +6 -6
  76. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-length-check-first.md +14 -14
  77. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-min-max-loop.md +16 -16
  78. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-set-map-lookups.md +4 -4
  79. package/templates/.claude/skills/nextjs-react-best-practices/rules/js-tosorted-immutable.md +17 -17
  80. package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-activity.md +4 -4
  81. package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-animate-svg-wrapper.md +11 -11
  82. package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-conditional-render.md +8 -8
  83. package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-content-visibility.md +4 -4
  84. package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-hoist-jsx.md +6 -6
  85. package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-hydration-no-flicker.md +14 -14
  86. package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-svg-precision.md +5 -5
  87. package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-defer-reads.md +4 -4
  88. package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-dependencies.md +7 -7
  89. package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-derived-state.md +5 -5
  90. package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-functional-setstate.md +34 -34
  91. package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-lazy-state-init.md +15 -15
  92. package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-memo.md +5 -5
  93. package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-transitions.md +4 -4
  94. package/templates/.claude/skills/nextjs-react-best-practices/rules/server-after-nonblocking.md +24 -24
  95. package/templates/.claude/skills/nextjs-react-best-practices/rules/server-cache-lru.md +10 -10
  96. package/templates/.claude/skills/nextjs-react-best-practices/rules/server-cache-react.md +4 -4
  97. package/templates/.claude/skills/nextjs-react-best-practices/rules/server-parallel-fetching.md +5 -5
  98. package/templates/.claude/skills/nextjs-react-best-practices/rules/server-serialization.md +6 -6
  99. package/templates/.claude/skills/plan/SKILL.md +594 -0
  100. package/templates/.claude/skills/prd/SKILL.md +496 -0
  101. package/templates/.claude/skills/ralph/AGENTS.md +393 -0
  102. package/templates/.claude/skills/ralph/SKILL.md +1035 -0
  103. package/templates/.claude/skills/tanstack-start-react-best-practices/AGENTS.md +100 -121
  104. package/templates/.claude/skills/tanstack-start-react-best-practices/SKILL.md +139 -157
  105. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-defer-await.md +22 -22
  106. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-dependencies.md +5 -5
  107. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-loader.md +7 -7
  108. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-parallel.md +4 -4
  109. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-barrel-imports.md +18 -18
  110. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-conditional.md +4 -4
  111. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-defer-third-party.md +4 -4
  112. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-lazy-routes.md +12 -12
  113. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-preload.md +5 -5
  114. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-event-listeners.md +9 -9
  115. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-tanstack-query.md +12 -12
  116. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-batch-dom-css.md +13 -13
  117. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-function-results.md +14 -14
  118. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-property-access.md +4 -4
  119. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-storage.md +10 -10
  120. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-combine-iterations.md +4 -4
  121. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-early-exit.md +7 -7
  122. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-hoist-regexp.md +6 -6
  123. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-index-maps.md +6 -6
  124. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-length-check-first.md +14 -14
  125. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-min-max-loop.md +16 -16
  126. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-set-map-lookups.md +4 -4
  127. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-tosorted-immutable.md +17 -17
  128. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-animate-svg-wrapper.md +11 -11
  129. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-conditional-render.md +8 -8
  130. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-content-visibility.md +4 -4
  131. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-hoist-jsx.md +6 -6
  132. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-svg-precision.md +5 -5
  133. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-defer-reads.md +4 -4
  134. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-dependencies.md +7 -7
  135. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-derived-state.md +5 -5
  136. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-functional-setstate.md +34 -34
  137. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-lazy-state-init.md +15 -15
  138. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-memo.md +5 -5
  139. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-transitions.md +4 -4
  140. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-cache-lru.md +12 -12
  141. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-deferred-data.md +14 -14
  142. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-parallel-fetching.md +9 -9
  143. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-serialization.md +6 -6
  144. package/templates/.claude/commands/agent-creator.md +0 -370
  145. package/templates/.claude/commands/command-creator.md +0 -524
  146. package/templates/.claude/commands/execute.md +0 -469
  147. package/templates/.claude/commands/git.md +0 -98
  148. package/templates/.claude/commands/plan.md +0 -526
  149. package/templates/.claude/commands/prd.md +0 -629
@@ -0,0 +1,401 @@
1
+ # Accessibility (WCAG 2.2 AA)
2
+
3
+ ## Core Requirements
4
+
5
+ ### 1. Perceivable
6
+
7
+ **Information must be presentable to users in ways they can perceive.**
8
+
9
+ #### Text Alternatives (1.1)
10
+
11
+ ```tsx
12
+ {/* Images */}
13
+ <img src="chart.png" alt="Sales increased 25% in Q4" />
14
+
15
+ {/* Decorative images */}
16
+ <img src="decoration.png" alt="" role="presentation" />
17
+
18
+ {/* Icon buttons */}
19
+ <button aria-label="Close dialog">
20
+ <svg className="w-5 h-5" aria-hidden="true" />
21
+ </button>
22
+ ```
23
+
24
+ #### Color Contrast (1.4.3)
25
+
26
+ - **Normal text:** 4.5:1 minimum
27
+ - **Large text (18pt+):** 3:1 minimum
28
+ - **UI components:** 3:1 minimum (borders, form controls)
29
+
30
+ #### Resize Text (1.4.4)
31
+
32
+ ```tsx
33
+ {/* Support up to 200% zoom */}
34
+ <p className="text-base leading-relaxed">
35
+ Use relative units (rem, em) not px
36
+ </p>
37
+ ```
38
+
39
+ ### 2. Operable
40
+
41
+ **UI components must be operable.**
42
+
43
+ #### Keyboard Accessible (2.1)
44
+
45
+ ```tsx
46
+ {/* All interactive elements keyboard accessible */}
47
+ <button onClick={handleClick}>Submit</button> {/* ✓ */}
48
+ <div onClick={handleClick}>Submit</div> {/* ✗ Not keyboard accessible */}
49
+
50
+ {/* Custom interactive elements need tabIndex and keyboard handlers */}
51
+ <div
52
+ role="button"
53
+ tabIndex={0}
54
+ onClick={handleClick}
55
+ onKeyDown={(e) => {
56
+ if (e.key === 'Enter' || e.key === ' ') {
57
+ handleClick();
58
+ }
59
+ }}
60
+ >
61
+ Custom button
62
+ </div>
63
+ ```
64
+
65
+ #### Focus Visible (2.4.7)
66
+
67
+ ```tsx
68
+ {/* Ensure visible focus indicator */}
69
+ <button className="
70
+ focus:outline-none
71
+ focus:ring-2
72
+ focus:ring-primary-500
73
+ focus:ring-offset-2
74
+ ">
75
+ Save
76
+ </button>
77
+ ```
78
+
79
+ #### Skip Links (2.4.1)
80
+
81
+ ```tsx
82
+ {/* Allow keyboard users to skip navigation */}
83
+ <a
84
+ href="#main-content"
85
+ className="sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4"
86
+ >
87
+ Skip to main content
88
+ </a>
89
+
90
+ <main id="main-content">
91
+ {/* Page content */}
92
+ </main>
93
+ ```
94
+
95
+ ### 3. Understandable
96
+
97
+ **Information and operation must be understandable.**
98
+
99
+ #### Language (3.1.1)
100
+
101
+ ```html
102
+ <html lang="en">
103
+ <body>
104
+ <p>This is English text.</p>
105
+ <p lang="es">Este es texto en español.</p>
106
+ </body>
107
+ </html>
108
+ ```
109
+
110
+ #### Error Identification (3.3.1)
111
+
112
+ ```tsx
113
+ {/* Clear error messages */}
114
+ <div>
115
+ <label htmlFor="email">Email</label>
116
+ <input
117
+ id="email"
118
+ type="email"
119
+ aria-invalid={hasError}
120
+ aria-describedby={hasError ? "email-error" : undefined}
121
+ />
122
+ {hasError && (
123
+ <p id="email-error" className="text-red-600 text-sm mt-1">
124
+ Please enter a valid email address (e.g., name@example.com)
125
+ </p>
126
+ )}
127
+ </div>
128
+ ```
129
+
130
+ #### Labels (3.3.2)
131
+
132
+ ```tsx
133
+ {/* Every form input needs a label */}
134
+ <label htmlFor="username" className="block text-sm font-medium">
135
+ Username
136
+ </label>
137
+ <input id="username" type="text" />
138
+
139
+ {/* Or use aria-label */}
140
+ <input type="search" aria-label="Search products" />
141
+ ```
142
+
143
+ ### 4. Robust
144
+
145
+ **Content must be robust enough for assistive technologies.**
146
+
147
+ #### Valid HTML (4.1.1)
148
+
149
+ - Proper nesting (no `<div>` inside `<p>`)
150
+ - Unique IDs
151
+ - Closing tags
152
+ - Valid ARIA attributes
153
+
154
+ #### Name, Role, Value (4.1.2)
155
+
156
+ ```tsx
157
+ {/* Use semantic HTML when possible */}
158
+ <button>Click me</button> {/* ✓ Role implicit */}
159
+
160
+ {/* Custom components need explicit roles */}
161
+ <div role="button" aria-pressed={isPressed}>
162
+ Toggle
163
+ </div>
164
+ ```
165
+
166
+ ## ARIA (Accessible Rich Internet Applications)
167
+
168
+ ### ARIA Roles
169
+
170
+ ```tsx
171
+ {/* Landmark roles */}
172
+ <header role="banner">
173
+ <nav role="navigation">
174
+ <main role="main">
175
+ <aside role="complementary">
176
+ <footer role="contentinfo">
177
+
178
+ {/* Widget roles */}
179
+ <div role="dialog" aria-modal="true">
180
+ <div role="alertdialog">
181
+ <div role="tooltip">
182
+ <div role="tablist">
183
+ <button role="tab" aria-selected={true}>Tab 1</button>
184
+ </div>
185
+ ```
186
+
187
+ ### ARIA States & Properties
188
+
189
+ ```tsx
190
+ {/* aria-expanded (dropdowns, accordions) */}
191
+ <button aria-expanded={isOpen} onClick={toggle}>
192
+ Menu
193
+ </button>
194
+
195
+ {/* aria-hidden (decorative elements) */}
196
+ <svg aria-hidden="true" />
197
+
198
+ {/* aria-live (dynamic content) */}
199
+ <div role="status" aria-live="polite">
200
+ {notification}
201
+ </div>
202
+
203
+ {/* aria-describedby (additional descriptions) */}
204
+ <input
205
+ type="password"
206
+ aria-describedby="password-requirements"
207
+ />
208
+ <p id="password-requirements">
209
+ Must be at least 8 characters
210
+ </p>
211
+ ```
212
+
213
+ ### ARIA Best Practices
214
+
215
+ **First Rule of ARIA:**
216
+ > If you can use native HTML, do it.
217
+
218
+ ❌ **Bad:**
219
+ ```tsx
220
+ <div role="button" tabIndex={0} onClick={click}>Submit</div>
221
+ ```
222
+
223
+ ✅ **Good:**
224
+ ```tsx
225
+ <button onClick={click}>Submit</button>
226
+ ```
227
+
228
+ ## Common Patterns
229
+
230
+ ### Modal Dialog
231
+
232
+ ```tsx
233
+ <div
234
+ role="dialog"
235
+ aria-modal="true"
236
+ aria-labelledby="dialog-title"
237
+ aria-describedby="dialog-description"
238
+ >
239
+ <h2 id="dialog-title">Confirm deletion</h2>
240
+ <p id="dialog-description">
241
+ Are you sure you want to delete this item? This action cannot be undone.
242
+ </p>
243
+ <button onClick={confirm}>Delete</button>
244
+ <button onClick={cancel}>Cancel</button>
245
+ </div>
246
+ ```
247
+
248
+ **Requirements:**
249
+ - Focus trap (Tab cycles within dialog)
250
+ - Close on Escape key
251
+ - Return focus to trigger element on close
252
+ - Prevent body scroll
253
+
254
+ ### Accordion
255
+
256
+ ```tsx
257
+ <div>
258
+ <button
259
+ aria-expanded={isOpen}
260
+ aria-controls="panel-1"
261
+ onClick={toggle}
262
+ >
263
+ Section 1
264
+ </button>
265
+ <div id="panel-1" hidden={!isOpen}>
266
+ Panel content
267
+ </div>
268
+ </div>
269
+ ```
270
+
271
+ ### Tabs
272
+
273
+ ```tsx
274
+ <div role="tablist" aria-label="Settings">
275
+ <button
276
+ role="tab"
277
+ aria-selected={activeTab === 'general'}
278
+ aria-controls="panel-general"
279
+ >
280
+ General
281
+ </button>
282
+ <button
283
+ role="tab"
284
+ aria-selected={activeTab === 'privacy'}
285
+ aria-controls="panel-privacy"
286
+ >
287
+ Privacy
288
+ </button>
289
+ </div>
290
+
291
+ <div role="tabpanel" id="panel-general" hidden={activeTab !== 'general'}>
292
+ General settings
293
+ </div>
294
+ ```
295
+
296
+ **Keyboard:**
297
+ - Arrow keys navigate between tabs
298
+ - Tab key moves to panel content
299
+ - Home/End jump to first/last tab
300
+
301
+ ### Toast Notifications
302
+
303
+ ```tsx
304
+ {/* Non-interruptive notifications */}
305
+ <div
306
+ role="status"
307
+ aria-live="polite"
308
+ className="fixed bottom-4 right-4"
309
+ >
310
+ <div className="bg-green-50 border border-green-200 p-4 rounded-lg">
311
+ <p>Changes saved successfully</p>
312
+ </div>
313
+ </div>
314
+
315
+ {/* Urgent alerts */}
316
+ <div
317
+ role="alert"
318
+ aria-live="assertive"
319
+ >
320
+ <p>Error: Payment failed</p>
321
+ </div>
322
+ ```
323
+
324
+ ## Screen Reader Testing
325
+
326
+ ### macOS VoiceOver
327
+
328
+ 1. Enable: System Settings → Accessibility → VoiceOver
329
+ 2. Toggle: Cmd + F5
330
+ 3. Navigate: VO + Arrow keys (VO = Ctrl + Option)
331
+ 4. Interact: VO + Shift + Down
332
+ 5. Rotor: VO + U (lists headings, links, form controls)
333
+
334
+ ### Windows NVDA (Free)
335
+
336
+ 1. Download: nvaccess.org
337
+ 2. Toggle: Ctrl + Alt + N
338
+ 3. Navigate: Arrow keys
339
+ 4. Elements list: Insert + F7
340
+
341
+ ### Mobile
342
+
343
+ - **iOS VoiceOver:** Settings → Accessibility → VoiceOver
344
+ - **Android TalkBack:** Settings → Accessibility → TalkBack
345
+
346
+ ## Testing Tools
347
+
348
+ ### Automated
349
+
350
+ - **axe DevTools** (Chrome/Firefox extension)
351
+ - **Lighthouse** (Chrome DevTools → Lighthouse)
352
+ - **WAVE** (wave.webaim.org)
353
+ - **Pa11y** (CLI tool)
354
+
355
+ ### Manual
356
+
357
+ - **Keyboard only:** Unplug mouse, navigate entire app
358
+ - **Screen reader:** VoiceOver (Mac), NVDA (Windows), TalkBack (Android)
359
+ - **Zoom:** Test at 200% browser zoom
360
+ - **Color blind:** Chrome DevTools → Rendering → Emulate vision deficiencies
361
+
362
+ ## Legal Requirements
363
+
364
+ ### Regions with Accessibility Laws
365
+
366
+ - **US:** ADA, Section 508 (government sites)
367
+ - **EU:** European Accessibility Act (June 2025)
368
+ - **UK:** Equality Act 2010
369
+ - **Canada:** AODA (Ontario)
370
+ - **Australia:** Disability Discrimination Act
371
+
372
+ ### Compliance Level
373
+
374
+ - **A:** Minimum (many gaps)
375
+ - **AA:** Target for most (legal requirement in many regions)
376
+ - **AAA:** Gold standard (difficult to achieve fully)
377
+
378
+ **Recommendation:** WCAG 2.2 AA minimum for all public-facing sites.
379
+
380
+ ## Quick Accessibility Checklist
381
+
382
+ - [ ] All images have alt text (or alt="" if decorative)
383
+ - [ ] Color contrast meets 4.5:1 (normal text) or 3:1 (large text, UI)
384
+ - [ ] All interactive elements keyboard accessible
385
+ - [ ] Focus indicators visible (not outline: none without replacement)
386
+ - [ ] Form inputs have labels
387
+ - [ ] Headings in logical order (h1 → h2 → h3, no skipping)
388
+ - [ ] Link text descriptive (not "click here")
389
+ - [ ] Videos have captions
390
+ - [ ] Page has valid lang attribute
391
+ - [ ] Zoom to 200% doesn't break layout
392
+ - [ ] Screen reader announces page changes
393
+ - [ ] Error messages clear and actionable
394
+
395
+ ## Resources
396
+
397
+ - **WCAG 2.2:** w3.org/WAI/WCAG22/quickref
398
+ - **WAI-ARIA Authoring Practices:** w3.org/WAI/ARIA/apg
399
+ - **WebAIM:** webaim.org (articles, checklists)
400
+ - **A11y Project:** a11yproject.com (beginner-friendly)
401
+ - **Inclusive Components:** inclusive-components.design
@@ -0,0 +1,275 @@
1
+ # Color System
2
+
3
+ ## Palette Structure
4
+
5
+ ### Base Palette (9-shade scale)
6
+
7
+ ```tsx
8
+ // Example: Primary color
9
+ const primary = {
10
+ 50: '#EFF6FF', // Lightest background
11
+ 100: '#DBEAFE',
12
+ 200: '#BFDBFE',
13
+ 300: '#93C5FD',
14
+ 400: '#60A5FA',
15
+ 500: '#3B82F6', // Base
16
+ 600: '#2563EB', // Default button
17
+ 700: '#1D4ED8', // Hover state
18
+ 800: '#1E40AF',
19
+ 900: '#1E3A8A', // Darkest text
20
+ }
21
+ ```
22
+
23
+ ### Semantic Colors
24
+
25
+ | Color | Usage | Example |
26
+ |-------|-------|---------|
27
+ | **Success** | Completed actions, positive feedback | green-600 |
28
+ | **Error** | Failed actions, validation errors | red-600 |
29
+ | **Warning** | Caution, reversible actions | amber-600 |
30
+ | **Info** | Neutral information, tips | blue-600 |
31
+
32
+ ```tsx
33
+ {/* Semantic usage */}
34
+ <div className="text-green-600">Payment successful</div>
35
+ <div className="text-red-600">Invalid email address</div>
36
+ <div className="text-amber-600">Unsaved changes</div>
37
+ <div className="text-blue-600">Tip: Press Cmd+K to search</div>
38
+ ```
39
+
40
+ ## Contrast Requirements (WCAG 2.2 AA)
41
+
42
+ ### Text Contrast
43
+
44
+ | Type | Minimum | Recommended |
45
+ |------|---------|-------------|
46
+ | Normal text (<18pt) | 4.5:1 | 7:1 (AAA) |
47
+ | Large text (≥18pt) | 3:1 | 4.5:1 (AAA) |
48
+ | UI components | 3:1 | 4.5:1 |
49
+
50
+ ### Testing Tools
51
+
52
+ - Chrome DevTools (Lighthouse)
53
+ - WebAIM Contrast Checker
54
+ - Stark (Figma plugin)
55
+ - Contrast Ratio (leaverou.github.io/contrast-ratio)
56
+
57
+ ### Common Mistakes
58
+
59
+ ❌ **Gray text on white**
60
+ ```tsx
61
+ {/* Bad: Only 2.5:1 contrast */}
62
+ <p className="text-gray-400">Secondary text</p>
63
+ ```
64
+
65
+ ✅ **Darker gray**
66
+ ```tsx
67
+ {/* Good: 7:1 contrast */}
68
+ <p className="text-gray-600">Secondary text</p>
69
+ ```
70
+
71
+ ## Dark Mode
72
+
73
+ ### Approach
74
+
75
+ **System preference:**
76
+ ```tsx
77
+ // Tailwind config
78
+ module.exports = {
79
+ darkMode: 'media', // or 'class' for manual toggle
80
+ }
81
+ ```
82
+
83
+ **Usage:**
84
+ ```tsx
85
+ <div className="bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100">
86
+ Content
87
+ </div>
88
+ ```
89
+
90
+ ### Dark Mode Palette Adjustments
91
+
92
+ **Don't just invert:**
93
+ - Pure black (#000) is too harsh → Use gray-900 (#111827)
94
+ - Pure white (#FFF) is too bright → Use gray-100 (#F3F4F6)
95
+ - Reduce saturation of colors in dark mode
96
+ - Increase contrast slightly (dark mode often viewed in dim lighting)
97
+
98
+ **Example:**
99
+ ```tsx
100
+ const primary = {
101
+ // Light mode: vibrant
102
+ light: '#2563EB', // blue-600
103
+
104
+ // Dark mode: slightly desaturated
105
+ dark: '#60A5FA', // blue-400 (lighter shade, less saturated)
106
+ }
107
+ ```
108
+
109
+ ### Elevation in Dark Mode
110
+
111
+ **Light mode:** Use shadows
112
+ **Dark mode:** Use lighter backgrounds
113
+
114
+ ```tsx
115
+ <div className="
116
+ bg-white shadow-lg
117
+ dark:bg-gray-800 dark:shadow-none dark:ring-1 dark:ring-gray-700
118
+ ">
119
+ Card content
120
+ </div>
121
+ ```
122
+
123
+ ## Color Harmony
124
+
125
+ ### 60-30-10 Rule
126
+
127
+ - **60%** Dominant (background, neutral)
128
+ - **30%** Secondary (supporting elements)
129
+ - **10%** Accent (CTA, highlights)
130
+
131
+ ```tsx
132
+ {/* Example: Dashboard */}
133
+ <div className="bg-gray-50"> {/* 60% - neutral background */}
134
+ <aside className="bg-white"> {/* 30% - secondary surface */}
135
+ <button className="bg-blue-600"> {/* 10% - accent CTA */}
136
+ Create
137
+ </button>
138
+ </aside>
139
+ </div>
140
+ ```
141
+
142
+ ### Analogous Colors
143
+
144
+ Use adjacent colors on color wheel for harmony:
145
+ - Blue (600) + Cyan (600) + Teal (600)
146
+
147
+ ### Complementary Colors
148
+
149
+ Use opposite colors for high contrast:
150
+ - Blue (600) + Orange (600)
151
+ - Use sparingly for important CTAs
152
+
153
+ ## Brand Color Integration
154
+
155
+ ### Extract brand color palette
156
+
157
+ ```tsx
158
+ // Brand primary: #FF6B35 (custom orange)
159
+
160
+ // Generate shades using tools:
161
+ // - uicolors.app
162
+ // - tailwindshades.com
163
+ // - palettte.app
164
+
165
+ const brand = {
166
+ 50: '#FFF4F0',
167
+ 100: '#FFE8DF',
168
+ 200: '#FFCFBF',
169
+ 300: '#FFB49F',
170
+ 400: '#FF9A7F',
171
+ 500: '#FF6B35', // Brand color
172
+ 600: '#E64D1A',
173
+ 700: '#B33A13',
174
+ 800: '#80290D',
175
+ 900: '#4D1808',
176
+ }
177
+ ```
178
+
179
+ ### Usage in Components
180
+
181
+ ```tsx
182
+ // Replace default blue with brand color
183
+ <button className="bg-brand-500 hover:bg-brand-600 text-white">
184
+ Brand CTA
185
+ </button>
186
+
187
+ // Keep semantic colors standard
188
+ <div className="text-green-600">Success message</div>
189
+ <div className="text-red-600">Error message</div>
190
+ ```
191
+
192
+ ## Design System Color Approaches
193
+
194
+ ### Material Design 3 - Dynamic Color
195
+
196
+ - Generate palette from single source color
197
+ - Adapts to user's wallpaper (Android 12+)
198
+ - Tools: Material Theme Builder
199
+
200
+ ### Apple HIG - System Colors
201
+
202
+ - Semantic colors (systemBlue, systemRed)
203
+ - Automatically adapt to light/dark mode
204
+ - Respect accessibility settings (increase contrast)
205
+
206
+ ### IBM Carbon - Color Tokens
207
+
208
+ - Descriptive tokens (interactive-01, ui-background)
209
+ - Theme-agnostic (same token works across themes)
210
+ - Design → Dev handoff uses token names
211
+
212
+ ## Color Blindness Considerations
213
+
214
+ ### Types
215
+
216
+ - **Deuteranopia** (most common, 5% of males): Red-green
217
+ - **Protanopia**: Red-green
218
+ - **Tritanopia** (rare): Blue-yellow
219
+
220
+ ### Design Strategies
221
+
222
+ ✅ **Use patterns + color**
223
+ ```tsx
224
+ {/* Good: Icon + color differentiates */}
225
+ <div className="text-green-600">✓ Success</div>
226
+ <div className="text-red-600">✗ Error</div>
227
+ ```
228
+
229
+ ✅ **Use high contrast**
230
+ - Avoid red-green combinations
231
+ - Use blue-orange instead
232
+
233
+ ✅ **Test with simulators**
234
+ - Figma: Color Blind plugin
235
+ - Chrome: DevTools → Rendering → Emulate vision deficiencies
236
+
237
+ ## Performance Considerations
238
+
239
+ ### CSS Custom Properties
240
+
241
+ ```css
242
+ :root {
243
+ --color-primary: #3B82F6;
244
+ --color-primary-hover: #2563EB;
245
+ }
246
+
247
+ .dark {
248
+ --color-primary: #60A5FA;
249
+ --color-primary-hover: #3B82F6;
250
+ }
251
+ ```
252
+
253
+ **Benefits:**
254
+ - Runtime theme switching
255
+ - No CSS recompilation
256
+ - Smaller bundle (one color token, multiple values)
257
+
258
+ ### Avoid Inline Styles
259
+
260
+ ❌ **Bad:** (each instance is unique CSS)
261
+ ```tsx
262
+ <div style={{color: '#3B82F6'}}>Text</div>
263
+ ```
264
+
265
+ ✅ **Good:** (reusable class)
266
+ ```tsx
267
+ <div className="text-primary-500">Text</div>
268
+ ```
269
+
270
+ ## Accessibility Tools
271
+
272
+ - **WebAIM Contrast Checker**: webaim.org/resources/contrastchecker
273
+ - **Colorable**: colorable.jxnblk.com
274
+ - **Who Can Use**: whocanuse.com
275
+ - **Contrast Triangle**: contrast-triangle.com