@tinkcarlos/skillora 0.2.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 (234) hide show
  1. package/.claude/skills/.temp-skill-index.md +245 -0
  2. package/.claude/skills/SKILL.md +264 -0
  3. package/.claude/skills/api-scaffolding/SKILL.md +431 -0
  4. package/.claude/skills/api-scaffolding/agents/backend-architect.md +282 -0
  5. package/.claude/skills/api-scaffolding/agents/django-pro.md +144 -0
  6. package/.claude/skills/api-scaffolding/agents/fastapi-pro.md +156 -0
  7. package/.claude/skills/api-scaffolding/agents/graphql-architect.md +146 -0
  8. package/.claude/skills/api-scaffolding/skills/fastapi-templates/SKILL.md +171 -0
  9. package/.claude/skills/api-testing-observability/SKILL.md +583 -0
  10. package/.claude/skills/api-testing-observability/agents/api-documenter.md +146 -0
  11. package/.claude/skills/api-testing-observability/commands/api-mock.md +1320 -0
  12. package/.claude/skills/brainstorming/SKILL.md +283 -0
  13. package/.claude/skills/bug-fixing/SKILL.md +382 -0
  14. package/.claude/skills/bug-fixing/references/backend-guide.md +132 -0
  15. package/.claude/skills/bug-fixing/references/bug-guide.md +354 -0
  16. package/.claude/skills/bug-fixing/references/bug-record-template.md +134 -0
  17. package/.claude/skills/bug-fixing/references/bug-records.md +88 -0
  18. package/.claude/skills/bug-fixing/references/code-review-gate.md +81 -0
  19. package/.claude/skills/bug-fixing/references/common-bugs.md +140 -0
  20. package/.claude/skills/bug-fixing/references/complete-workflow.md +361 -0
  21. package/.claude/skills/bug-fixing/references/config-driven-fixes.md +136 -0
  22. package/.claude/skills/bug-fixing/references/context-isolation-protocol.md +268 -0
  23. package/.claude/skills/bug-fixing/references/cross-surface-regression.md +120 -0
  24. package/.claude/skills/bug-fixing/references/database-investigation.md +129 -0
  25. package/.claude/skills/bug-fixing/references/dependency-and-integrity-protocol.md +369 -0
  26. package/.claude/skills/bug-fixing/references/fix-completeness-checklist.md +239 -0
  27. package/.claude/skills/bug-fixing/references/frontend-guide.md +219 -0
  28. package/.claude/skills/bug-fixing/references/fullstack-joint-guide.md +123 -0
  29. package/.claude/skills/bug-fixing/references/functional-breakage.md +117 -0
  30. package/.claude/skills/bug-fixing/references/ide-lint-errors-guide.md +176 -0
  31. package/.claude/skills/bug-fixing/references/impact-analysis.md +511 -0
  32. package/.claude/skills/bug-fixing/references/investigation-checklist.md +263 -0
  33. package/.claude/skills/bug-fixing/references/knowledge-extraction-guide.md +531 -0
  34. package/.claude/skills/bug-fixing/references/knowledge-workflow.md +212 -0
  35. package/.claude/skills/bug-fixing/references/post-edit-quality-gate.md +30 -0
  36. package/.claude/skills/bug-fixing/references/python-env-and-testing.md +126 -0
  37. package/.claude/skills/bug-fixing/references/rca-guide.md +428 -0
  38. package/.claude/skills/bug-fixing/references/similar-bug-patterns.md +113 -0
  39. package/.claude/skills/bug-fixing/references/skill-delegation-guide.md +350 -0
  40. package/.claude/skills/bug-fixing/references/skill-orchestration.md +155 -0
  41. package/.claude/skills/bug-fixing/references/testing-strategy.md +350 -0
  42. package/.claude/skills/bug-fixing/references/tooling-build-scripts.md +162 -0
  43. package/.claude/skills/bug-fixing/references/user-input-validation.md +77 -0
  44. package/.claude/skills/bug-fixing/references/ux-patterns.md +158 -0
  45. package/.claude/skills/bug-fixing/references/windows-terminal-hygiene.md +106 -0
  46. package/.claude/skills/bug-fixing/references/zero-regression-matrix.md +239 -0
  47. package/.claude/skills/bug-fixing/references/zero-risk-protocol.md +102 -0
  48. package/.claude/skills/bug-fixing/scripts/format_code.py +611 -0
  49. package/.claude/skills/bug-fixing/scripts/generate_report_template.py +74 -0
  50. package/.claude/skills/bug-fixing/scripts/lint_check.py +816 -0
  51. package/.claude/skills/bug-fixing/scripts/requirements.txt +36 -0
  52. package/.claude/skills/cicd-pipeline/SKILL.md +300 -0
  53. package/.claude/skills/code-review/SKILL.md +535 -0
  54. package/.claude/skills/code-review/references/anti-pattern-scan.md +102 -0
  55. package/.claude/skills/code-review/references/automated-analysis.md +456 -0
  56. package/.claude/skills/code-review/references/backend-common-issues.md +589 -0
  57. package/.claude/skills/code-review/references/backend-expert-guide.md +415 -0
  58. package/.claude/skills/code-review/references/backend-review.md +868 -0
  59. package/.claude/skills/code-review/references/batch-processing-strategy.md +198 -0
  60. package/.claude/skills/code-review/references/call-chain-analysis-protocol.md +166 -0
  61. package/.claude/skills/code-review/references/common-patterns.md +321 -0
  62. package/.claude/skills/code-review/references/configuration-review.md +425 -0
  63. package/.claude/skills/code-review/references/control-flow-completeness.md +114 -0
  64. package/.claude/skills/code-review/references/database-review.md +298 -0
  65. package/.claude/skills/code-review/references/dependency-and-integrity-protocol.md +313 -0
  66. package/.claude/skills/code-review/references/external-standards.md +51 -0
  67. package/.claude/skills/code-review/references/feature-review.md +329 -0
  68. package/.claude/skills/code-review/references/file-review-template.md +326 -0
  69. package/.claude/skills/code-review/references/frontend-advanced.md +654 -0
  70. package/.claude/skills/code-review/references/frontend-common-issues.md +482 -0
  71. package/.claude/skills/code-review/references/frontend-expert-guide.md +342 -0
  72. package/.claude/skills/code-review/references/frontend-review.md +783 -0
  73. package/.claude/skills/code-review/references/fullstack-consistency.md +418 -0
  74. package/.claude/skills/code-review/references/fullstack-review.md +477 -0
  75. package/.claude/skills/code-review/references/functional-completeness.md +386 -0
  76. package/.claude/skills/code-review/references/hidden-bugs-detection.md +473 -0
  77. package/.claude/skills/code-review/references/ide-lint-errors-guide.md +173 -0
  78. package/.claude/skills/code-review/references/infrastructure-review.md +453 -0
  79. package/.claude/skills/code-review/references/iteration-review.md +264 -0
  80. package/.claude/skills/code-review/references/job-review.md +335 -0
  81. package/.claude/skills/code-review/references/layered-checklist-protocol.md +157 -0
  82. package/.claude/skills/code-review/references/logic-completeness.md +535 -0
  83. package/.claude/skills/code-review/references/mandatory-checklist.md +288 -0
  84. package/.claude/skills/code-review/references/multi-language-guide.md +800 -0
  85. package/.claude/skills/code-review/references/new-project-review.md +226 -0
  86. package/.claude/skills/code-review/references/non-code-files-review.md +451 -0
  87. package/.claude/skills/code-review/references/overlooked-issues.md +657 -0
  88. package/.claude/skills/code-review/references/platform-specific-review.md +195 -0
  89. package/.claude/skills/code-review/references/precision-analysis-protocol.md +260 -0
  90. package/.claude/skills/code-review/references/python-patterns.md +494 -0
  91. package/.claude/skills/code-review/references/rca-techniques.md +362 -0
  92. package/.claude/skills/code-review/references/report-template.md +430 -0
  93. package/.claude/skills/code-review/references/resource-limits-and-degradation.md +137 -0
  94. package/.claude/skills/code-review/references/review-dimensions.md +311 -0
  95. package/.claude/skills/code-review/references/review-guide.md +202 -0
  96. package/.claude/skills/code-review/references/review-knowledge-workflow.md +257 -0
  97. package/.claude/skills/code-review/references/review-progress-tracker-protocol.md +172 -0
  98. package/.claude/skills/code-review/references/review-record-template.md +195 -0
  99. package/.claude/skills/code-review/references/skill-orchestration.md +143 -0
  100. package/.claude/skills/code-review/references/ui-ux-review.md +470 -0
  101. package/.claude/skills/containerization/SKILL.md +313 -0
  102. package/.claude/skills/database-migrations/agents/database-admin.md +142 -0
  103. package/.claude/skills/database-migrations/agents/database-optimizer.md +144 -0
  104. package/.claude/skills/database-migrations/commands/migration-observability.md +408 -0
  105. package/.claude/skills/database-migrations/commands/sql-migrations.md +492 -0
  106. package/.claude/skills/finishing-a-development-branch/SKILL.md +319 -0
  107. package/.claude/skills/frontend-design/LICENSE.txt +177 -0
  108. package/.claude/skills/frontend-design/SKILL.md +587 -0
  109. package/.claude/skills/frontend-design/references/color-consistency.md +487 -0
  110. package/.claude/skills/frontend-design/references/color-palettes-full.md +657 -0
  111. package/.claude/skills/frontend-design/references/design-system-generator.md +285 -0
  112. package/.claude/skills/frontend-design/references/font-pairings-full.md +705 -0
  113. package/.claude/skills/frontend-design/references/industry-anti-patterns.md +281 -0
  114. package/.claude/skills/frontend-design/references/layout-anti-patterns.md +582 -0
  115. package/.claude/skills/frontend-design/references/motion-patterns.md +659 -0
  116. package/.claude/skills/frontend-design/references/pre-delivery-checklist.md +153 -0
  117. package/.claude/skills/frontend-design/references/responsive-design.md +555 -0
  118. package/.claude/skills/frontend-design/references/style-modification-rules.md +335 -0
  119. package/.claude/skills/frontend-design/references/ui-styles-full.md +383 -0
  120. package/.claude/skills/frontend-design/references/ui-styles-rating.md +191 -0
  121. package/.claude/skills/frontend-design/references/ux-guidelines.md +640 -0
  122. package/.claude/skills/fullstack-developer/SKILL.md +512 -0
  123. package/.claude/skills/fullstack-developer/references/api-contract-guide.md +312 -0
  124. package/.claude/skills/fullstack-developer/references/api-response-patterns.md +223 -0
  125. package/.claude/skills/fullstack-developer/references/async-patterns.md +220 -0
  126. package/.claude/skills/fullstack-developer/references/bug-prevention.md +914 -0
  127. package/.claude/skills/fullstack-developer/references/code-quality-checklist.md +271 -0
  128. package/.claude/skills/fullstack-developer/references/complete-development-workflow.md +278 -0
  129. package/.claude/skills/fullstack-developer/references/context-isolation-protocol.md +256 -0
  130. package/.claude/skills/fullstack-developer/references/database-migration.md +331 -0
  131. package/.claude/skills/fullstack-developer/references/dependency-and-integrity-protocol.md +390 -0
  132. package/.claude/skills/fullstack-developer/references/development-phases.md +333 -0
  133. package/.claude/skills/fullstack-developer/references/expert-guide.md +214 -0
  134. package/.claude/skills/fullstack-developer/references/file-import-patterns.md +114 -0
  135. package/.claude/skills/fullstack-developer/references/graceful-degradation-patterns.md +78 -0
  136. package/.claude/skills/fullstack-developer/references/ide-lint-errors-guide.md +183 -0
  137. package/.claude/skills/fullstack-developer/references/integration-testing.md +301 -0
  138. package/.claude/skills/fullstack-developer/references/mock-api-patterns.md +307 -0
  139. package/.claude/skills/fullstack-developer/references/phase-gate-template.md +249 -0
  140. package/.claude/skills/fullstack-developer/references/post-edit-quality-gate.md +30 -0
  141. package/.claude/skills/fullstack-developer/references/python-engineering.md +79 -0
  142. package/.claude/skills/fullstack-developer/references/skill-orchestration.md +214 -0
  143. package/.claude/skills/fullstack-developer/references/skill-router-table.md +304 -0
  144. package/.claude/skills/fullstack-developer/references/state-sync.md +217 -0
  145. package/.claude/skills/fullstack-developer/references/ui-testing-checklist.md +292 -0
  146. package/.claude/skills/fullstack-developer/scripts/format_code.py +611 -0
  147. package/.claude/skills/fullstack-developer/scripts/lint_check.py +816 -0
  148. package/.claude/skills/fullstack-developer/scripts/requirements.txt +36 -0
  149. package/.claude/skills/performance-optimization/SKILL.md +250 -0
  150. package/.claude/skills/product-requirements/SKILL.md +357 -0
  151. package/.claude/skills/product-requirements/references/acceptance-criteria.md +335 -0
  152. package/.claude/skills/product-requirements/references/answer-first-questioning-protocol.md +299 -0
  153. package/.claude/skills/product-requirements/references/competitive-analysis-guide.md +183 -0
  154. package/.claude/skills/product-requirements/references/document-accuracy-protocol.md +253 -0
  155. package/.claude/skills/product-requirements/references/document-management-protocol.md +278 -0
  156. package/.claude/skills/product-requirements/references/external-standards.md +62 -0
  157. package/.claude/skills/product-requirements/references/feature-spec-template.md +359 -0
  158. package/.claude/skills/product-requirements/references/knowledge-acquisition-protocol.md +251 -0
  159. package/.claude/skills/product-requirements/references/plan-execution-protocol.md +334 -0
  160. package/.claude/skills/product-requirements/references/plan-generation-protocol.md +264 -0
  161. package/.claude/skills/product-requirements/references/prioritization-frameworks.md +80 -0
  162. package/.claude/skills/product-requirements/references/requirement-decomposition-protocol.md +291 -0
  163. package/.claude/skills/product-requirements/references/user-story-examples.md +297 -0
  164. package/.claude/skills/product-requirements/references/workflow-templates.md +266 -0
  165. package/.claude/skills/react-best-practices/SKILL.md +198 -0
  166. package/.claude/skills/react-best-practices/references/advanced-patterns.md +94 -0
  167. package/.claude/skills/react-best-practices/references/bundle-optimization.md +182 -0
  168. package/.claude/skills/react-best-practices/references/client-data-fetching.md +112 -0
  169. package/.claude/skills/react-best-practices/references/complete-guide.md +2249 -0
  170. package/.claude/skills/react-best-practices/references/eliminating-waterfalls.md +169 -0
  171. package/.claude/skills/react-best-practices/references/javascript-performance.md +256 -0
  172. package/.claude/skills/react-best-practices/references/rendering-performance.md +230 -0
  173. package/.claude/skills/react-best-practices/references/rerender-optimization.md +214 -0
  174. package/.claude/skills/react-best-practices/references/server-performance.md +182 -0
  175. package/.claude/skills/security-audit/SKILL.md +226 -0
  176. package/.claude/skills/shared-references/advanced-debugging-techniques.md +186 -0
  177. package/.claude/skills/shared-references/code-quality-checklist.md +218 -0
  178. package/.claude/skills/shared-references/code-review-efficiency-guide.md +125 -0
  179. package/.claude/skills/shared-references/mcp-dependency-compatibility-protocol.md +276 -0
  180. package/.claude/skills/shared-references/skill-call-graph.md +230 -0
  181. package/.claude/skills/shared-references/skill-orchestration-protocol.md +281 -0
  182. package/.claude/skills/shared-references/subagent-dispatch-templates.md +199 -0
  183. package/.claude/skills/skill-expert-skills/LICENSE.txt +204 -0
  184. package/.claude/skills/skill-expert-skills/QUICK_NAVIGATION.md +374 -0
  185. package/.claude/skills/skill-expert-skills/SKILL.md +247 -0
  186. package/.claude/skills/skill-expert-skills/docs/_index.md +91 -0
  187. package/.claude/skills/skill-expert-skills/references/deep-research-methodology.md +389 -0
  188. package/.claude/skills/skill-expert-skills/references/docs-generation-workflow.md +398 -0
  189. package/.claude/skills/skill-expert-skills/references/domain-expertise-protocol.md +343 -0
  190. package/.claude/skills/skill-expert-skills/references/domain-knowledge/_index.md +54 -0
  191. package/.claude/skills/skill-expert-skills/references/domain-knowledge/backend-expertise.md +517 -0
  192. package/.claude/skills/skill-expert-skills/references/domain-knowledge/bug-fixing-expertise.md +363 -0
  193. package/.claude/skills/skill-expert-skills/references/domain-knowledge/code-review-expertise.md +392 -0
  194. package/.claude/skills/skill-expert-skills/references/domain-knowledge/frontend-expertise.md +410 -0
  195. package/.claude/skills/skill-expert-skills/references/domain-knowledge-template.md +503 -0
  196. package/.claude/skills/skill-expert-skills/references/examples.md +782 -0
  197. package/.claude/skills/skill-expert-skills/references/integration-examples.md +655 -0
  198. package/.claude/skills/skill-expert-skills/references/knowledge-validation-checklist.md +246 -0
  199. package/.claude/skills/skill-expert-skills/references/latest-knowledge-acquisition.md +461 -0
  200. package/.claude/skills/skill-expert-skills/references/mcp-tools-guide.md +439 -0
  201. package/.claude/skills/skill-expert-skills/references/official-best-practices.md +616 -0
  202. package/.claude/skills/skill-expert-skills/references/patterns.md +218 -0
  203. package/.claude/skills/skill-expert-skills/references/plugin-skills-guide.md +432 -0
  204. package/.claude/skills/skill-expert-skills/references/requirement-elicitation-protocol.md +290 -0
  205. package/.claude/skills/skill-expert-skills/references/skill-creator-SKILL.md +353 -0
  206. package/.claude/skills/skill-expert-skills/references/skill-templates.md +583 -0
  207. package/.claude/skills/skill-expert-skills/references/skills-knowledge-base.md +561 -0
  208. package/.claude/skills/skill-expert-skills/references/tools-guide.md +379 -0
  209. package/.claude/skills/skill-expert-skills/references/troubleshooting.md +378 -0
  210. package/.claude/skills/skill-expert-skills/references/universality-guide.md +205 -0
  211. package/.claude/skills/skill-expert-skills/references/writing-style-guide.md +466 -0
  212. package/.claude/skills/skill-expert-skills/scripts/__pycache__/quick_validate.cpython-313.pyc +0 -0
  213. package/.claude/skills/skill-expert-skills/scripts/__pycache__/universal_validate.cpython-313.pyc +0 -0
  214. package/.claude/skills/skill-expert-skills/scripts/analyze_trigger.py +425 -0
  215. package/.claude/skills/skill-expert-skills/scripts/diff_with_official.py +188 -0
  216. package/.claude/skills/skill-expert-skills/scripts/init_skill.py +349 -0
  217. package/.claude/skills/skill-expert-skills/scripts/package_skill.py +156 -0
  218. package/.claude/skills/skill-expert-skills/scripts/quick_validate.py +493 -0
  219. package/.claude/skills/skill-expert-skills/scripts/requirements.txt +2 -0
  220. package/.claude/skills/skill-expert-skills/scripts/universal_validate.py +182 -0
  221. package/.claude/skills/skill-expert-skills/scripts/upgrade_skill.py +431 -0
  222. package/.claude/skills/subagent-driven-development/SKILL.md +268 -0
  223. package/.claude/skills/test-driven-development/SKILL.md +246 -0
  224. package/.claude/skills/test-driven-development/references/testing-anti-patterns.md +192 -0
  225. package/.claude/skills/using-git-worktrees/SKILL.md +266 -0
  226. package/.claude/skills/using-skillstack/SKILL.md +127 -0
  227. package/.claude/skills/vercel-deploy/SKILL.md +166 -0
  228. package/.claude/skills/vercel-deploy/scripts/deploy.sh +249 -0
  229. package/.claude/skills/verification-before-completion/SKILL.md +305 -0
  230. package/.claude/skills/writing-plans/SKILL.md +259 -0
  231. package/README.md +69 -0
  232. package/bin/cli.js +468 -0
  233. package/lib/init.js +333 -0
  234. package/package.json +29 -0
@@ -0,0 +1,783 @@
1
+ # Frontend Code Review - Complete Guide
2
+
3
+ Comprehensive frontend code review covering UI anomaly detection, interaction quality, performance optimization, and cross-browser compatibility.
4
+
5
+ ---
6
+
7
+ ## 🎯 Frontend Review Philosophy
8
+
9
+ ### Core Perspective: Visual → Interaction → Performance → Code
10
+
11
+ Frontend CR ensures high-quality user experience by evaluating from multiple dimensions, **simulating real user scenarios** across devices, browsers, and network conditions.
12
+
13
+ ```
14
+ Review Dimensions:
15
+ ┌─────────────────────────────────────────┐
16
+ │ Dimension 1: Visual Quality │
17
+ │ - UI consistency with design │
18
+ │ - Layout correctness │
19
+ │ - Responsive behavior │
20
+ └─────────────────────────────────────────┘
21
+
22
+ ┌─────────────────────────────────────────┐
23
+ │ Dimension 2: Interaction Quality │
24
+ │ - Smooth animations │
25
+ │ - Responsive feedback │
26
+ │ - Error state handling │
27
+ └─────────────────────────────────────────┘
28
+
29
+ ┌─────────────────────────────────────────┐
30
+ │ Dimension 3: Performance │
31
+ │ - Core Web Vitals │
32
+ │ - Bundle size │
33
+ │ - Runtime efficiency │
34
+ └─────────────────────────────────────────┘
35
+
36
+ ┌─────────────────────────────────────────┐
37
+ │ Dimension 4: Code Quality │
38
+ │ - Component architecture │
39
+ │ - State management │
40
+ │ - Error handling │
41
+ └─────────────────────────────────────────┘
42
+ ```
43
+
44
+ ### Review Time Allocation
45
+
46
+ | PR Size | Files | Recommended Time | Focus |
47
+ |---------|-------|------------------|-------|
48
+ | Small | <5 | 15-30 min | Visual + Code |
49
+ | Medium | 5-15 | 30-60 min | All dimensions |
50
+ | Large | 15-30 | 1-2 hours | All + cross-browser |
51
+ | XL | >30 | 2+ hours | Consider splitting |
52
+
53
+ ---
54
+
55
+ ## 🛠️ Mandatory Pre-Review Scans
56
+
57
+ ### Automated Tool Checklist
58
+
59
+ ```bash
60
+ # Style & Code Quality
61
+ npx stylelint "**/*.css" --fix # CSS linting
62
+ npx eslint . --max-warnings 0 # JS/TS linting
63
+ npx prettier --check . # Formatting
64
+
65
+ # Type Checking
66
+ npx tsc --noEmit # TypeScript strict mode
67
+
68
+ # Security
69
+ npm audit # Dependency vulnerabilities
70
+ npx snyk test # Deep security scan
71
+
72
+ # Performance
73
+ npx lighthouse-ci # Lighthouse CI (target: >90)
74
+ npx bundlesize # Bundle size check
75
+
76
+ # Accessibility
77
+ npx axe-cli http://localhost:3000 # Accessibility scan
78
+ ```
79
+
80
+ ### Tool Configuration Requirements
81
+
82
+ ```markdown
83
+ ## Required Tool Configurations
84
+
85
+ ### ESLint
86
+ - [ ] Strict mode enabled
87
+ - [ ] React/Vue plugin configured
88
+ - [ ] Import order rules
89
+ - [ ] No unused vars/imports
90
+
91
+ ### TypeScript
92
+ - [ ] strict: true
93
+ - [ ] noImplicitAny: true
94
+ - [ ] strictNullChecks: true
95
+
96
+ ### Stylelint
97
+ - [ ] Order rules
98
+ - [ ] No !important (or limited)
99
+ - [ ] Color format consistency
100
+
101
+ ### Lighthouse Thresholds
102
+ | Metric | Minimum | Target |
103
+ |--------|---------|--------|
104
+ | Performance | 80 | 90+ |
105
+ | Accessibility | 90 | 100 |
106
+ | Best Practices | 90 | 100 |
107
+ | SEO | 90 | 100 |
108
+ ```
109
+
110
+ ---
111
+
112
+ ## 👁️ UI Anomaly Detection
113
+
114
+ ### Visual Inspection Checklist
115
+
116
+ ```markdown
117
+ ## Visual Review Steps
118
+
119
+ ### Step 1: Browser DevTools Setup
120
+ 1. Open Elements panel
121
+ 2. Enable device toolbar (responsive mode)
122
+ 3. Open Computed styles panel
123
+ 4. Enable Rendering > Paint flashing (optional)
124
+
125
+ ### Step 2: Layout Inspection
126
+ | Check | Tool | Issue Type |
127
+ |-------|------|------------|
128
+ | Box model | DevTools Elements | Margin collapse, padding issues |
129
+ | Flexbox alignment | Flexbox inspector | Justify/align issues |
130
+ | Grid layout | Grid inspector | Track sizing, gaps |
131
+ | Overflow | Scroll to edges | Hidden content, scrollbars |
132
+
133
+ ### Step 3: Spacing & Typography
134
+ | Check | Expected | Actual | Status |
135
+ |-------|----------|--------|--------|
136
+ | Font family | Inter | Inter | ✅ |
137
+ | Font size H1 | 32px | 30px | ⚠️ |
138
+ | Line height body | 1.5 | 1.5 | ✅ |
139
+ | Paragraph margin | 16px | 24px | ⚠️ |
140
+ | Button padding | 12px 24px | 12px 24px | ✅ |
141
+ ```
142
+
143
+ ### Design-Code Comparison
144
+
145
+ ```markdown
146
+ ## Design vs Implementation Matrix
147
+
148
+ ### Figma/Sketch Comparison
149
+ | Element | Design | Code | Match |
150
+ |---------|--------|------|-------|
151
+ | Primary color | #2563EB | #2563EB | ✅ |
152
+ | Border radius | 8px | 6px | ⚠️ |
153
+ | Shadow | 0 4px 6px rgba(0,0,0,0.1) | 0 2px 4px rgba(0,0,0,0.1) | ⚠️ |
154
+ | Icon size | 24px | 20px | ❌ |
155
+
156
+ ### Spacing System
157
+ | Design Token | Value | Used Consistently |
158
+ |--------------|-------|-------------------|
159
+ | spacing-xs | 4px | ✅ |
160
+ | spacing-sm | 8px | ✅ |
161
+ | spacing-md | 16px | ⚠️ (12px in some places) |
162
+ | spacing-lg | 24px | ✅ |
163
+ ```
164
+
165
+ ### Responsive Design Verification
166
+
167
+ ```markdown
168
+ ## Responsive Breakpoints Test
169
+
170
+ ### Test Devices
171
+ | Device | Width | Height | Test Status |
172
+ |--------|-------|--------|-------------|
173
+ | iPhone SE | 375px | 667px | ✅ |
174
+ | iPhone 12 | 390px | 844px | ✅ |
175
+ | iPad | 768px | 1024px | ⚠️ Layout issue |
176
+ | iPad Pro | 1024px | 1366px | ✅ |
177
+ | Desktop | 1440px | 900px | ✅ |
178
+ | Wide screen | 1920px | 1080px | ✅ |
179
+
180
+ ### Common Responsive Issues
181
+ | Issue | Breakpoint | Fix |
182
+ |-------|------------|-----|
183
+ | Text overflow | <375px | Add text-wrap or font-size reduction |
184
+ | Sidebar overlap | 768px-1024px | Adjust breakpoint or add collapsible |
185
+ | Images stretch | >1440px | Add max-width |
186
+ ```
187
+
188
+ ---
189
+
190
+ ## 🎭 Interaction Quality Review
191
+
192
+ ### Animation & Micro-interaction
193
+
194
+ ```markdown
195
+ ## Animation Review
196
+
197
+ ### Performance Metrics
198
+ | Animation | FPS | Duration | Easing | Status |
199
+ |-----------|-----|----------|--------|--------|
200
+ | Page transition | 60 | 300ms | ease-out | ✅ |
201
+ | Button hover | 58 | 150ms | ease | ✅ |
202
+ | Modal open | 45 | 400ms | ease-in-out | ⚠️ Jank |
203
+ | Infinite scroll | 55 | N/A | N/A | ⚠️ Optimize |
204
+
205
+ ### Animation Best Practices
206
+ - [ ] Use transform/opacity only (compositor-friendly)
207
+ - [ ] Avoid animating width/height/top/left
208
+ - [ ] Use will-change sparingly
209
+ - [ ] Respect prefers-reduced-motion
210
+ ```
211
+
212
+ ```css
213
+ /* ❌ Janky animation - triggers layout */
214
+ .card {
215
+ transition: width 0.3s, height 0.3s;
216
+ }
217
+ .card:hover {
218
+ width: 120%;
219
+ height: 120%;
220
+ }
221
+
222
+ /* ✅ Smooth animation - compositor only */
223
+ .card {
224
+ transition: transform 0.3s ease-out;
225
+ }
226
+ .card:hover {
227
+ transform: scale(1.1);
228
+ }
229
+
230
+ /* ✅ Respect reduced motion */
231
+ @media (prefers-reduced-motion: reduce) {
232
+ .card {
233
+ transition: none;
234
+ }
235
+ }
236
+ ```
237
+
238
+ ### Loading State Review
239
+
240
+ ```markdown
241
+ ## Loading State Checklist
242
+
243
+ ### Initial Load
244
+ - [ ] Skeleton screen implemented
245
+ - [ ] Above-the-fold content prioritized
246
+ - [ ] Critical CSS inlined
247
+ - [ ] Fonts preloaded
248
+
249
+ ### Data Fetching
250
+ - [ ] Loading indicators visible
251
+ - [ ] Partial content display (progressive)
252
+ - [ ] Timeout handling
253
+ - [ ] Error state fallback
254
+
255
+ ### Lazy Loading
256
+ | Resource | Strategy | Threshold | Status |
257
+ |----------|----------|-----------|--------|
258
+ | Images below fold | Intersection Observer | 200px | ✅ |
259
+ | Heavy components | Dynamic import | On route | ✅ |
260
+ | Comments section | Scroll into view | 100px | ✅ |
261
+ | Ads | Viewport entry | 0px | ⚠️ CLS risk |
262
+ ```
263
+
264
+ ### Focus & Keyboard Navigation
265
+
266
+ ```markdown
267
+ ## Focus Management Review
268
+
269
+ ### Tab Order Verification
270
+ | Element | Expected Order | Actual Order | Status |
271
+ |---------|----------------|--------------|--------|
272
+ | Logo link | 1 | 1 | ✅ |
273
+ | Nav items | 2-5 | 2-5 | ✅ |
274
+ | Search input | 6 | 8 | ❌ Wrong order |
275
+ | Main content | 7+ | 6 | ❌ Skip link missing |
276
+
277
+ ### Focus Visibility
278
+ - [ ] :focus-visible styles applied
279
+ - [ ] Focus ring contrast sufficient (3:1 minimum)
280
+ - [ ] No outline: none without replacement
281
+ - [ ] Modal focus trap implemented
282
+ ```
283
+
284
+ ```css
285
+ /* ❌ Removes focus indicator */
286
+ button:focus {
287
+ outline: none;
288
+ }
289
+
290
+ /* ✅ Custom focus indicator */
291
+ button:focus-visible {
292
+ outline: 2px solid var(--color-focus);
293
+ outline-offset: 2px;
294
+ }
295
+
296
+ /* ✅ Skip link for keyboard users */
297
+ .skip-link {
298
+ position: absolute;
299
+ top: -100%;
300
+ left: 0;
301
+ background: var(--color-primary);
302
+ color: white;
303
+ padding: 8px 16px;
304
+ z-index: 100;
305
+ }
306
+ .skip-link:focus {
307
+ top: 0;
308
+ }
309
+ ```
310
+
311
+ ---
312
+
313
+ ## ⚡ Performance Deep Dive
314
+
315
+ ### Memory Leak Prevention
316
+
317
+ #### Module-Level Variables (Global Cache)
318
+ Long-lived SPAs often accumulate data in module-level variables (outside components).
319
+
320
+ ```typescript
321
+ // ❌ Unbounded growth
322
+ const wsClients: Record<string, WebSocket> = {}; // Grows forever
323
+
324
+ // ✅ LRU / Cleanup Strategy
325
+ const MAX_CLIENTS = 5;
326
+ function connect(id: string) {
327
+ if (Object.keys(wsClients).length >= MAX_CLIENTS) {
328
+ // Cleanup logic
329
+ const oldest = getOldest(wsClients);
330
+ oldest.close();
331
+ delete wsClients[oldest.id];
332
+ }
333
+ wsClients[id] = new WebSocket(...);
334
+ }
335
+ ```
336
+
337
+ ### WebSocket & Real-Time Review
338
+
339
+ | Check | Best Practice | Status |
340
+ |-------|---------------|--------|
341
+ | **Connection Limit** | Limit active connections per client (e.g., max 5) | ⚠️ |
342
+ | **Reconnection** | Exponential backoff (not immediate loop) | ✅ |
343
+ | **Heartbeat** | Client-side ping/pong to detect dead connections | ⚠️ |
344
+ | **Cleanup** | Close connection on component unmount / logout | ❌ |
345
+ | **Message Queue** | Queue messages when disconnected | ✅ |
346
+
347
+ ### Core Web Vitals Targets
348
+
349
+ ```markdown
350
+ ## Core Web Vitals Review
351
+
352
+ ### Current Metrics
353
+ | Metric | Target | Actual | Status |
354
+ |--------|--------|--------|--------|
355
+ | LCP | <2.5s | 2.8s | ⚠️ |
356
+ | FID | <100ms | 45ms | ✅ |
357
+ | CLS | <0.1 | 0.15 | ❌ |
358
+ | INP | <200ms | 180ms | ✅ |
359
+ | TTFB | <800ms | 650ms | ✅ |
360
+
361
+ ### LCP Optimization Checklist
362
+ - [ ] Hero image preloaded
363
+ - [ ] Critical CSS inlined
364
+ - [ ] Server response <200ms
365
+ - [ ] No render-blocking JS
366
+ - [ ] Font display: swap
367
+
368
+ ### CLS Causes & Fixes
369
+ | Cause | Current | Fix |
370
+ |-------|---------|-----|
371
+ | Images without dimensions | 3 images | Add width/height |
372
+ | Dynamic content insertion | Ads, banners | Reserve space |
373
+ | Web fonts FOUT | 2 fonts | Font display: optional |
374
+ | Iframe without dimensions | 1 embed | Add aspect-ratio |
375
+ ```
376
+
377
+ ### Image Optimization
378
+
379
+ ```markdown
380
+ ## Image Review
381
+
382
+ ### Format Analysis
383
+ | Image | Current | Optimal | Savings |
384
+ |-------|---------|---------|---------|
385
+ | hero.jpg | 450KB | hero.webp 120KB | 73% |
386
+ | logo.png | 25KB | logo.svg 3KB | 88% |
387
+ | icons/*.png | 200KB | sprite.svg 15KB | 92% |
388
+
389
+ ### Image Checklist
390
+ - [ ] WebP/AVIF with fallback
391
+ - [ ] Responsive srcset
392
+ - [ ] Lazy loading (native or IO)
393
+ - [ ] Explicit width/height
394
+ - [ ] Alt text present
395
+ ```
396
+
397
+ ```html
398
+ <!-- ❌ No optimization -->
399
+ <img src="hero.jpg">
400
+
401
+ <!-- ✅ Fully optimized -->
402
+ <picture>
403
+ <source srcset="hero.avif" type="image/avif">
404
+ <source srcset="hero.webp" type="image/webp">
405
+ <img
406
+ src="hero.jpg"
407
+ alt="Product showcase"
408
+ width="1200"
409
+ height="800"
410
+ loading="lazy"
411
+ decoding="async"
412
+ >
413
+ </picture>
414
+ ```
415
+
416
+ ### Bundle Size Analysis
417
+
418
+ ```markdown
419
+ ## Bundle Analysis
420
+
421
+ ### Main Chunks
422
+ | Chunk | Size | Limit | Status |
423
+ |-------|------|-------|--------|
424
+ | main.js | 250KB | 200KB | ❌ |
425
+ | vendor.js | 180KB | 150KB | ❌ |
426
+ | styles.css | 45KB | 50KB | ✅ |
427
+
428
+ ### Large Dependencies
429
+ | Package | Size | Used | Alternative |
430
+ |---------|------|------|-------------|
431
+ | lodash | 70KB | 3 functions | lodash-es + tree shake |
432
+ | moment | 65KB | Date formatting | date-fns or dayjs |
433
+ | chart.js | 60KB | 1 chart type | Lightweight alternative |
434
+
435
+ ### Code Splitting Opportunities
436
+ | Route | Current | After Split | Lazy Load |
437
+ |-------|---------|-------------|-----------|
438
+ | /dashboard | 250KB | 80KB | ✅ |
439
+ | /settings | Bundled | 35KB | Should split |
440
+ | /admin | Bundled | 120KB | Must split |
441
+ ```
442
+
443
+ ---
444
+
445
+ ## 🌐 Cross-Browser Compatibility
446
+
447
+ ### Browser Testing Matrix
448
+
449
+ ```markdown
450
+ ## Browser Compatibility
451
+
452
+ ### Required Testing
453
+ | Browser | Version | Desktop | Mobile | Status |
454
+ |---------|---------|---------|--------|--------|
455
+ | Chrome | Latest | ✅ | ✅ | ✅ |
456
+ | Firefox | Latest | ✅ | ✅ | ✅ |
457
+ | Safari | Latest | ✅ | ✅ | ⚠️ |
458
+ | Edge | Latest | ✅ | ✅ | ✅ |
459
+ | Safari | 14+ | ✅ | ✅ | ⚠️ flexbox gap |
460
+ | Chrome | 90+ | ✅ | ✅ | ✅ |
461
+
462
+ ### Known Compatibility Issues
463
+ | Feature | Support | Fallback |
464
+ |---------|---------|----------|
465
+ | CSS gap (flexbox) | Safari 14.1+ | margin hack |
466
+ | :has() selector | Safari 15.4+ | JS fallback |
467
+ | Container queries | Limited | @media queries |
468
+ | CSS subgrid | Firefox only | Nested grid |
469
+ ```
470
+
471
+ ### Polyfill Strategy
472
+
473
+ ```markdown
474
+ ## Polyfill Review
475
+
476
+ ### Required Polyfills
477
+ | Feature | Polyfill | Size | Conditional |
478
+ |---------|----------|------|-------------|
479
+ | fetch | whatwg-fetch | 3KB | ✅ |
480
+ | Promise | es6-promise | 6KB | ✅ |
481
+ | IntersectionObserver | intersection-observer | 7KB | ✅ |
482
+ | ResizeObserver | resize-observer-polyfill | 8KB | ✅ |
483
+
484
+ ### Loading Strategy
485
+ ```javascript
486
+ // ✅ Conditional polyfill loading
487
+ if (!('IntersectionObserver' in window)) {
488
+ import('intersection-observer');
489
+ }
490
+
491
+ // ✅ Or use polyfill.io
492
+ <script src="https://polyfill.io/v3/polyfill.min.js?features=IntersectionObserver"></script>
493
+ ```
494
+ ```
495
+
496
+ ---
497
+
498
+ ## 🎨 Dark Mode Review
499
+
500
+ ### Theme Implementation
501
+
502
+ ```markdown
503
+ ## Dark Mode Checklist
504
+
505
+ ### CSS Variables
506
+ - [ ] Color scheme declared (color-scheme: light dark)
507
+ - [ ] All colors use CSS variables
508
+ - [ ] Semantic naming (--color-background, not --color-white)
509
+ - [ ] Transition on theme change
510
+
511
+ ### Media Query Support
512
+ - [ ] prefers-color-scheme: dark respected
513
+ - [ ] Manual toggle available
514
+ - [ ] Preference persisted (localStorage)
515
+ - [ ] No flash on load (FOUC prevention)
516
+
517
+ ### Contrast Check
518
+ | Element | Light Mode | Dark Mode | WCAG |
519
+ |---------|------------|-----------|------|
520
+ | Body text | 7:1 ✅ | 6:1 ✅ | AA |
521
+ | Links | 4.5:1 ✅ | 3.8:1 ⚠️ | Needs fix |
522
+ | Disabled | 3:1 ⚠️ | 2.5:1 ❌ | Needs fix |
523
+ ```
524
+
525
+ ```css
526
+ /* ✅ Complete dark mode setup */
527
+ :root {
528
+ color-scheme: light dark;
529
+
530
+ /* Light mode (default) */
531
+ --color-bg: #ffffff;
532
+ --color-text: #1a1a1a;
533
+ --color-primary: #2563eb;
534
+ }
535
+
536
+ @media (prefers-color-scheme: dark) {
537
+ :root {
538
+ --color-bg: #1a1a1a;
539
+ --color-text: #f5f5f5;
540
+ --color-primary: #60a5fa;
541
+ }
542
+ }
543
+
544
+ /* Manual override via data attribute */
545
+ [data-theme="dark"] {
546
+ --color-bg: #1a1a1a;
547
+ --color-text: #f5f5f5;
548
+ --color-primary: #60a5fa;
549
+ }
550
+
551
+ /* Smooth transition */
552
+ body {
553
+ background: var(--color-bg);
554
+ color: var(--color-text);
555
+ transition: background-color 0.3s, color 0.3s;
556
+ }
557
+ ```
558
+
559
+ ---
560
+
561
+ ## 📱 Mobile UX Review
562
+
563
+ ### Touch Interaction
564
+
565
+ ```markdown
566
+ ## Touch Target Review
567
+
568
+ ### Minimum Sizes
569
+ | Element | Current Size | Required | Status |
570
+ |---------|--------------|----------|--------|
571
+ | Buttons | 44x44px | 44x44px | ✅ |
572
+ | Links | 32x20px | 44x44px | ❌ |
573
+ | Icons | 24x24px | 44x44px | ❌ (add padding) |
574
+ | Checkboxes | 16x16px | 44x44px | ❌ |
575
+
576
+ ### Touch Spacing
577
+ - [ ] 8px minimum between touch targets
578
+ - [ ] No hover-only interactions
579
+ - [ ] Touch feedback (active state)
580
+ ```
581
+
582
+ ### Mobile-Specific Issues
583
+
584
+ ```markdown
585
+ ## Mobile UX Checklist
586
+
587
+ ### Viewport
588
+ - [ ] viewport meta tag correct
589
+ - [ ] No horizontal scroll
590
+ - [ ] 100vh issues handled (address bar)
591
+ - [ ] Safe area insets for notch
592
+
593
+ ### Input Handling
594
+ - [ ] Appropriate input types (email, tel, number)
595
+ - [ ] Autocomplete attributes
596
+ - [ ] No zoom on input focus (font-size >= 16px)
597
+ - [ ] Virtual keyboard doesn't hide inputs
598
+
599
+ ### Gestures
600
+ - [ ] Swipe actions accessible via buttons too
601
+ - [ ] Pull-to-refresh if applicable
602
+ - [ ] No interference with system gestures
603
+ ```
604
+
605
+ ```css
606
+ /* ❌ Input zoom on mobile Safari */
607
+ input {
608
+ font-size: 14px; /* Triggers zoom on focus */
609
+ }
610
+
611
+ /* ✅ Prevent zoom */
612
+ input {
613
+ font-size: 16px; /* Or larger */
614
+ }
615
+
616
+ /* ✅ Handle safe areas (notch) */
617
+ .header {
618
+ padding-top: env(safe-area-inset-top);
619
+ }
620
+
621
+ .footer {
622
+ padding-bottom: env(safe-area-inset-bottom);
623
+ }
624
+
625
+ /* ✅ Fix 100vh on mobile */
626
+ .full-height {
627
+ height: 100vh;
628
+ height: 100dvh; /* Dynamic viewport height */
629
+ }
630
+ ```
631
+
632
+ ---
633
+
634
+ ## 🔒 TypeScript Runtime Safety
635
+
636
+ ### Import Type Usage (CRITICAL)
637
+ **Anti-Pattern**: Importing interfaces/types as values. This causes "does not provide an export" runtime errors in modern bundlers (Vite/esbuild).
638
+
639
+ ```typescript
640
+ // ❌ Runtime Error Risk
641
+ import { MyInterface } from './types'; // Bundler looks for a value export
642
+
643
+ // ✅ Correct: Type-Only Import
644
+ import type { MyInterface } from './types'; // Explicitly removed at runtime
645
+ // OR
646
+ import { type MyInterface } from './types';
647
+ ```
648
+
649
+ ### Type Organization & Circular Dependencies
650
+ **Anti-Pattern**: Defining types in Service/Component files that import other Services/Components.
651
+
652
+ ```typescript
653
+ // ❌ Circular Dependency Risk
654
+ // userService.ts
655
+ import { Order } from './orderService'; // Cycle!
656
+ export interface User { ... }
657
+
658
+ // ✅ Centralized Types
659
+ // types/index.ts or types/models.ts
660
+ export interface User { ... }
661
+ export interface Order { ... }
662
+ ```
663
+
664
+ ---
665
+
666
+ ## 📚 Component Documentation
667
+
668
+ ### Storybook Review
669
+
670
+ ```markdown
671
+ ## Component Documentation Checklist
672
+
673
+ ### Storybook Coverage
674
+ | Component | Stories | Variants | Docs | Status |
675
+ |-----------|---------|----------|------|--------|
676
+ | Button | ✅ | 5/5 | ✅ | ✅ |
677
+ | Input | ✅ | 4/6 | ⚠️ | ⚠️ Missing error state |
678
+ | Modal | ❌ | 0/3 | ❌ | ❌ Not documented |
679
+ | Card | ✅ | 3/3 | ✅ | ✅ |
680
+
681
+ ### Required Documentation
682
+ - [ ] Component description
683
+ - [ ] Props table with types
684
+ - [ ] Usage examples
685
+ - [ ] Accessibility notes
686
+ - [ ] Do's and Don'ts
687
+ ```
688
+
689
+ ### Props API Design
690
+
691
+ ```typescript
692
+ // ❌ Poor props design
693
+ interface ButtonProps {
694
+ type: string; // What values?
695
+ size: 1 | 2 | 3; // Magic numbers
696
+ onClick: Function; // Too generic
697
+ }
698
+
699
+ // ✅ Well-designed props
700
+ interface ButtonProps {
701
+ /** Visual variant of the button */
702
+ variant: 'primary' | 'secondary' | 'ghost' | 'danger';
703
+ /** Size of the button */
704
+ size: 'sm' | 'md' | 'lg';
705
+ /** Whether the button is disabled */
706
+ disabled?: boolean;
707
+ /** Loading state shows spinner and disables interaction */
708
+ loading?: boolean;
709
+ /** Click handler */
710
+ onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
711
+ /** Button contents */
712
+ children: React.ReactNode;
713
+ }
714
+ ```
715
+
716
+ ---
717
+
718
+ ## 📋 Frontend Review Summary Template
719
+
720
+ ```markdown
721
+ # Frontend Review Report
722
+
723
+ ## Tool Scan Results
724
+ | Tool | Status | Critical | Warning |
725
+ |------|--------|----------|---------|
726
+ | ESLint | ✅ | 0 | 3 |
727
+ | TypeScript | ✅ | 0 | 1 |
728
+ | Stylelint | ⚠️ | 0 | 5 |
729
+ | Lighthouse | ⚠️ | Performance: 75 | - |
730
+ | Accessibility | ✅ | 0 | 2 |
731
+ | Bundle Size | ❌ | Over limit | - |
732
+
733
+ ## Visual Review
734
+ | Check | Status | Issues |
735
+ |-------|--------|--------|
736
+ | Design match | ⚠️ | 3 spacing differences |
737
+ | Responsive | ⚠️ | iPad layout issue |
738
+ | Dark mode | ✅ | Works correctly |
739
+ | Typography | ✅ | Consistent |
740
+
741
+ ## Interaction Review
742
+ | Check | Status | Issues |
743
+ |-------|--------|--------|
744
+ | Animations | ⚠️ | Modal jank at 45 FPS |
745
+ | Loading states | ✅ | All covered |
746
+ | Error states | ⚠️ | Missing retry on network error |
747
+ | Focus management | ❌ | Tab order incorrect |
748
+
749
+ ## Performance Review
750
+ | Metric | Target | Actual | Status |
751
+ |--------|--------|--------|--------|
752
+ | LCP | <2.5s | 2.8s | ⚠️ |
753
+ | CLS | <0.1 | 0.05 | ✅ |
754
+ | Bundle | <200KB | 250KB | ❌ |
755
+
756
+ ## Browser Compatibility
757
+ | Browser | Status | Issues |
758
+ |---------|--------|--------|
759
+ | Chrome | ✅ | None |
760
+ | Firefox | ✅ | None |
761
+ | Safari | ⚠️ | Flexbox gap fallback needed |
762
+ | Mobile Safari | ⚠️ | 100vh issue |
763
+
764
+ ## Accessibility
765
+ | Check | Status | Issues |
766
+ |-------|--------|--------|
767
+ | Color contrast | ⚠️ | Links in dark mode |
768
+ | Screen reader | ✅ | Tested with VoiceOver |
769
+ | Keyboard | ❌ | Missing skip link |
770
+ | Touch targets | ⚠️ | Icons too small |
771
+
772
+ ## Critical Issues (Must Fix)
773
+ 1. **[P0]** Tab order incorrect in form
774
+ 2. **[P0]** Bundle size exceeds limit
775
+ 3. **[P1]** LCP exceeds target
776
+
777
+ ## Recommendations
778
+ 1. **[P1]** Add skeleton screens for better perceived performance
779
+ 2. **[P2]** Implement code splitting for admin routes
780
+ 3. **[P2]** Add Storybook stories for Modal component
781
+ 4. **[P3]** Consider adding haptic feedback on mobile
782
+ ```
783
+