tribunal-kit 2.4.5 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/.agent/agents/accessibility-reviewer.md +220 -134
  2. package/.agent/agents/ai-code-reviewer.md +233 -129
  3. package/.agent/agents/backend-specialist.md +238 -178
  4. package/.agent/agents/code-archaeologist.md +181 -119
  5. package/.agent/agents/database-architect.md +207 -164
  6. package/.agent/agents/debugger.md +218 -151
  7. package/.agent/agents/dependency-reviewer.md +136 -55
  8. package/.agent/agents/devops-engineer.md +238 -175
  9. package/.agent/agents/documentation-writer.md +221 -137
  10. package/.agent/agents/explorer-agent.md +180 -142
  11. package/.agent/agents/frontend-reviewer.md +194 -80
  12. package/.agent/agents/frontend-specialist.md +237 -188
  13. package/.agent/agents/game-developer.md +52 -184
  14. package/.agent/agents/logic-reviewer.md +149 -78
  15. package/.agent/agents/mobile-developer.md +223 -152
  16. package/.agent/agents/mobile-reviewer.md +195 -79
  17. package/.agent/agents/orchestrator.md +211 -170
  18. package/.agent/agents/penetration-tester.md +174 -131
  19. package/.agent/agents/performance-optimizer.md +203 -139
  20. package/.agent/agents/performance-reviewer.md +211 -108
  21. package/.agent/agents/product-manager.md +162 -108
  22. package/.agent/agents/project-planner.md +162 -142
  23. package/.agent/agents/qa-automation-engineer.md +242 -138
  24. package/.agent/agents/security-auditor.md +194 -170
  25. package/.agent/agents/seo-specialist.md +213 -132
  26. package/.agent/agents/sql-reviewer.md +194 -73
  27. package/.agent/agents/supervisor-agent.md +203 -156
  28. package/.agent/agents/test-coverage-reviewer.md +193 -81
  29. package/.agent/agents/type-safety-reviewer.md +208 -65
  30. package/.agent/scripts/__pycache__/auto_preview.cpython-311.pyc +0 -0
  31. package/.agent/scripts/__pycache__/bundle_analyzer.cpython-311.pyc +0 -0
  32. package/.agent/scripts/__pycache__/checklist.cpython-311.pyc +0 -0
  33. package/.agent/scripts/__pycache__/dependency_analyzer.cpython-311.pyc +0 -0
  34. package/.agent/scripts/__pycache__/security_scan.cpython-311.pyc +0 -0
  35. package/.agent/scripts/__pycache__/session_manager.cpython-311.pyc +0 -0
  36. package/.agent/scripts/__pycache__/skill_integrator.cpython-311.pyc +0 -0
  37. package/.agent/scripts/__pycache__/swarm_dispatcher.cpython-311.pyc +0 -0
  38. package/.agent/scripts/__pycache__/test_runner.cpython-311.pyc +0 -0
  39. package/.agent/scripts/__pycache__/verify_all.cpython-311.pyc +0 -0
  40. package/.agent/skills/agent-organizer/SKILL.md +126 -132
  41. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +160 -0
  42. package/.agent/skills/api-patterns/SKILL.md +289 -257
  43. package/.agent/skills/api-security-auditor/SKILL.md +177 -0
  44. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +1 -1
  45. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +1 -1
  46. package/.agent/skills/appflow-wireframe/SKILL.md +107 -58
  47. package/.agent/skills/architecture/SKILL.md +331 -200
  48. package/.agent/skills/authentication-best-practices/SKILL.md +173 -0
  49. package/.agent/skills/bash-linux/SKILL.md +154 -215
  50. package/.agent/skills/brainstorming/SKILL.md +104 -210
  51. package/.agent/skills/building-native-ui/SKILL.md +174 -0
  52. package/.agent/skills/clean-code/SKILL.md +360 -206
  53. package/.agent/skills/config-validator/SKILL.md +141 -165
  54. package/.agent/skills/csharp-developer/SKILL.md +528 -107
  55. package/.agent/skills/database-design/SKILL.md +455 -275
  56. package/.agent/skills/deployment-procedures/SKILL.md +145 -188
  57. package/.agent/skills/devops-engineer/SKILL.md +332 -134
  58. package/.agent/skills/devops-incident-responder/SKILL.md +113 -98
  59. package/.agent/skills/edge-computing/SKILL.md +157 -213
  60. package/.agent/skills/extract-design-system/SKILL.md +134 -0
  61. package/.agent/skills/framer-motion-expert/SKILL.md +939 -0
  62. package/.agent/skills/game-design-expert/SKILL.md +105 -0
  63. package/.agent/skills/game-engineering-expert/SKILL.md +122 -0
  64. package/.agent/skills/geo-fundamentals/SKILL.md +124 -215
  65. package/.agent/skills/github-operations/SKILL.md +314 -354
  66. package/.agent/skills/gsap-expert/SKILL.md +901 -0
  67. package/.agent/skills/i18n-localization/SKILL.md +138 -216
  68. package/.agent/skills/intelligent-routing/SKILL.md +127 -139
  69. package/.agent/skills/llm-engineering/SKILL.md +357 -258
  70. package/.agent/skills/local-first/SKILL.md +154 -203
  71. package/.agent/skills/mcp-builder/SKILL.md +118 -224
  72. package/.agent/skills/nextjs-react-expert/SKILL.md +783 -203
  73. package/.agent/skills/nodejs-best-practices/SKILL.md +559 -280
  74. package/.agent/skills/observability/SKILL.md +330 -285
  75. package/.agent/skills/parallel-agents/SKILL.md +122 -181
  76. package/.agent/skills/performance-profiling/SKILL.md +254 -197
  77. package/.agent/skills/plan-writing/SKILL.md +118 -188
  78. package/.agent/skills/platform-engineer/SKILL.md +123 -135
  79. package/.agent/skills/playwright-best-practices/SKILL.md +162 -0
  80. package/.agent/skills/powershell-windows/SKILL.md +146 -230
  81. package/.agent/skills/python-pro/SKILL.md +879 -114
  82. package/.agent/skills/react-specialist/SKILL.md +931 -108
  83. package/.agent/skills/readme-builder/SKILL.md +42 -0
  84. package/.agent/skills/realtime-patterns/SKILL.md +304 -296
  85. package/.agent/skills/rust-pro/SKILL.md +701 -240
  86. package/.agent/skills/seo-fundamentals/SKILL.md +154 -181
  87. package/.agent/skills/server-management/SKILL.md +190 -212
  88. package/.agent/skills/shadcn-ui-expert/SKILL.md +206 -0
  89. package/.agent/skills/skill-creator/SKILL.md +68 -0
  90. package/.agent/skills/sql-pro/SKILL.md +633 -104
  91. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +78 -0
  92. package/.agent/skills/swiftui-expert/SKILL.md +176 -0
  93. package/.agent/skills/systematic-debugging/SKILL.md +118 -186
  94. package/.agent/skills/tailwind-patterns/SKILL.md +576 -232
  95. package/.agent/skills/tdd-workflow/SKILL.md +137 -209
  96. package/.agent/skills/testing-patterns/SKILL.md +573 -205
  97. package/.agent/skills/vue-expert/SKILL.md +964 -119
  98. package/.agent/skills/vulnerability-scanner/SKILL.md +269 -316
  99. package/.agent/skills/web-accessibility-auditor/SKILL.md +193 -0
  100. package/.agent/skills/webapp-testing/SKILL.md +145 -236
  101. package/.agent/workflows/api-tester.md +151 -279
  102. package/.agent/workflows/audit.md +138 -168
  103. package/.agent/workflows/brainstorm.md +110 -146
  104. package/.agent/workflows/changelog.md +112 -144
  105. package/.agent/workflows/create.md +124 -139
  106. package/.agent/workflows/debug.md +189 -196
  107. package/.agent/workflows/deploy.md +189 -153
  108. package/.agent/workflows/enhance.md +151 -139
  109. package/.agent/workflows/fix.md +135 -143
  110. package/.agent/workflows/generate.md +157 -164
  111. package/.agent/workflows/migrate.md +160 -163
  112. package/.agent/workflows/orchestrate.md +168 -151
  113. package/.agent/workflows/performance-benchmarker.md +123 -305
  114. package/.agent/workflows/plan.md +173 -151
  115. package/.agent/workflows/preview.md +80 -137
  116. package/.agent/workflows/refactor.md +183 -153
  117. package/.agent/workflows/review-ai.md +129 -140
  118. package/.agent/workflows/review.md +116 -155
  119. package/.agent/workflows/session.md +94 -154
  120. package/.agent/workflows/status.md +79 -125
  121. package/.agent/workflows/strengthen-skills.md +139 -99
  122. package/.agent/workflows/swarm.md +179 -194
  123. package/.agent/workflows/test.md +211 -166
  124. package/.agent/workflows/tribunal-backend.md +113 -111
  125. package/.agent/workflows/tribunal-database.md +115 -132
  126. package/.agent/workflows/tribunal-frontend.md +118 -115
  127. package/.agent/workflows/tribunal-full.md +133 -136
  128. package/.agent/workflows/tribunal-mobile.md +119 -123
  129. package/.agent/workflows/tribunal-performance.md +133 -152
  130. package/.agent/workflows/ui-ux-pro-max.md +143 -171
  131. package/README.md +11 -15
  132. package/package.json +1 -1
  133. package/.agent/skills/dotnet-core-expert/SKILL.md +0 -103
  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 -236
  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
@@ -1,197 +1,254 @@
1
- ---
2
- name: performance-profiling
3
- description: Performance profiling principles. Measurement, analysis, and optimization techniques.
4
- allowed-tools: Read, Write, Edit, Glob, Grep
5
- version: 1.0.0
6
- last-updated: 2026-03-12
7
- applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
8
- ---
9
-
10
- # Performance Profiling Principles
11
-
12
- > Never optimize code you haven't measured.
13
- > The bottleneck is almost never where you expect it to be.
14
-
15
- ---
16
-
17
- ## The Measurement-First Rule
18
-
19
- Every performance investigation follows the same sequence:
20
-
21
- ```
22
- Measure Identify hotspot Form hypothesis → Change one thing → Measure again
23
- ```
24
-
25
- Breaking this sequence — jumping straight to "fix" wastes time and creates new problems.
26
-
27
- ---
28
-
29
- ## What to Measure
30
-
31
- ### Backend
32
-
33
- | Metric | Tool | Target |
34
- |---|---|---|
35
- | Request throughput | ab, k6, wrk | Baseline + stress test |
36
- | P50/P95/P99 latency | DataDog, Grafana, k6 | P99 < SLA threshold |
37
- | Memory usage | `process.memoryUsage()`, heap snapshot | Stable under load (no growth) |
38
- | CPU usage | clinic.js flame chart | Identify blocking operations |
39
- | Database query time | Query logs, pg_stat_statements | No query > 100ms without index |
40
-
41
- ### Frontend
42
-
43
- | Metric | Tool | Target (2025 Core Web Vitals) |
44
- |---|---|---|
45
- | LCP (Largest Contentful Paint) | Lighthouse, CrUX | < 2.5s |
46
- | INP (Interaction to Next Paint) | Lighthouse, Web Vitals | < 200ms |
47
- | CLS (Cumulative Layout Shift) | Lighthouse | < 0.1 |
48
- | Bundle size (JS) | `npm run build` + analyzer | < 200kB initial JS |
49
-
50
- ---
51
-
52
- ## Common Backend Bottlenecks
53
-
54
- ### N+1 Queries (most common)
55
-
56
- ```ts
57
- // 1 + N queries
58
- const posts = await db.post.findMany();
59
- for (const post of posts) {
60
- post.author = await db.user.findUnique({ where: { id: post.authorId } });
61
- }
62
-
63
- // ✅ 2 queries total
64
- const posts = await db.post.findMany({ include: { author: true } });
65
- ```
66
-
67
- **Detection:** Enable query logging. Repeated identical queries differing only by ID = N+1.
68
-
69
- ### Missing Database Indexes
70
-
71
- ```sql
72
- -- EXPLAIN ANALYZE tells you if a query is doing a sequential scan
73
- EXPLAIN ANALYZE SELECT * FROM orders WHERE user_id = $1;
74
-
75
- -- Sequential scan on large table add index
76
- CREATE INDEX idx_orders_user_id ON orders(user_id);
77
- ```
78
-
79
- ### Blocking the Event Loop (Node.js)
80
-
81
- ```ts
82
- // Synchronous CPU work blocks all requests
83
- const result = JSON.parse(fs.readFileSync('huge.json', 'utf8'));
84
-
85
- // ✅ Non-blocking
86
- const content = await fs.promises.readFile('huge.json', 'utf8');
87
- const result = JSON.parse(content); // still sync but no disk I/O blocking
88
- ```
89
-
90
- ---
91
-
92
- ## Common Frontend Bottlenecks
93
-
94
- ### Bundle Size
95
-
96
- - Identify large packages with `npx vite-bundle-visualizer` or `@next/bundle-analyzer`
97
- - Replace heavy packages with lighter alternatives (e.g., `date-fns` instead of `moment`)
98
- - Code-split routes — don't ship all JavaScript on first load
99
-
100
- ### Render Performance
101
-
102
- ```ts
103
- // Recalculates on every render
104
- function ExpensiveList({ items }) {
105
- const sorted = items.sort((a, b) => a.name.localeCompare(b.name));
106
- return sorted.map(item => <Item key={item.id} item={item} />);
107
- }
108
-
109
- // ✅ Recalculates only when items change
110
- function ExpensiveList({ items }) {
111
- const sorted = useMemo(
112
- () => [...items].sort((a, b) => a.name.localeCompare(b.name)),
113
- [items]
114
- );
115
- return sorted.map(item => <Item key={item.id} item={item} />);
116
- }
117
- ```
118
-
119
- ---
120
-
121
- ## Profiling Tools
122
-
123
- | Tool | Platform | Best For |
124
- |---|---|---|
125
- | `clinic.js` (`clinic doctor`) | Node.js | CPU flame charts, memory leaks |
126
- | Chrome DevTools → Performance | Browser | JS execution, paint, layout |
127
- | `EXPLAIN ANALYZE` | PostgreSQL | Query plan analysis |
128
- | Lighthouse | Web | Full Core Web Vitals audit |
129
- | `k6` | Backend load testing | Throughput and latency under load |
130
-
131
- ---
132
-
133
- ## Scripts
134
-
135
- | Script | Purpose | Run With |
136
- |---|---|---|
137
- | `scripts/lighthouse_audit.py` | Lighthouse performance audit | `python scripts/lighthouse_audit.py <url>` |
138
-
139
- ---
140
-
141
- ## Output Format
142
-
143
- When this skill produces a recommendation or design decision, structure your output as:
144
-
145
- ```
146
- ━━━ Performance Profiling Recommendation ━━━━━━━━━━━━━━━━
147
- Decision: [what was chosen / proposed]
148
- Rationale: [why — one concise line]
149
- Trade-offs: [what is consciously accepted]
150
- Next action: [concrete next step for the user]
151
- ─────────────────────────────────────────────────
152
- Pre-Flight: ✅ All checks passed
153
- or [blocking item that must be resolved first]
154
- ```
155
-
156
-
157
-
158
- ---
159
-
160
- ## 🤖 LLM-Specific Traps
161
-
162
- AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
163
-
164
- 1. **Over-engineering:** Proposing complex abstractions or distributed systems when a simpler approach suffices.
165
- 2. **Hallucinated Libraries/Methods:** Using non-existent methods or packages. Always `// VERIFY` or check `package.json` / `requirements.txt`.
166
- 3. **Skipping Edge Cases:** Writing the "happy path" and ignoring error handling, timeouts, or data validation.
167
- 4. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
168
- 5. **Silent Degradation:** Catching and suppressing errors without logging or re-raising.
169
-
170
- ---
171
-
172
- ## 🏛️ Tribunal Integration (Anti-Hallucination)
173
-
174
- **Slash command: `/review` or `/tribunal-full`**
175
- **Active reviewers: `logic-reviewer` · `security-auditor`**
176
-
177
- ### Forbidden AI Tropes
178
-
179
- 1. **Blind Assumptions:** Never make an assumption without documenting it clearly with `// VERIFY: [reason]`.
180
- 2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
181
- 3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
182
-
183
- ### Pre-Flight Self-Audit
184
-
185
- Review these questions before confirming output:
186
- ```
187
- ✅ Did I rely ONLY on real, verified tools and methods?
188
- Is this solution appropriately scoped to the user's constraints?
189
- ✅ Did I handle potential failure modes and edge cases?
190
- ✅ Have I avoided generic boilerplate that doesn't add value?
191
- ```
192
-
193
- ### 🛑 Verification-Before-Completion (VBC) Protocol
194
-
195
- **CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
196
- - ❌ **Forbidden:** Declaring a task complete because the output "looks correct."
197
- - ✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
1
+ ---
2
+ name: performance-profiling
3
+ description: Performance profiling mastery. Core Web Vitals (LCP, CLS, INP), Lighthouse auditing, JavaScript profiling, React rendering optimization, bundle analysis, memory leak detection, database query profiling (EXPLAIN ANALYZE), load testing, and performance budgets. Use when optimizing performance, debugging slow pages, or establishing performance standards.
4
+ allowed-tools: Read, Write, Edit, Glob, Grep
5
+ version: 2.0.0
6
+ last-updated: 2026-04-01
7
+ applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
8
+ ---
9
+
10
+ # Performance Profiling — Measurement-Driven Optimization
11
+
12
+ > "Premature optimization is the root of all evil" — but premature measurement is the root of all performance.
13
+ > Never optimize without profiling first. The bottleneck is never where you think it is.
14
+
15
+ ---
16
+
17
+ ## Core Web Vitals
18
+
19
+ ```
20
+ LCP (Largest Contentful Paint) → Loading speed
21
+ ✅ Good: ≤ 2.5s │ ⚠️ Needs work: 2.5-4s │ ❌ Poor: > 4s
22
+ What: Time until the largest visible element renders
23
+ Fix: Optimize images, preload fonts, reduce server time
24
+
25
+ INP (Interaction to Next Paint) Responsiveness
26
+ ✅ Good: ≤ 200ms │ ⚠️ Needs work: 200-500ms │ ❌ Poor: > 500ms
27
+ What: Delay between user interaction and visual response
28
+ Fix: Break long tasks, use web workers, defer non-critical JS
29
+
30
+ CLS (Cumulative Layout Shift) → Visual stability
31
+ Good: ≤ 0.1 │ ⚠️ Needs work: 0.1-0.25 │ ❌ Poor: > 0.25
32
+ What: How much the page layout shifts unexpectedly
33
+ Fix: Set explicit dimensions on images/ads, font-display: swap
34
+
35
+ TTFB (Time to First Byte) Server responsiveness
36
+ Good: 800ms
37
+ Fix: CDN, caching, optimize database queries, use edge
38
+
39
+ // HALLUCINATION TRAP: FID is deprecated. Use INP (Interaction to Next Paint).
40
+ // FID only measured the FIRST interaction. INP measures ALL interactions.
41
+ ```
42
+
43
+ ---
44
+
45
+ ## JavaScript Profiling
46
+
47
+ ### Bundle Analysis
48
+
49
+ ```bash
50
+ # Analyze what's in your JavaScript bundle
51
+ npx vite-bundle-visualizer # Vite
52
+ npx @next/bundle-analyzer # Next.js
53
+
54
+ # Key targets:
55
+ # Total JS < 200KB (gzipped) for initial load
56
+ # No single dependency > 50KB (gzipped)
57
+ # Tree-shaking working (no dead code)
58
+ ```
59
+
60
+ ```typescript
61
+ // Common bundle bloat sources:
62
+ // ❌ import _ from "lodash"; // 72KB — imports everything
63
+ // ✅ import debounce from "lodash/debounce"; // 1KB — specific import
64
+
65
+ // ❌ import { format } from "date-fns"; // may import entire library
66
+ // ✅ import { format } from "date-fns/format"; // specific import
67
+
68
+ // ❌ import moment from "moment"; // 67KB + locales
69
+ // Use native Intl.DateTimeFormat or date-fns (tree-shakeable)
70
+ ```
71
+
72
+ ### React Rendering Profiling
73
+
74
+ ```typescript
75
+ // React DevTools Profiler find unnecessary re-renders
76
+
77
+ // 1. Why Did You Render (development tool)
78
+ // npm i @welldone-software/why-did-you-render -D
79
+
80
+ // 2. Manual render tracking
81
+ const RenderCounter = ({ label }: { label: string }) => {
82
+ const renderCount = useRef(0);
83
+ renderCount.current++;
84
+ console.log(`[${label}] rendered ${renderCount.current} times`);
85
+ return null;
86
+ };
87
+
88
+ // 3. React.memo — prevent re-renders when props haven't changed
89
+ const ExpensiveList = React.memo(function ExpensiveList({ items }: Props) {
90
+ return items.map((item) => <ListItem key={item.id} {...item} />);
91
+ });
92
+
93
+ // 4. useMemo / useCallback — memoize expensive computations
94
+ const sortedItems = useMemo(
95
+ () => items.toSorted((a, b) => a.name.localeCompare(b.name)),
96
+ [items],
97
+ );
98
+ ```
99
+
100
+ ### Memory Leak Detection
101
+
102
+ ```typescript
103
+ // Common memory leaks in JavaScript:
104
+ // 1. Event listeners not cleaned up
105
+ useEffect(() => {
106
+ const handler = () => console.log("resize");
107
+ window.addEventListener("resize", handler);
108
+ return () => window.removeEventListener("resize", handler); // ✅ cleanup
109
+ }, []);
110
+
111
+ // 2. Timers not cleared
112
+ useEffect(() => {
113
+ const interval = setInterval(pollData, 5000);
114
+ return () => clearInterval(interval); // ✅ cleanup
115
+ }, []);
116
+
117
+ // 3. AbortController not used for fetch
118
+ useEffect(() => {
119
+ const controller = new AbortController();
120
+ fetch("/api/data", { signal: controller.signal })
121
+ .then((res) => res.json())
122
+ .then(setData)
123
+ .catch((e) => { if (e.name !== "AbortError") throw e; });
124
+ return () => controller.abort(); // ✅ cancel on unmount
125
+ }, []);
126
+
127
+ // Detection: Chrome DevTools Memory Heap Snapshot
128
+ // Take snapshot, perform action, take another, compare growth
129
+ ```
130
+
131
+ ---
132
+
133
+ ## Image Optimization
134
+
135
+ ```html
136
+ <!-- Modern image loading -->
137
+ <img
138
+ src="hero.webp"
139
+ srcset="hero-480.webp 480w, hero-768.webp 768w, hero-1200.webp 1200w"
140
+ sizes="(max-width: 768px) 100vw, 50vw"
141
+ width="1200"
142
+ height="800"
143
+ loading="lazy"
144
+ decoding="async"
145
+ alt="Product hero"
146
+ fetchpriority="high"
147
+ />
148
+
149
+ <!-- Rules:
150
+ - ALWAYS set width and height (prevents CLS)
151
+ - Use WebP/AVIF (30-50% smaller than JPEG)
152
+ - loading="lazy" for below-the-fold images
153
+ - fetchpriority="high" for LCP image
154
+ - Use srcset for responsive images
155
+ - Serve from CDN with auto-format negotiation
156
+ -->
157
+ ```
158
+
159
+ ---
160
+
161
+ ## Database Query Profiling
162
+
163
+ ```sql
164
+ -- Always EXPLAIN before optimizing
165
+ EXPLAIN ANALYZE SELECT u.*, COUNT(p.id) AS post_count
166
+ FROM users u
167
+ LEFT JOIN posts p ON p.author_id = u.id
168
+ WHERE u.is_active = true
169
+ GROUP BY u.id
170
+ ORDER BY post_count DESC
171
+ LIMIT 20;
172
+
173
+ -- Look for:
174
+ -- Seq Scan needs an index (on large tables)
175
+ -- Nested Loop consider index or different join strategy
176
+ -- Sort → can an index provide sorted data?
177
+ -- execution time > 100ms → optimize
178
+
179
+ -- Common fixes:
180
+ -- Add index: CREATE INDEX idx_posts_author ON posts (author_id);
181
+ -- Use partial index: CREATE INDEX idx_active_users ON users (id) WHERE is_active;
182
+ -- Avoid SELECT *: SELECT only needed columns
183
+ -- Paginate with cursor: WHERE id > $cursor ORDER BY id LIMIT 20
184
+ ```
185
+
186
+ ---
187
+
188
+ ## Performance Budgets
189
+
190
+ ```javascript
191
+ // Lighthouse CI budget
192
+ // lighthouserc.js
193
+ module.exports = {
194
+ ci: {
195
+ assert: {
196
+ assertions: {
197
+ "categories:performance": ["error", { minScore: 0.9 }],
198
+ "first-contentful-paint": ["error", { maxNumericValue: 1500 }],
199
+ "largest-contentful-paint": ["error", { maxNumericValue: 2500 }],
200
+ "cumulative-layout-shift": ["error", { maxNumericValue: 0.1 }],
201
+ "total-byte-weight": ["error", { maxNumericValue: 500000 }],
202
+ },
203
+ },
204
+ },
205
+ };
206
+ ```
207
+
208
+ ```
209
+ Performance budget targets:
210
+ Total JS (gzipped): < 200KB
211
+ Total CSS (gzipped): < 50KB
212
+ Total page weight: < 500KB
213
+ LCP: < 2.5s
214
+ INP: < 200ms
215
+ CLS: < 0.1
216
+ TTFB: < 800ms
217
+ Time to Interactive: < 3.8s
218
+ ```
219
+
220
+ ---
221
+
222
+ ## 🤖 LLM-Specific Traps
223
+
224
+ 1. **FID Instead of INP:** FID is deprecated. Use INP (Interaction to Next Paint) for responsiveness measurement.
225
+ 2. **Optimizing Without Profiling:** Never optimize until you've measured. The bottleneck is never obvious.
226
+ 3. **`import _ from "lodash"`:** Full lodash import is 72KB. Use specific imports: `lodash/debounce`.
227
+ 4. **Images Without Dimensions:** Missing `width`/`height` on images causes CLS (layout shift).
228
+ 5. **`loading="lazy"` on LCP Image:** The hero/LCP image must NOT be lazy-loaded. Use `fetchpriority="high"`.
229
+ 6. **`SELECT *` on Large Tables:** Always select specific columns. `SELECT *` transfers unnecessary data.
230
+ 7. **Missing Cleanup in useEffect:** Event listeners, timers, and fetches without cleanup = memory leaks.
231
+ 8. **Average Latency as Metric:** Averages hide outliers. Always track P50, P95, P99.
232
+ 9. **No Performance Budget:** Without enforced budgets, performance degrades with every deploy.
233
+ 10. **Optimizing Render Before Network:** Network is usually the bottleneck, not render. Optimize TTFB first.
234
+
235
+ ---
236
+
237
+ ## 🏛️ Tribunal Integration
238
+
239
+ **Slash command: `/tribunal-performance`**
240
+
241
+ ### ✅ Pre-Flight Self-Audit
242
+
243
+ ```
244
+ ✅ Did I measure BEFORE optimizing (Lighthouse, EXPLAIN ANALYZE)?
245
+ ✅ Is LCP < 2.5s and INP < 200ms?
246
+ ✅ Are images using WebP/AVIF with explicit dimensions?
247
+ ✅ Is the JS bundle < 200KB gzipped?
248
+ ✅ Are database queries using indexes (no Seq Scan on large tables)?
249
+ ✅ Are all useEffect hooks cleaning up subscriptions/timers?
250
+ ✅ Am I tracking P95/P99 latency (not just averages)?
251
+ ✅ Is there a performance budget enforced in CI?
252
+ ✅ Is the LCP image using fetchpriority="high" (not lazy)?
253
+ ✅ Are imports tree-shakeable (specific, not barrel imports)?
254
+ ```