@mrtrinhvn/ag-kit 1.0.10 → 1.1.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 (218) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/bin/cli.js +62 -0
  4. package/package.json +7 -1
  5. package/template/.agent/rules/GEMINI.md +1 -1
  6. package/template/.agent/skills/regent-orchestrator/SKILL.md +31 -0
  7. package/template/.agent/skills/telegram-bridge/SKILL.md +30 -0
  8. package/.agent/.shared/ui-ux-pro-max/data/charts.csv +0 -26
  9. package/.agent/.shared/ui-ux-pro-max/data/colors.csv +0 -97
  10. package/.agent/.shared/ui-ux-pro-max/data/icons.csv +0 -101
  11. package/.agent/.shared/ui-ux-pro-max/data/landing.csv +0 -31
  12. package/.agent/.shared/ui-ux-pro-max/data/products.csv +0 -97
  13. package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +0 -24
  14. package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +0 -45
  15. package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +0 -53
  16. package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +0 -56
  17. package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +0 -53
  18. package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +0 -53
  19. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +0 -51
  20. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +0 -59
  21. package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +0 -52
  22. package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +0 -54
  23. package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +0 -61
  24. package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +0 -54
  25. package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +0 -51
  26. package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +0 -50
  27. package/.agent/.shared/ui-ux-pro-max/data/styles.csv +0 -59
  28. package/.agent/.shared/ui-ux-pro-max/data/typography.csv +0 -58
  29. package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +0 -101
  30. package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
  31. package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +0 -31
  32. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
  33. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
  34. package/.agent/.shared/ui-ux-pro-max/scripts/core.py +0 -258
  35. package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +0 -1067
  36. package/.agent/.shared/ui-ux-pro-max/scripts/search.py +0 -106
  37. package/.agent/ARCHITECTURE.md +0 -288
  38. package/.agent/agents/backend-specialist.md +0 -263
  39. package/.agent/agents/code-archaeologist.md +0 -106
  40. package/.agent/agents/database-architect.md +0 -226
  41. package/.agent/agents/debugger.md +0 -225
  42. package/.agent/agents/devops-engineer.md +0 -242
  43. package/.agent/agents/documentation-writer.md +0 -104
  44. package/.agent/agents/explorer-agent.md +0 -73
  45. package/.agent/agents/frontend-specialist.md +0 -556
  46. package/.agent/agents/game-developer.md +0 -162
  47. package/.agent/agents/mobile-developer.md +0 -377
  48. package/.agent/agents/orchestrator.md +0 -416
  49. package/.agent/agents/penetration-tester.md +0 -188
  50. package/.agent/agents/performance-optimizer.md +0 -187
  51. package/.agent/agents/product-manager.md +0 -112
  52. package/.agent/agents/product-owner.md +0 -95
  53. package/.agent/agents/project-planner.md +0 -406
  54. package/.agent/agents/qa-automation-engineer.md +0 -103
  55. package/.agent/agents/quant-architect.md +0 -31
  56. package/.agent/agents/security-auditor.md +0 -170
  57. package/.agent/agents/seo-specialist.md +0 -111
  58. package/.agent/agents/test-engineer.md +0 -158
  59. package/.agent/mcp_config.json +0 -24
  60. package/.agent/rules/GEMINI.md +0 -280
  61. package/.agent/scripts/auto_preview.py +0 -148
  62. package/.agent/scripts/checklist.py +0 -217
  63. package/.agent/scripts/session_manager.py +0 -120
  64. package/.agent/scripts/verify_all.py +0 -327
  65. package/.agent/skills/api-patterns/SKILL.md +0 -81
  66. package/.agent/skills/api-patterns/api-style.md +0 -42
  67. package/.agent/skills/api-patterns/auth.md +0 -24
  68. package/.agent/skills/api-patterns/documentation.md +0 -26
  69. package/.agent/skills/api-patterns/graphql.md +0 -41
  70. package/.agent/skills/api-patterns/rate-limiting.md +0 -31
  71. package/.agent/skills/api-patterns/response.md +0 -37
  72. package/.agent/skills/api-patterns/rest.md +0 -40
  73. package/.agent/skills/api-patterns/scripts/api_validator.py +0 -211
  74. package/.agent/skills/api-patterns/security-testing.md +0 -122
  75. package/.agent/skills/api-patterns/trpc.md +0 -41
  76. package/.agent/skills/api-patterns/versioning.md +0 -22
  77. package/.agent/skills/app-builder/SKILL.md +0 -75
  78. package/.agent/skills/app-builder/agent-coordination.md +0 -71
  79. package/.agent/skills/app-builder/feature-building.md +0 -53
  80. package/.agent/skills/app-builder/project-detection.md +0 -34
  81. package/.agent/skills/app-builder/scaffolding.md +0 -118
  82. package/.agent/skills/app-builder/tech-stack.md +0 -40
  83. package/.agent/skills/app-builder/templates/SKILL.md +0 -39
  84. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +0 -76
  85. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +0 -92
  86. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +0 -88
  87. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +0 -88
  88. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +0 -83
  89. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +0 -90
  90. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +0 -90
  91. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +0 -82
  92. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +0 -100
  93. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +0 -106
  94. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +0 -101
  95. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +0 -83
  96. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +0 -93
  97. package/.agent/skills/architecture/SKILL.md +0 -55
  98. package/.agent/skills/architecture/context-discovery.md +0 -43
  99. package/.agent/skills/architecture/examples.md +0 -94
  100. package/.agent/skills/architecture/pattern-selection.md +0 -68
  101. package/.agent/skills/architecture/patterns-reference.md +0 -50
  102. package/.agent/skills/architecture/trade-off-analysis.md +0 -77
  103. package/.agent/skills/bash-linux/SKILL.md +0 -199
  104. package/.agent/skills/behavioral-modes/SKILL.md +0 -242
  105. package/.agent/skills/brainstorming/SKILL.md +0 -168
  106. package/.agent/skills/brainstorming/dynamic-questioning.md +0 -350
  107. package/.agent/skills/business-ops/SKILL.md +0 -26
  108. package/.agent/skills/clean-code/SKILL.md +0 -202
  109. package/.agent/skills/cli-generator/SKILL.md +0 -48
  110. package/.agent/skills/code-review-checklist/SKILL.md +0 -109
  111. package/.agent/skills/cognitive-session/SKILL.md +0 -28
  112. package/.agent/skills/data-science/SKILL.md +0 -28
  113. package/.agent/skills/database-design/SKILL.md +0 -52
  114. package/.agent/skills/database-design/database-selection.md +0 -43
  115. package/.agent/skills/database-design/indexing.md +0 -39
  116. package/.agent/skills/database-design/migrations.md +0 -48
  117. package/.agent/skills/database-design/optimization.md +0 -36
  118. package/.agent/skills/database-design/orm-selection.md +0 -30
  119. package/.agent/skills/database-design/schema-design.md +0 -56
  120. package/.agent/skills/database-design/scripts/schema_validator.py +0 -172
  121. package/.agent/skills/deployment-procedures/SKILL.md +0 -241
  122. package/.agent/skills/doc.md +0 -177
  123. package/.agent/skills/documentation-templates/SKILL.md +0 -194
  124. package/.agent/skills/frontend-design/SKILL.md +0 -418
  125. package/.agent/skills/frontend-design/animation-guide.md +0 -331
  126. package/.agent/skills/frontend-design/color-system.md +0 -311
  127. package/.agent/skills/frontend-design/decision-trees.md +0 -418
  128. package/.agent/skills/frontend-design/motion-graphics.md +0 -306
  129. package/.agent/skills/frontend-design/scripts/accessibility_checker.py +0 -183
  130. package/.agent/skills/frontend-design/scripts/ux_audit.py +0 -722
  131. package/.agent/skills/frontend-design/typography-system.md +0 -345
  132. package/.agent/skills/frontend-design/ux-psychology.md +0 -541
  133. package/.agent/skills/frontend-design/visual-effects.md +0 -383
  134. package/.agent/skills/game-development/2d-games/SKILL.md +0 -119
  135. package/.agent/skills/game-development/3d-games/SKILL.md +0 -135
  136. package/.agent/skills/game-development/SKILL.md +0 -167
  137. package/.agent/skills/game-development/game-art/SKILL.md +0 -185
  138. package/.agent/skills/game-development/game-audio/SKILL.md +0 -190
  139. package/.agent/skills/game-development/game-design/SKILL.md +0 -129
  140. package/.agent/skills/game-development/mobile-games/SKILL.md +0 -108
  141. package/.agent/skills/game-development/multiplayer/SKILL.md +0 -132
  142. package/.agent/skills/game-development/pc-games/SKILL.md +0 -144
  143. package/.agent/skills/game-development/vr-ar/SKILL.md +0 -123
  144. package/.agent/skills/game-development/web-games/SKILL.md +0 -150
  145. package/.agent/skills/geo-fundamentals/SKILL.md +0 -156
  146. package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +0 -289
  147. package/.agent/skills/i18n-localization/SKILL.md +0 -154
  148. package/.agent/skills/i18n-localization/scripts/i18n_checker.py +0 -241
  149. package/.agent/skills/intelligent-routing/SKILL.md +0 -335
  150. package/.agent/skills/knowledge-management/SKILL.md +0 -66
  151. package/.agent/skills/lint-and-validate/SKILL.md +0 -45
  152. package/.agent/skills/lint-and-validate/scripts/lint_runner.py +0 -172
  153. package/.agent/skills/lint-and-validate/scripts/type_coverage.py +0 -173
  154. package/.agent/skills/llm-routing-quirks/SKILL.md +0 -41
  155. package/.agent/skills/mcp-builder/SKILL.md +0 -176
  156. package/.agent/skills/memory-architecture/SKILL.md +0 -107
  157. package/.agent/skills/mini-antigravity-injection/SKILL.md +0 -61
  158. package/.agent/skills/mobile-design/SKILL.md +0 -394
  159. package/.agent/skills/mobile-design/decision-trees.md +0 -516
  160. package/.agent/skills/mobile-design/mobile-backend.md +0 -491
  161. package/.agent/skills/mobile-design/mobile-color-system.md +0 -420
  162. package/.agent/skills/mobile-design/mobile-debugging.md +0 -122
  163. package/.agent/skills/mobile-design/mobile-design-thinking.md +0 -357
  164. package/.agent/skills/mobile-design/mobile-navigation.md +0 -458
  165. package/.agent/skills/mobile-design/mobile-performance.md +0 -767
  166. package/.agent/skills/mobile-design/mobile-testing.md +0 -356
  167. package/.agent/skills/mobile-design/mobile-typography.md +0 -433
  168. package/.agent/skills/mobile-design/platform-android.md +0 -666
  169. package/.agent/skills/mobile-design/platform-ios.md +0 -561
  170. package/.agent/skills/mobile-design/scripts/mobile_audit.py +0 -670
  171. package/.agent/skills/mobile-design/touch-psychology.md +0 -537
  172. package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
  173. package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
  174. package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
  175. package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
  176. package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
  177. package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
  178. package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
  179. package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
  180. package/.agent/skills/nextjs-react-expert/9-cache-components.md +0 -103
  181. package/.agent/skills/nextjs-react-expert/SKILL.md +0 -267
  182. package/.agent/skills/nextjs-react-expert/scripts/convert_rules.py +0 -222
  183. package/.agent/skills/nextjs-react-expert/scripts/react_performance_checker.py +0 -252
  184. package/.agent/skills/nodejs-best-practices/SKILL.md +0 -333
  185. package/.agent/skills/parallel-agents/SKILL.md +0 -175
  186. package/.agent/skills/performance-profiling/SKILL.md +0 -143
  187. package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +0 -76
  188. package/.agent/skills/plan-writing/SKILL.md +0 -153
  189. package/.agent/skills/powershell-windows/SKILL.md +0 -167
  190. package/.agent/skills/product-management/SKILL.md +0 -30
  191. package/.agent/skills/python-patterns/SKILL.md +0 -441
  192. package/.agent/skills/red-team-tactics/SKILL.md +0 -199
  193. package/.agent/skills/rust-pro/SKILL.md +0 -176
  194. package/.agent/skills/seo-fundamentals/SKILL.md +0 -129
  195. package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +0 -219
  196. package/.agent/skills/server-management/SKILL.md +0 -161
  197. package/.agent/skills/systematic-debugging/SKILL.md +0 -120
  198. package/.agent/skills/tailwind-patterns/SKILL.md +0 -269
  199. package/.agent/skills/tdd-workflow/SKILL.md +0 -148
  200. package/.agent/skills/testing-patterns/SKILL.md +0 -178
  201. package/.agent/skills/testing-patterns/scripts/test_runner.py +0 -219
  202. package/.agent/skills/vulnerability-scanner/SKILL.md +0 -276
  203. package/.agent/skills/vulnerability-scanner/checklists.md +0 -121
  204. package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +0 -458
  205. package/.agent/skills/web-design-guidelines/SKILL.md +0 -57
  206. package/.agent/skills/webapp-testing/SKILL.md +0 -187
  207. package/.agent/skills/webapp-testing/scripts/playwright_runner.py +0 -173
  208. package/.agent/workflows/brainstorm.md +0 -113
  209. package/.agent/workflows/create.md +0 -59
  210. package/.agent/workflows/debug.md +0 -103
  211. package/.agent/workflows/deploy.md +0 -176
  212. package/.agent/workflows/enhance.md +0 -63
  213. package/.agent/workflows/orchestrate.md +0 -237
  214. package/.agent/workflows/plan.md +0 -89
  215. package/.agent/workflows/preview.md +0 -81
  216. package/.agent/workflows/status.md +0 -86
  217. package/.agent/workflows/test.md +0 -144
  218. package/.agent/workflows/ui-ux-pro-max.md +0 -296
@@ -1,306 +0,0 @@
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.
@@ -1,183 +0,0 @@
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()