@musashishao/agent-kit 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 (220) hide show
  1. package/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
  2. package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
  3. package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
  4. package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
  5. package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
  6. package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
  7. package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
  8. package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  9. package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  10. package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  11. package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  12. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  13. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  14. package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  15. package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  16. package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  17. package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  18. package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  19. package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  20. package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
  21. package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
  22. package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  23. package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  24. package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
  25. package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
  26. package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +487 -0
  27. package/.agent/.shared/ui-ux-pro-max/scripts/search.py +76 -0
  28. package/.agent/ARCHITECTURE.md +225 -0
  29. package/.agent/CONTEXT.md +229 -0
  30. package/.agent/FEATURE_ROADMAP.md +435 -0
  31. package/.agent/PROMPT_TEMPLATES.md +261 -0
  32. package/.agent/agents/backend-specialist.md +263 -0
  33. package/.agent/agents/database-architect.md +226 -0
  34. package/.agent/agents/debugger.md +225 -0
  35. package/.agent/agents/devops-engineer.md +242 -0
  36. package/.agent/agents/documentation-writer.md +104 -0
  37. package/.agent/agents/explorer-agent.md +73 -0
  38. package/.agent/agents/frontend-specialist.md +556 -0
  39. package/.agent/agents/game-developer.md +162 -0
  40. package/.agent/agents/mobile-developer.md +377 -0
  41. package/.agent/agents/orchestrator.md +416 -0
  42. package/.agent/agents/penetration-tester.md +188 -0
  43. package/.agent/agents/performance-optimizer.md +187 -0
  44. package/.agent/agents/project-planner.md +403 -0
  45. package/.agent/agents/security-auditor.md +170 -0
  46. package/.agent/agents/seo-specialist.md +111 -0
  47. package/.agent/agents/test-engineer.md +158 -0
  48. package/.agent/rules/GEMINI.md +251 -0
  49. package/.agent/skills/api-patterns/SKILL.md +81 -0
  50. package/.agent/skills/api-patterns/api-style.md +42 -0
  51. package/.agent/skills/api-patterns/auth.md +24 -0
  52. package/.agent/skills/api-patterns/documentation.md +26 -0
  53. package/.agent/skills/api-patterns/graphql.md +41 -0
  54. package/.agent/skills/api-patterns/rate-limiting.md +31 -0
  55. package/.agent/skills/api-patterns/response.md +37 -0
  56. package/.agent/skills/api-patterns/rest.md +40 -0
  57. package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
  58. package/.agent/skills/api-patterns/security-testing.md +122 -0
  59. package/.agent/skills/api-patterns/trpc.md +41 -0
  60. package/.agent/skills/api-patterns/versioning.md +22 -0
  61. package/.agent/skills/app-builder/SKILL.md +75 -0
  62. package/.agent/skills/app-builder/agent-coordination.md +71 -0
  63. package/.agent/skills/app-builder/feature-building.md +53 -0
  64. package/.agent/skills/app-builder/project-detection.md +34 -0
  65. package/.agent/skills/app-builder/scaffolding.md +118 -0
  66. package/.agent/skills/app-builder/tech-stack.md +40 -0
  67. package/.agent/skills/app-builder/templates/SKILL.md +39 -0
  68. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  69. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  70. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  71. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  72. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  73. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  74. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  75. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
  76. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
  77. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
  78. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
  79. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  80. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
  81. package/.agent/skills/architecture/SKILL.md +55 -0
  82. package/.agent/skills/architecture/context-discovery.md +43 -0
  83. package/.agent/skills/architecture/examples.md +94 -0
  84. package/.agent/skills/architecture/pattern-selection.md +68 -0
  85. package/.agent/skills/architecture/patterns-reference.md +50 -0
  86. package/.agent/skills/architecture/trade-off-analysis.md +77 -0
  87. package/.agent/skills/bash-linux/SKILL.md +199 -0
  88. package/.agent/skills/behavioral-modes/SKILL.md +242 -0
  89. package/.agent/skills/brainstorming/SKILL.md +163 -0
  90. package/.agent/skills/brainstorming/dynamic-questioning.md +350 -0
  91. package/.agent/skills/clean-code/SKILL.md +201 -0
  92. package/.agent/skills/code-review-checklist/SKILL.md +109 -0
  93. package/.agent/skills/database-design/SKILL.md +52 -0
  94. package/.agent/skills/database-design/database-selection.md +43 -0
  95. package/.agent/skills/database-design/indexing.md +39 -0
  96. package/.agent/skills/database-design/migrations.md +48 -0
  97. package/.agent/skills/database-design/optimization.md +36 -0
  98. package/.agent/skills/database-design/orm-selection.md +30 -0
  99. package/.agent/skills/database-design/schema-design.md +56 -0
  100. package/.agent/skills/database-design/scripts/schema_validator.py +172 -0
  101. package/.agent/skills/deployment-procedures/SKILL.md +241 -0
  102. package/.agent/skills/doc.md +177 -0
  103. package/.agent/skills/docker-expert/SKILL.md +409 -0
  104. package/.agent/skills/documentation-templates/SKILL.md +194 -0
  105. package/.agent/skills/frontend-design/SKILL.md +396 -0
  106. package/.agent/skills/frontend-design/animation-guide.md +331 -0
  107. package/.agent/skills/frontend-design/color-system.md +311 -0
  108. package/.agent/skills/frontend-design/decision-trees.md +418 -0
  109. package/.agent/skills/frontend-design/motion-graphics.md +306 -0
  110. package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  111. package/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
  112. package/.agent/skills/frontend-design/typography-system.md +345 -0
  113. package/.agent/skills/frontend-design/ux-psychology.md +541 -0
  114. package/.agent/skills/frontend-design/visual-effects.md +383 -0
  115. package/.agent/skills/game-development/2d-games/SKILL.md +119 -0
  116. package/.agent/skills/game-development/3d-games/SKILL.md +135 -0
  117. package/.agent/skills/game-development/SKILL.md +167 -0
  118. package/.agent/skills/game-development/game-art/SKILL.md +185 -0
  119. package/.agent/skills/game-development/game-audio/SKILL.md +190 -0
  120. package/.agent/skills/game-development/game-design/SKILL.md +129 -0
  121. package/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
  122. package/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
  123. package/.agent/skills/game-development/pc-games/SKILL.md +144 -0
  124. package/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
  125. package/.agent/skills/game-development/web-games/SKILL.md +150 -0
  126. package/.agent/skills/geo-fundamentals/SKILL.md +156 -0
  127. package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  128. package/.agent/skills/i18n-localization/SKILL.md +154 -0
  129. package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  130. package/.agent/skills/lint-and-validate/SKILL.md +45 -0
  131. package/.agent/skills/lint-and-validate/scripts/lint_runner.py +172 -0
  132. package/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  133. package/.agent/skills/mcp-builder/SKILL.md +176 -0
  134. package/.agent/skills/mobile-design/SKILL.md +394 -0
  135. package/.agent/skills/mobile-design/decision-trees.md +516 -0
  136. package/.agent/skills/mobile-design/mobile-backend.md +491 -0
  137. package/.agent/skills/mobile-design/mobile-color-system.md +420 -0
  138. package/.agent/skills/mobile-design/mobile-debugging.md +122 -0
  139. package/.agent/skills/mobile-design/mobile-design-thinking.md +357 -0
  140. package/.agent/skills/mobile-design/mobile-navigation.md +458 -0
  141. package/.agent/skills/mobile-design/mobile-performance.md +767 -0
  142. package/.agent/skills/mobile-design/mobile-testing.md +356 -0
  143. package/.agent/skills/mobile-design/mobile-typography.md +433 -0
  144. package/.agent/skills/mobile-design/platform-android.md +666 -0
  145. package/.agent/skills/mobile-design/platform-ios.md +561 -0
  146. package/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
  147. package/.agent/skills/mobile-design/touch-psychology.md +537 -0
  148. package/.agent/skills/nestjs-expert/SKILL.md +552 -0
  149. package/.agent/skills/nextjs-best-practices/SKILL.md +203 -0
  150. package/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
  151. package/.agent/skills/parallel-agents/SKILL.md +175 -0
  152. package/.agent/skills/performance-profiling/SKILL.md +143 -0
  153. package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
  154. package/.agent/skills/plan-writing/SKILL.md +152 -0
  155. package/.agent/skills/powershell-windows/SKILL.md +167 -0
  156. package/.agent/skills/prisma-expert/SKILL.md +355 -0
  157. package/.agent/skills/python-patterns/SKILL.md +441 -0
  158. package/.agent/skills/react-patterns/SKILL.md +198 -0
  159. package/.agent/skills/red-team-tactics/SKILL.md +199 -0
  160. package/.agent/skills/seo-fundamentals/SKILL.md +129 -0
  161. package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  162. package/.agent/skills/server-management/SKILL.md +161 -0
  163. package/.agent/skills/systematic-debugging/SKILL.md +109 -0
  164. package/.agent/skills/tailwind-patterns/SKILL.md +269 -0
  165. package/.agent/skills/tdd-workflow/SKILL.md +149 -0
  166. package/.agent/skills/testing-patterns/SKILL.md +178 -0
  167. package/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
  168. package/.agent/skills/typescript-expert/SKILL.md +429 -0
  169. package/.agent/skills/typescript-expert/references/tsconfig-strict.json +92 -0
  170. package/.agent/skills/typescript-expert/references/typescript-cheatsheet.md +383 -0
  171. package/.agent/skills/typescript-expert/references/utility-types.ts +335 -0
  172. package/.agent/skills/typescript-expert/scripts/ts_diagnostic.py +203 -0
  173. package/.agent/skills/ui-ux-pro-max/SKILL.md +351 -0
  174. package/.agent/skills/ui-ux-pro-max/data/charts.csv +26 -0
  175. package/.agent/skills/ui-ux-pro-max/data/colors.csv +97 -0
  176. package/.agent/skills/ui-ux-pro-max/data/icons.csv +101 -0
  177. package/.agent/skills/ui-ux-pro-max/data/landing.csv +31 -0
  178. package/.agent/skills/ui-ux-pro-max/data/products.csv +97 -0
  179. package/.agent/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  180. package/.agent/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  181. package/.agent/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  182. package/.agent/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  183. package/.agent/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  184. package/.agent/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  185. package/.agent/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  186. package/.agent/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  187. package/.agent/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  188. package/.agent/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  189. package/.agent/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  190. package/.agent/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  191. package/.agent/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  192. package/.agent/skills/ui-ux-pro-max/data/styles.csv +59 -0
  193. package/.agent/skills/ui-ux-pro-max/data/typography.csv +58 -0
  194. package/.agent/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  195. package/.agent/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  196. package/.agent/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  197. package/.agent/skills/ui-ux-pro-max/scripts/core.py +257 -0
  198. package/.agent/skills/ui-ux-pro-max/scripts/design_system.py +487 -0
  199. package/.agent/skills/ui-ux-pro-max/scripts/search.py +76 -0
  200. package/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
  201. package/.agent/skills/vulnerability-scanner/checklists.md +121 -0
  202. package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  203. package/.agent/skills/webapp-testing/SKILL.md +187 -0
  204. package/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  205. package/.agent/workflows/brainstorm.md +113 -0
  206. package/.agent/workflows/create.md +59 -0
  207. package/.agent/workflows/debug.md +103 -0
  208. package/.agent/workflows/deploy.md +176 -0
  209. package/.agent/workflows/enhance.md +63 -0
  210. package/.agent/workflows/orchestrate.md +237 -0
  211. package/.agent/workflows/plan.md +89 -0
  212. package/.agent/workflows/preview.md +80 -0
  213. package/.agent/workflows/status.md +86 -0
  214. package/.agent/workflows/test.md +144 -0
  215. package/.agent/workflows/ui-ux-pro-max.md +231 -0
  216. package/LICENSE +21 -0
  217. package/README.md +101 -0
  218. package/bin/cli.js +235 -0
  219. package/index.js +1 -0
  220. package/package.json +43 -0
@@ -0,0 +1,306 @@
1
+ # Motion Graphics Reference
2
+
3
+ > Advanced animation techniques for premium web experiences - Lottie, GSAP, SVG, 3D, Particles.
4
+ > **Learn the principles, create WOW effects.**
5
+
6
+ ---
7
+
8
+ ## 1. Lottie Animations
9
+
10
+ ### What is Lottie?
11
+
12
+ ```
13
+ JSON-based vector animations:
14
+ ├── Exported from After Effects via Bodymovin
15
+ ├── Lightweight (smaller than GIF/video)
16
+ ├── Scalable (vector-based, no pixelation)
17
+ ├── Interactive (control playback, segments)
18
+ └── Cross-platform (web, iOS, Android, React Native)
19
+ ```
20
+
21
+ ### When to Use Lottie
22
+
23
+ | Use Case | Why Lottie? |
24
+ |----------|-------------|
25
+ | **Loading animations** | Branded, smooth, lightweight |
26
+ | **Empty states** | Engaging illustrations |
27
+ | **Onboarding flows** | Complex multi-step animations |
28
+ | **Success/Error feedback** | Delightful micro-interactions |
29
+ | **Animated icons** | Consistent cross-platform |
30
+
31
+ ### Principles
32
+
33
+ - Keep file size under 100KB for performance
34
+ - Use loop sparingly (avoid distraction)
35
+ - Provide static fallback for reduced-motion
36
+ - Lazy load animation files when possible
37
+
38
+ ### Sources
39
+
40
+ - LottieFiles.com (free library)
41
+ - After Effects + Bodymovin (custom)
42
+ - Figma plugins (export from design)
43
+
44
+ ---
45
+
46
+ ## 2. GSAP (GreenSock)
47
+
48
+ ### What Makes GSAP Different
49
+
50
+ ```
51
+ Professional timeline-based animation:
52
+ ├── Precise control over sequences
53
+ ├── ScrollTrigger for scroll-driven animations
54
+ ├── MorphSVG for shape transitions
55
+ ├── Physics-based easing
56
+ └── Works with any DOM element
57
+ ```
58
+
59
+ ### Core Concepts
60
+
61
+ | Concept | Purpose |
62
+ |---------|---------|
63
+ | **Tween** | Single A→B animation |
64
+ | **Timeline** | Sequenced/overlapping animations |
65
+ | **ScrollTrigger** | Scroll position controls playback |
66
+ | **Stagger** | Cascade effect across elements |
67
+
68
+ ### When to Use GSAP
69
+
70
+ - ✅ Complex sequenced animations
71
+ - ✅ Scroll-triggered reveals
72
+ - ✅ Precise timing control needed
73
+ - ✅ SVG morphing effects
74
+ - ❌ Simple hover/focus effects (use CSS)
75
+ - ❌ Performance-critical mobile (heavier)
76
+
77
+ ### Principles
78
+
79
+ - Use timeline for orchestration (not individual tweens)
80
+ - Stagger delay: 0.05-0.15s between items
81
+ - ScrollTrigger: start at 70-80% viewport entry
82
+ - Kill animations on unmount (prevent memory leaks)
83
+
84
+ ---
85
+
86
+ ## 3. SVG Animations
87
+
88
+ ### Types of SVG Animation
89
+
90
+ | Type | Technique | Use Case |
91
+ |------|-----------|----------|
92
+ | **Line Drawing** | stroke-dashoffset | Logo reveals, signatures |
93
+ | **Morph** | Path interpolation | Icon transitions |
94
+ | **Transform** | rotate, scale, translate | Interactive icons |
95
+ | **Color** | fill/stroke transition | State changes |
96
+
97
+ ### Line Drawing Principles
98
+
99
+ ```
100
+ How stroke-dashoffset drawing works:
101
+ ├── Set dasharray to path length
102
+ ├── Set dashoffset equal to dasharray (hidden)
103
+ ├── Animate dashoffset to 0 (revealed)
104
+ └── Create "drawing" effect
105
+ ```
106
+
107
+ ### When to Use SVG Animations
108
+
109
+ - ✅ Logo reveals, brand moments
110
+ - ✅ Icon state transitions (hamburger ↔ X)
111
+ - ✅ Infographics, data visualization
112
+ - ✅ Interactive illustrations
113
+ - ❌ Photo-realistic content (use video)
114
+ - ❌ Very complex scenes (performance)
115
+
116
+ ### Principles
117
+
118
+ - Get path length dynamically for accuracy
119
+ - Duration: 1-3s for full drawings
120
+ - Easing: ease-out for natural feel
121
+ - Simple fills complement, don't compete
122
+
123
+ ---
124
+
125
+ ## 4. 3D CSS Transforms
126
+
127
+ ### Core Properties
128
+
129
+ ```
130
+ CSS 3D Space:
131
+ ├── perspective: depth of 3D field (500-1500px typical)
132
+ ├── transform-style: preserve-3d (enable children 3D)
133
+ ├── rotateX/Y/Z: rotation per axis
134
+ ├── translateZ: move toward/away from viewer
135
+ └── backface-visibility: show/hide back side
136
+ ```
137
+
138
+ ### Common 3D Patterns
139
+
140
+ | Pattern | Use Case |
141
+ |---------|----------|
142
+ | **Card flip** | Reveals, flashcards, product views |
143
+ | **Tilt on hover** | Interactive cards, 3D depth |
144
+ | **Parallax layers** | Hero sections, immersive scrolling |
145
+ | **3D carousel** | Image galleries, sliders |
146
+
147
+ ### Principles
148
+
149
+ - Perspective: 800-1200px for subtle, 400-600px for dramatic
150
+ - Keep transforms simple (rotate + translate)
151
+ - Ensure backface-visibility: hidden for flips
152
+ - Test on Safari (different rendering)
153
+
154
+ ---
155
+
156
+ ## 5. Particle Effects
157
+
158
+ ### Types of Particle Systems
159
+
160
+ | Type | Feel | Use Case |
161
+ |------|------|----------|
162
+ | **Geometric** | Tech, network | SaaS, tech sites |
163
+ | **Confetti** | Celebration | Success moments |
164
+ | **Snow/Rain** | Atmospheric | Seasonal, mood |
165
+ | **Dust/Bokeh** | Dreamy | Photography, luxury |
166
+ | **Fireflies** | Magical | Games, fantasy |
167
+
168
+ ### Libraries
169
+
170
+ | Library | Best For |
171
+ |---------|----------|
172
+ | **tsParticles** | Configurable, lightweight |
173
+ | **particles.js** | Simple backgrounds |
174
+ | **Canvas API** | Custom, maximum control |
175
+ | **Three.js** | Complex 3D particles |
176
+
177
+ ### Principles
178
+
179
+ - Default: 30-50 particles (not overwhelming)
180
+ - Movement: slow, organic (speed 0.5-2)
181
+ - Opacity: 0.3-0.6 (don't compete with content)
182
+ - Connections: subtle lines for "network" feel
183
+ - ⚠️ Disable or reduce on mobile
184
+
185
+ ### When to Use
186
+
187
+ - ✅ Hero backgrounds (atmospheric)
188
+ - ✅ Success celebrations (confetti burst)
189
+ - ✅ Tech visualization (connected nodes)
190
+ - ❌ Content-heavy pages (distraction)
191
+ - ❌ Low-powered devices (battery drain)
192
+
193
+ ---
194
+
195
+ ## 6. Scroll-Driven Animations
196
+
197
+ ### Native CSS (Modern)
198
+
199
+ ```
200
+ CSS Scroll Timelines:
201
+ ├── animation-timeline: scroll() - document scroll
202
+ ├── animation-timeline: view() - element in viewport
203
+ ├── animation-range: entry/exit thresholds
204
+ └── No JavaScript required
205
+ ```
206
+
207
+ ### Principles
208
+
209
+ | Trigger Point | Use Case |
210
+ |---------------|----------|
211
+ | **Entry 0%** | When element starts entering |
212
+ | **Entry 50%** | When half visible |
213
+ | **Cover 50%** | When centered in viewport |
214
+ | **Exit 100%** | When fully exited |
215
+
216
+ ### Best Practices
217
+
218
+ - Reveal animations: start at ~25% entry
219
+ - Parallax: continuous scroll progress
220
+ - Sticky elements: use cover range
221
+ - Always test scroll performance
222
+
223
+ ---
224
+
225
+ ## 7. Performance Principles
226
+
227
+ ### GPU vs CPU Animation
228
+
229
+ ```
230
+ CHEAP (GPU-accelerated):
231
+ ├── transform (translate, scale, rotate)
232
+ ├── opacity
233
+ └── filter (use sparingly)
234
+
235
+ EXPENSIVE (triggers reflow):
236
+ ├── width, height
237
+ ├── top, left, right, bottom
238
+ ├── padding, margin
239
+ └── complex box-shadow
240
+ ```
241
+
242
+ ### Optimization Checklist
243
+
244
+ - [ ] Animate only transform/opacity
245
+ - [ ] Use `will-change` before heavy animations (remove after)
246
+ - [ ] Test on low-end devices
247
+ - [ ] Implement `prefers-reduced-motion`
248
+ - [ ] Lazy load animation libraries
249
+ - [ ] Throttle scroll-based calculations
250
+
251
+ ---
252
+
253
+ ## 8. Motion Graphics Decision Tree
254
+
255
+ ```
256
+ What animation do you need?
257
+
258
+ ├── Complex branded animation?
259
+ │ └── Lottie (After Effects export)
260
+
261
+ ├── Sequenced scroll-triggered?
262
+ │ └── GSAP + ScrollTrigger
263
+
264
+ ├── Logo/icon animation?
265
+ │ └── SVG animation (stroke or morph)
266
+
267
+ ├── Interactive 3D effect?
268
+ │ └── CSS 3D Transforms (simple) or Three.js (complex)
269
+
270
+ ├── Atmospheric background?
271
+ │ └── tsParticles or Canvas
272
+
273
+ └── Simple entrance/hover?
274
+ └── CSS @keyframes or Framer Motion
275
+ ```
276
+
277
+ ---
278
+
279
+ ## 9. Anti-Patterns
280
+
281
+ | ❌ Don't | ✅ Do |
282
+ |----------|-------|
283
+ | Animate everything at once | Stagger and sequence |
284
+ | Use heavy libraries for simple effects | Start with CSS |
285
+ | Ignore reduced-motion | Always provide fallback |
286
+ | Block main thread | Optimize for 60fps |
287
+ | Same particles every project | Match brand/context |
288
+ | Complex effects on mobile | Feature detection |
289
+
290
+ ---
291
+
292
+ ## 10. Quick Reference
293
+
294
+ | Effect | Tool | Performance |
295
+ |--------|------|-------------|
296
+ | Loading spinner | CSS/Lottie | Light |
297
+ | Staggered reveal | GSAP/Framer | Medium |
298
+ | SVG path draw | CSS stroke | Light |
299
+ | 3D card flip | CSS transforms | Light |
300
+ | Particle background | tsParticles | Heavy |
301
+ | Scroll parallax | GSAP ScrollTrigger | Medium |
302
+ | Shape morphing | GSAP MorphSVG | Medium |
303
+
304
+ ---
305
+
306
+ > **Remember**: Motion graphics should enhance, not distract. Every animation must serve a PURPOSE—feedback, guidance, delight, or storytelling.
@@ -0,0 +1,183 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Accessibility Checker - WCAG compliance audit
4
+ Checks HTML files for accessibility issues.
5
+
6
+ Usage:
7
+ python accessibility_checker.py <project_path>
8
+
9
+ Checks:
10
+ - Form labels
11
+ - ARIA attributes
12
+ - Color contrast hints
13
+ - Keyboard navigation
14
+ - Semantic HTML
15
+ """
16
+
17
+ import sys
18
+ import json
19
+ import re
20
+ from pathlib import Path
21
+ from datetime import datetime
22
+
23
+ # Fix Windows console encoding
24
+ try:
25
+ sys.stdout.reconfigure(encoding='utf-8', errors='replace')
26
+ except:
27
+ pass
28
+
29
+
30
+ def find_html_files(project_path: Path) -> list:
31
+ """Find all HTML/JSX/TSX files."""
32
+ patterns = ['**/*.html', '**/*.jsx', '**/*.tsx']
33
+ skip_dirs = {'node_modules', '.next', 'dist', 'build', '.git'}
34
+
35
+ files = []
36
+ for pattern in patterns:
37
+ for f in project_path.glob(pattern):
38
+ if not any(skip in f.parts for skip in skip_dirs):
39
+ files.append(f)
40
+
41
+ return files[:50]
42
+
43
+
44
+ def check_accessibility(file_path: Path) -> list:
45
+ """Check a single file for accessibility issues."""
46
+ issues = []
47
+
48
+ try:
49
+ content = file_path.read_text(encoding='utf-8', errors='ignore')
50
+
51
+ # Check for form inputs without labels
52
+ inputs = re.findall(r'<input[^>]*>', content, re.IGNORECASE)
53
+ for inp in inputs:
54
+ if 'type="hidden"' not in inp.lower():
55
+ if 'aria-label' not in inp.lower() and 'id=' not in inp.lower():
56
+ issues.append("Input without label or aria-label")
57
+ break
58
+
59
+ # Check for buttons without accessible text
60
+ buttons = re.findall(r'<button[^>]*>[^<]*</button>', content, re.IGNORECASE)
61
+ for btn in buttons:
62
+ # Check if button has text content or aria-label
63
+ if 'aria-label' not in btn.lower():
64
+ text = re.sub(r'<[^>]+>', '', btn)
65
+ if not text.strip():
66
+ issues.append("Button without accessible text")
67
+ break
68
+
69
+ # Check for missing lang attribute
70
+ if '<html' in content.lower() and 'lang=' not in content.lower():
71
+ issues.append("Missing lang attribute on <html>")
72
+
73
+ # Check for missing skip link
74
+ if '<main' in content.lower() or '<body' in content.lower():
75
+ if 'skip' not in content.lower() and '#main' not in content.lower():
76
+ issues.append("Consider adding skip-to-main-content link")
77
+
78
+ # Check for click handlers without keyboard support
79
+ onclick_count = content.lower().count('onclick=')
80
+ onkeydown_count = content.lower().count('onkeydown=') + content.lower().count('onkeyup=')
81
+ if onclick_count > 0 and onkeydown_count == 0:
82
+ issues.append("onClick without keyboard handler (onKeyDown)")
83
+
84
+ # Check for tabIndex misuse
85
+ if 'tabindex=' in content.lower():
86
+ if 'tabindex="-1"' not in content.lower() and 'tabindex="0"' not in content.lower():
87
+ positive_tabindex = re.findall(r'tabindex="([1-9]\d*)"', content, re.IGNORECASE)
88
+ if positive_tabindex:
89
+ issues.append("Avoid positive tabIndex values")
90
+
91
+ # Check for autoplay media
92
+ if 'autoplay' in content.lower():
93
+ if 'muted' not in content.lower():
94
+ issues.append("Autoplay media should be muted")
95
+
96
+ # Check for role usage
97
+ if 'role="button"' in content.lower():
98
+ # Divs with role button should have tabindex
99
+ div_buttons = re.findall(r'<div[^>]*role="button"[^>]*>', content, re.IGNORECASE)
100
+ for div in div_buttons:
101
+ if 'tabindex' not in div.lower():
102
+ issues.append("role='button' without tabindex")
103
+ break
104
+
105
+ except Exception as e:
106
+ issues.append(f"Error reading file: {str(e)[:50]}")
107
+
108
+ return issues
109
+
110
+
111
+ def main():
112
+ project_path = Path(sys.argv[1] if len(sys.argv) > 1 else ".").resolve()
113
+
114
+ print(f"\n{'='*60}")
115
+ print(f"[ACCESSIBILITY CHECKER] WCAG Compliance Audit")
116
+ print(f"{'='*60}")
117
+ print(f"Project: {project_path}")
118
+ print(f"Time: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
119
+ print("-"*60)
120
+
121
+ # Find HTML files
122
+ files = find_html_files(project_path)
123
+ print(f"Found {len(files)} HTML/JSX/TSX files")
124
+
125
+ if not files:
126
+ output = {
127
+ "script": "accessibility_checker",
128
+ "project": str(project_path),
129
+ "files_checked": 0,
130
+ "issues_found": 0,
131
+ "passed": True,
132
+ "message": "No HTML files found"
133
+ }
134
+ print(json.dumps(output, indent=2))
135
+ sys.exit(0)
136
+
137
+ # Check each file
138
+ all_issues = []
139
+
140
+ for f in files:
141
+ issues = check_accessibility(f)
142
+ if issues:
143
+ all_issues.append({
144
+ "file": str(f.name),
145
+ "issues": issues
146
+ })
147
+
148
+ # Summary
149
+ print("\n" + "="*60)
150
+ print("ACCESSIBILITY ISSUES")
151
+ print("="*60)
152
+
153
+ if all_issues:
154
+ for item in all_issues[:10]:
155
+ print(f"\n{item['file']}:")
156
+ for issue in item["issues"]:
157
+ print(f" - {issue}")
158
+
159
+ if len(all_issues) > 10:
160
+ print(f"\n... and {len(all_issues) - 10} more files with issues")
161
+ else:
162
+ print("No accessibility issues found!")
163
+
164
+ total_issues = sum(len(item["issues"]) for item in all_issues)
165
+ # Accessibility issues are important but not blocking
166
+ passed = total_issues < 5 # Allow minor issues
167
+
168
+ output = {
169
+ "script": "accessibility_checker",
170
+ "project": str(project_path),
171
+ "files_checked": len(files),
172
+ "files_with_issues": len(all_issues),
173
+ "issues_found": total_issues,
174
+ "passed": passed
175
+ }
176
+
177
+ print("\n" + json.dumps(output, indent=2))
178
+
179
+ sys.exit(0 if passed else 1)
180
+
181
+
182
+ if __name__ == "__main__":
183
+ main()