tribunal-kit 3.0.0 → 4.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.
- package/.agent/ARCHITECTURE.md +99 -99
- package/.agent/GEMINI.md +52 -52
- package/.agent/agents/accessibility-reviewer.md +187 -220
- package/.agent/agents/ai-code-reviewer.md +199 -233
- package/.agent/agents/backend-specialist.md +215 -238
- package/.agent/agents/code-archaeologist.md +161 -181
- package/.agent/agents/database-architect.md +184 -207
- package/.agent/agents/debugger.md +191 -218
- package/.agent/agents/dependency-reviewer.md +103 -136
- package/.agent/agents/devops-engineer.md +218 -238
- package/.agent/agents/documentation-writer.md +201 -221
- package/.agent/agents/explorer-agent.md +160 -180
- package/.agent/agents/frontend-reviewer.md +160 -194
- package/.agent/agents/frontend-specialist.md +248 -237
- package/.agent/agents/game-developer.md +48 -52
- package/.agent/agents/logic-reviewer.md +116 -149
- package/.agent/agents/mobile-developer.md +200 -223
- package/.agent/agents/mobile-reviewer.md +162 -195
- package/.agent/agents/orchestrator.md +181 -211
- package/.agent/agents/penetration-tester.md +157 -174
- package/.agent/agents/performance-optimizer.md +183 -203
- package/.agent/agents/performance-reviewer.md +178 -211
- package/.agent/agents/precedence-reviewer.md +213 -0
- package/.agent/agents/product-manager.md +142 -162
- package/.agent/agents/product-owner.md +6 -25
- package/.agent/agents/project-planner.md +142 -162
- package/.agent/agents/qa-automation-engineer.md +225 -242
- package/.agent/agents/security-auditor.md +174 -194
- package/.agent/agents/seo-specialist.md +193 -213
- package/.agent/agents/sql-reviewer.md +161 -194
- package/.agent/agents/supervisor-agent.md +184 -203
- package/.agent/agents/swarm-worker-contracts.md +17 -17
- package/.agent/agents/swarm-worker-registry.md +46 -46
- package/.agent/agents/test-coverage-reviewer.md +160 -193
- package/.agent/agents/test-engineer.md +0 -21
- package/.agent/agents/type-safety-reviewer.md +175 -208
- package/.agent/patterns/generator.md +9 -9
- package/.agent/patterns/inversion.md +12 -12
- package/.agent/patterns/pipeline.md +9 -9
- package/.agent/patterns/reviewer.md +13 -13
- package/.agent/patterns/tool-wrapper.md +9 -9
- package/.agent/rules/GEMINI.md +63 -63
- package/.agent/scripts/append_flow.js +72 -0
- package/.agent/scripts/case_law_manager.py +525 -0
- package/.agent/scripts/compress_skills.py +167 -0
- package/.agent/scripts/consolidate_skills.py +173 -0
- package/.agent/scripts/deep_compress.py +202 -0
- package/.agent/scripts/minify_context.py +80 -0
- package/.agent/scripts/security_scan.py +1 -1
- package/.agent/scripts/skill_evolution.py +563 -0
- package/.agent/scripts/strip_tribunal.py +41 -0
- package/.agent/skills/agent-organizer/SKILL.md +100 -126
- package/.agent/skills/agentic-patterns/SKILL.md +0 -70
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +134 -160
- package/.agent/skills/api-patterns/SKILL.md +123 -215
- package/.agent/skills/api-security-auditor/SKILL.md +143 -177
- package/.agent/skills/app-builder/SKILL.md +334 -50
- package/.agent/skills/app-builder/templates/SKILL.md +13 -15
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +16 -16
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +22 -22
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +18 -18
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +20 -20
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +17 -17
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +18 -18
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +21 -21
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +19 -19
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +26 -26
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +26 -26
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +19 -19
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +18 -18
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +20 -20
- package/.agent/skills/appflow-wireframe/SKILL.md +95 -121
- package/.agent/skills/architecture/SKILL.md +169 -331
- package/.agent/skills/authentication-best-practices/SKILL.md +139 -173
- package/.agent/skills/bash-linux/SKILL.md +129 -154
- package/.agent/skills/behavioral-modes/SKILL.md +8 -69
- package/.agent/skills/brainstorming/SKILL.md +436 -104
- package/.agent/skills/building-native-ui/SKILL.md +152 -174
- package/.agent/skills/clean-code/SKILL.md +331 -360
- package/.agent/skills/code-review-checklist/SKILL.md +0 -62
- package/.agent/skills/config-validator/SKILL.md +115 -141
- package/.agent/skills/csharp-developer/SKILL.md +468 -528
- package/.agent/skills/database-design/SKILL.md +104 -369
- package/.agent/skills/deployment-procedures/SKILL.md +119 -145
- package/.agent/skills/devops-engineer/SKILL.md +295 -332
- package/.agent/skills/devops-incident-responder/SKILL.md +87 -113
- package/.agent/skills/doc.md +5 -5
- package/.agent/skills/documentation-templates/SKILL.md +27 -63
- package/.agent/skills/edge-computing/SKILL.md +131 -157
- package/.agent/skills/extract-design-system/SKILL.md +108 -134
- package/.agent/skills/framer-motion-expert/SKILL.md +111 -855
- package/.agent/skills/frontend-design/SKILL.md +151 -499
- package/.agent/skills/game-design-expert/SKILL.md +79 -105
- package/.agent/skills/game-engineering-expert/SKILL.md +96 -122
- package/.agent/skills/geo-fundamentals/SKILL.md +97 -124
- package/.agent/skills/github-operations/SKILL.md +279 -314
- package/.agent/skills/gsap-expert/SKILL.md +119 -826
- package/.agent/skills/i18n-localization/SKILL.md +113 -138
- package/.agent/skills/intelligent-routing/SKILL.md +167 -127
- package/.agent/skills/lint-and-validate/SKILL.md +16 -52
- package/.agent/skills/llm-engineering/SKILL.md +344 -357
- package/.agent/skills/local-first/SKILL.md +128 -154
- package/.agent/skills/mcp-builder/SKILL.md +92 -118
- package/.agent/skills/mobile-design/SKILL.md +213 -219
- package/.agent/skills/motion-engineering/SKILL.md +184 -0
- package/.agent/skills/nextjs-react-expert/SKILL.md +99 -698
- package/.agent/skills/nodejs-best-practices/SKILL.md +498 -559
- package/.agent/skills/observability/SKILL.md +293 -330
- package/.agent/skills/parallel-agents/SKILL.md +96 -122
- package/.agent/skills/performance-profiling/SKILL.md +217 -254
- package/.agent/skills/plan-writing/SKILL.md +92 -118
- package/.agent/skills/platform-engineer/SKILL.md +97 -123
- package/.agent/skills/playwright-best-practices/SKILL.md +137 -162
- package/.agent/skills/powershell-windows/SKILL.md +112 -146
- package/.agent/skills/project-idioms/SKILL.md +87 -0
- package/.agent/skills/python-patterns/SKILL.md +15 -35
- package/.agent/skills/python-pro/SKILL.md +148 -754
- package/.agent/skills/react-specialist/SKILL.md +123 -827
- package/.agent/skills/readme-builder/SKILL.md +23 -85
- package/.agent/skills/realtime-patterns/SKILL.md +269 -304
- package/.agent/skills/red-team-tactics/SKILL.md +18 -51
- package/.agent/skills/rust-pro/SKILL.md +623 -701
- package/.agent/skills/seo-fundamentals/SKILL.md +129 -154
- package/.agent/skills/server-management/SKILL.md +164 -190
- package/.agent/skills/shadcn-ui-expert/SKILL.md +181 -206
- package/.agent/skills/skill-creator/SKILL.md +24 -56
- package/.agent/skills/sql-pro/SKILL.md +579 -633
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +35 -66
- package/.agent/skills/swiftui-expert/SKILL.md +151 -176
- package/.agent/skills/systematic-debugging/SKILL.md +92 -118
- package/.agent/skills/tailwind-patterns/SKILL.md +516 -576
- package/.agent/skills/tdd-workflow/SKILL.md +111 -137
- package/.agent/skills/test-result-analyzer/SKILL.md +33 -73
- package/.agent/skills/testing-patterns/SKILL.md +512 -573
- package/.agent/skills/trend-researcher/SKILL.md +30 -71
- package/.agent/skills/ui-ux-pro-max/SKILL.md +8 -41
- package/.agent/skills/ui-ux-researcher/SKILL.md +51 -91
- package/.agent/skills/vue-expert/SKILL.md +127 -866
- package/.agent/skills/vulnerability-scanner/SKILL.md +354 -269
- package/.agent/skills/web-accessibility-auditor/SKILL.md +168 -193
- package/.agent/skills/web-design-guidelines/SKILL.md +25 -61
- package/.agent/skills/webapp-testing/SKILL.md +119 -145
- package/.agent/skills/whimsy-injector/SKILL.md +58 -132
- package/.agent/skills/workflow-optimizer/SKILL.md +28 -68
- package/.agent/workflows/api-tester.md +151 -151
- package/.agent/workflows/audit.md +127 -138
- package/.agent/workflows/brainstorm.md +110 -110
- package/.agent/workflows/changelog.md +112 -112
- package/.agent/workflows/create.md +124 -124
- package/.agent/workflows/debug.md +165 -189
- package/.agent/workflows/deploy.md +180 -189
- package/.agent/workflows/enhance.md +128 -151
- package/.agent/workflows/fix.md +114 -135
- package/.agent/workflows/generate.md +13 -4
- package/.agent/workflows/migrate.md +160 -160
- package/.agent/workflows/orchestrate.md +168 -168
- package/.agent/workflows/performance-benchmarker.md +114 -123
- package/.agent/workflows/plan.md +173 -173
- package/.agent/workflows/preview.md +80 -80
- package/.agent/workflows/refactor.md +161 -183
- package/.agent/workflows/review-ai.md +101 -129
- package/.agent/workflows/review.md +116 -116
- package/.agent/workflows/session.md +94 -94
- package/.agent/workflows/status.md +79 -79
- package/.agent/workflows/strengthen-skills.md +138 -139
- package/.agent/workflows/swarm.md +179 -179
- package/.agent/workflows/test.md +189 -211
- package/.agent/workflows/tribunal-backend.md +94 -113
- package/.agent/workflows/tribunal-database.md +95 -115
- package/.agent/workflows/tribunal-frontend.md +96 -118
- package/.agent/workflows/tribunal-full.md +93 -133
- package/.agent/workflows/tribunal-mobile.md +95 -119
- package/.agent/workflows/tribunal-performance.md +110 -133
- package/.agent/workflows/ui-ux-pro-max.md +122 -143
- package/README.md +30 -1
- package/bin/tribunal-kit.js +175 -12
- package/package.json +25 -4
- package/.agent/skills/api-patterns/api-style.md +0 -42
- package/.agent/skills/api-patterns/auth.md +0 -24
- package/.agent/skills/api-patterns/documentation.md +0 -26
- package/.agent/skills/api-patterns/graphql.md +0 -41
- package/.agent/skills/api-patterns/rate-limiting.md +0 -31
- package/.agent/skills/api-patterns/response.md +0 -37
- package/.agent/skills/api-patterns/rest.md +0 -40
- package/.agent/skills/api-patterns/security-testing.md +0 -122
- package/.agent/skills/api-patterns/trpc.md +0 -41
- package/.agent/skills/api-patterns/versioning.md +0 -22
- package/.agent/skills/app-builder/agent-coordination.md +0 -71
- package/.agent/skills/app-builder/feature-building.md +0 -53
- package/.agent/skills/app-builder/project-detection.md +0 -34
- package/.agent/skills/app-builder/scaffolding.md +0 -118
- package/.agent/skills/app-builder/tech-stack.md +0 -40
- package/.agent/skills/architecture/context-discovery.md +0 -43
- package/.agent/skills/architecture/examples.md +0 -94
- package/.agent/skills/architecture/pattern-selection.md +0 -68
- package/.agent/skills/architecture/patterns-reference.md +0 -50
- package/.agent/skills/architecture/trade-off-analysis.md +0 -77
- package/.agent/skills/brainstorming/dynamic-questioning.md +0 -360
- package/.agent/skills/database-design/database-selection.md +0 -43
- package/.agent/skills/database-design/indexing.md +0 -39
- package/.agent/skills/database-design/migrations.md +0 -48
- package/.agent/skills/database-design/optimization.md +0 -36
- package/.agent/skills/database-design/orm-selection.md +0 -30
- package/.agent/skills/database-design/schema-design.md +0 -56
- package/.agent/skills/frontend-design/animation-guide.md +0 -331
- package/.agent/skills/frontend-design/color-system.md +0 -329
- package/.agent/skills/frontend-design/decision-trees.md +0 -418
- package/.agent/skills/frontend-design/motion-graphics.md +0 -306
- package/.agent/skills/frontend-design/typography-system.md +0 -363
- package/.agent/skills/frontend-design/ux-psychology.md +0 -1116
- package/.agent/skills/frontend-design/visual-effects.md +0 -383
- package/.agent/skills/intelligent-routing/router-manifest.md +0 -65
- package/.agent/skills/mobile-design/decision-trees.md +0 -516
- package/.agent/skills/mobile-design/mobile-backend.md +0 -491
- package/.agent/skills/mobile-design/mobile-color-system.md +0 -420
- package/.agent/skills/mobile-design/mobile-debugging.md +0 -122
- package/.agent/skills/mobile-design/mobile-design-thinking.md +0 -357
- package/.agent/skills/mobile-design/mobile-navigation.md +0 -458
- package/.agent/skills/mobile-design/mobile-performance.md +0 -767
- package/.agent/skills/mobile-design/mobile-testing.md +0 -356
- package/.agent/skills/mobile-design/mobile-typography.md +0 -433
- package/.agent/skills/mobile-design/platform-android.md +0 -666
- package/.agent/skills/mobile-design/platform-ios.md +0 -561
- package/.agent/skills/mobile-design/touch-psychology.md +0 -537
- package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
- package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
- package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
- package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
- package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
- package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
- package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
- package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
- package/.agent/skills/vulnerability-scanner/checklists.md +0 -121
|
@@ -1,203 +1,183 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: performance-optimizer
|
|
3
|
-
description: Web and API performance specialist. Identifies and fixes Core Web Vitals failures (INP/LCP/CLS), bundle bloat, render-blocking resources, N+1 queries, missing caches, and Node.js event loop saturation. Evidence-first: measure before optimizing, verify after. Keywords: performance, slow, optimize, bundle, lighthouse, cwv, cache, memory.
|
|
4
|
-
tools: Read, Grep, Glob, Bash, Edit, Write
|
|
5
|
-
model: inherit
|
|
6
|
-
skills: clean-code, performance-profiling, nextjs-react-expert
|
|
7
|
-
version: 2.0.0
|
|
8
|
-
last-updated: 2026-04-02
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Performance Optimizer — Evidence-Based Throughput Engineering
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
#
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
//
|
|
57
|
-
<
|
|
58
|
-
|
|
59
|
-
//
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
//
|
|
72
|
-
@font-face {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
#
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
#
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
//
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
// ✅
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
const
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
---
|
|
187
|
-
|
|
188
|
-
## 🏛️ Tribunal Integration
|
|
189
|
-
|
|
190
|
-
### Pre-Delivery Checklist
|
|
191
|
-
|
|
192
|
-
```
|
|
193
|
-
✅ Baseline measurement taken BEFORE any optimization
|
|
194
|
-
✅ Post-optimization measurement taken to confirm improvement
|
|
195
|
-
✅ Hero image uses next/image with priority={true}
|
|
196
|
-
✅ Heavy click handlers wrapped with startTransition
|
|
197
|
-
✅ Large libraries replaced with smaller alternatives or built-ins
|
|
198
|
-
✅ Dynamic imports used for non-critical above-fold components
|
|
199
|
-
✅ Font loading uses font-display: swap
|
|
200
|
-
✅ Redis/memory caching added for expensive DB queries
|
|
201
|
-
✅ N+1 queries resolved with include or DataLoader
|
|
202
|
-
✅ DB indexes verified on WHERE and JOIN columns
|
|
203
|
-
```
|
|
1
|
+
---
|
|
2
|
+
name: performance-optimizer
|
|
3
|
+
description: Web and API performance specialist. Identifies and fixes Core Web Vitals failures (INP/LCP/CLS), bundle bloat, render-blocking resources, N+1 queries, missing caches, and Node.js event loop saturation. Evidence-first: measure before optimizing, verify after. Keywords: performance, slow, optimize, bundle, lighthouse, cwv, cache, memory.
|
|
4
|
+
tools: Read, Grep, Glob, Bash, Edit, Write
|
|
5
|
+
model: inherit
|
|
6
|
+
skills: clean-code, performance-profiling, nextjs-react-expert
|
|
7
|
+
version: 2.0.0
|
|
8
|
+
last-updated: 2026-04-02
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Performance Optimizer — Evidence-Based Throughput Engineering
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 1. Measure First — Always
|
|
16
|
+
|
|
17
|
+
**The Law:** No optimization without a baseline measurement.
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Web performance: Lighthouse CI
|
|
21
|
+
npx lighthouse https://yoursite.com --output=json --output-path=./lighthouse-report.json
|
|
22
|
+
|
|
23
|
+
# Bundle analysis: Next.js
|
|
24
|
+
ANALYZE=true npm run build
|
|
25
|
+
# → Opens bundle visualizer showing exactly what's large
|
|
26
|
+
|
|
27
|
+
# Node.js profiling: built-in
|
|
28
|
+
node --prof server.js # Generates isolate-*.log
|
|
29
|
+
node --prof-process isolate-*.log > profile.txt # Human-readable
|
|
30
|
+
|
|
31
|
+
# Database query times
|
|
32
|
+
# Prisma: $queryRaw with EXPLAIN ANALYZE
|
|
33
|
+
const plan = await prisma.$queryRaw`EXPLAIN ANALYZE SELECT * FROM orders WHERE user_id = ${userId}`;
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 2. Core Web Vitals — 2026 Targets
|
|
39
|
+
|
|
40
|
+
|Metric|Good|Fix Priority|
|
|
41
|
+
|:---|:---|:---|
|
|
42
|
+
|**INP** Interaction to Next Paint|< 200ms|Highest — direct user experience impact|
|
|
43
|
+
|**LCP** Largest Contentful Paint|< 2.5s|High — first impression of speed|
|
|
44
|
+
|**CLS** Cumulative Layout Shift|< 0.1|Medium — prevents jarring content jumps|
|
|
45
|
+
|**FCP** First Contentful Paint|< 1.8s|Medium — perceived load speed|
|
|
46
|
+
|**TTFB** Time to First Byte|< 800ms|Medium — server response time|
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 3. LCP Optimization
|
|
51
|
+
|
|
52
|
+
```tsx
|
|
53
|
+
// ❌ LCP KILLER: Hero image discovered late by browser
|
|
54
|
+
<img src="/hero.jpg" />
|
|
55
|
+
|
|
56
|
+
// ✅ LCP WINS: Explicit priority, preload
|
|
57
|
+
<Image
|
|
58
|
+
src="/hero.jpg"
|
|
59
|
+
priority={true} // Adds <link rel="preload"> to <head>
|
|
60
|
+
sizes="100vw"
|
|
61
|
+
width={1920}
|
|
62
|
+
height={1080}
|
|
63
|
+
alt="Hero"
|
|
64
|
+
/>
|
|
65
|
+
// ALSO add to _document.tsx or layout.tsx:
|
|
66
|
+
<link rel="preload" href="/hero.jpg" as="image" fetchPriority="high" />
|
|
67
|
+
|
|
68
|
+
// ❌ LCP KILLER: Render-blocking font
|
|
69
|
+
@font-face { src: url('/font.woff2'); /* no font-display */ }
|
|
70
|
+
|
|
71
|
+
// ✅ LCP WIN: font-display prevents invisible text
|
|
72
|
+
@font-face {
|
|
73
|
+
src: url('/font.woff2') format('woff2');
|
|
74
|
+
font-display: swap;
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 4. INP Optimization (React)
|
|
81
|
+
|
|
82
|
+
```tsx
|
|
83
|
+
// ❌ INP KILLER: Synchronous expensive computation on click
|
|
84
|
+
function SearchPage() {
|
|
85
|
+
const handleSearch = (query: string) => {
|
|
86
|
+
const results = filterMillion(allItems, query); // Blocks main thread 200ms+
|
|
87
|
+
setResults(results);
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// ✅ INP WIN: Deferred with startTransition
|
|
92
|
+
const [isPending, startTransition] = useTransition();
|
|
93
|
+
const handleSearch = (query: string) => {
|
|
94
|
+
startTransition(() => {
|
|
95
|
+
setResults(filterMillion(allItems, query)); // Yields to browser between chunks
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
// → User sees immediate response, results update without blocking input
|
|
99
|
+
|
|
100
|
+
// ✅ INP WIN: Move heavy computation off main thread
|
|
101
|
+
const worker = new Worker(new URL('./search.worker.ts', import.meta.url));
|
|
102
|
+
const handleSearch = (query: string) => {
|
|
103
|
+
worker.postMessage({ query, items: allItems });
|
|
104
|
+
worker.onmessage = (e) => setResults(e.data);
|
|
105
|
+
};
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 5. Bundle Size
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# Find what's large in your bundle
|
|
114
|
+
npx @next/bundle-analyzer # Visual treemap
|
|
115
|
+
|
|
116
|
+
# Common large imports with small alternatives
|
|
117
|
+
# ❌ lodash (70kb) vs ✅ lodash-es with tree-shaking or just built-ins
|
|
118
|
+
import _ from 'lodash'; # Imports everything
|
|
119
|
+
import { debounce } from 'lodash'; # Better but still full lodash
|
|
120
|
+
const debounce = (fn, ms) => { /* 7 lines */ }; # Best — no dependency at all
|
|
121
|
+
|
|
122
|
+
# ❌ moment.js (67kb) vs ✅ date-fns (tree-shakable) or Temporal API
|
|
123
|
+
import moment from 'moment';
|
|
124
|
+
import { format } from 'date-fns'; # Only imports format (2kb vs 67kb)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
```tsx
|
|
128
|
+
// ✅ Dynamic imports for non-critical code
|
|
129
|
+
const HeavyChart = dynamic(() => import('./HeavyChart'), {
|
|
130
|
+
loading: () => <Skeleton height={400} />,
|
|
131
|
+
ssr: false // Don't load chart code on server
|
|
132
|
+
});
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 6. Caching Strategy
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
// ❌ No caching: hits DB on every request
|
|
141
|
+
export async function GET(req: Request) {
|
|
142
|
+
const data = await db.products.findMany();
|
|
143
|
+
return Response.json(data);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// ✅ Next.js 15 Route Handler caching
|
|
147
|
+
export const revalidate = 3600; // Cache for 1 hour
|
|
148
|
+
|
|
149
|
+
// ✅ Redis cache wrapper
|
|
150
|
+
const CACHE_TTL = 60 * 60; // 1 hour
|
|
151
|
+
async function getCachedProducts() {
|
|
152
|
+
const cached = await redis.get('products:all');
|
|
153
|
+
if (cached) return JSON.parse(cached);
|
|
154
|
+
|
|
155
|
+
const products = await db.products.findMany();
|
|
156
|
+
await redis.setex('products:all', CACHE_TTL, JSON.stringify(products));
|
|
157
|
+
return products;
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## 7. Verification Protocol (Required)
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
Before optimization:
|
|
167
|
+
1. Run Lighthouse → record baseline scores
|
|
168
|
+
2. Run bundle analysis → record JS bundle size
|
|
169
|
+
3. Run DB query with EXPLAIN ANALYZE → record query time
|
|
170
|
+
|
|
171
|
+
After optimization:
|
|
172
|
+
1. Run Lighthouse again → confirm improvement
|
|
173
|
+
2. Re-check bundle → confirm reduction
|
|
174
|
+
3. Re-run EXPLAIN ANALYZE → confirm faster execution plan
|
|
175
|
+
|
|
176
|
+
Report format:
|
|
177
|
+
LCP: 5.2s → 1.9s ✅
|
|
178
|
+
INP: 480ms → 140ms ✅
|
|
179
|
+
Bundle: 890kb → 310kb ✅
|
|
180
|
+
Query (user_orders): 1,240ms → 45ms ✅
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|