tribunal-kit 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/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/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/strip_tribunal.py +41 -0
- package/.agent/skills/agent-organizer/SKILL.md +92 -126
- package/.agent/skills/agentic-patterns/SKILL.md +0 -70
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +126 -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 +326 -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 +87 -121
- package/.agent/skills/architecture/SKILL.md +82 -252
- package/.agent/skills/authentication-best-practices/SKILL.md +139 -173
- package/.agent/skills/bash-linux/SKILL.md +120 -154
- package/.agent/skills/behavioral-modes/SKILL.md +8 -69
- package/.agent/skills/brainstorming/SKILL.md +428 -104
- package/.agent/skills/building-native-ui/SKILL.md +143 -174
- package/.agent/skills/clean-code/SKILL.md +323 -360
- package/.agent/skills/code-review-checklist/SKILL.md +0 -62
- package/.agent/skills/config-validator/SKILL.md +107 -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 +111 -145
- package/.agent/skills/devops-engineer/SKILL.md +295 -332
- package/.agent/skills/devops-incident-responder/SKILL.md +79 -113
- package/.agent/skills/doc.md +5 -5
- package/.agent/skills/documentation-templates/SKILL.md +19 -63
- package/.agent/skills/edge-computing/SKILL.md +123 -157
- package/.agent/skills/extract-design-system/SKILL.md +100 -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 +71 -105
- package/.agent/skills/game-engineering-expert/SKILL.md +88 -122
- package/.agent/skills/geo-fundamentals/SKILL.md +89 -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 +104 -138
- package/.agent/skills/intelligent-routing/SKILL.md +159 -127
- package/.agent/skills/lint-and-validate/SKILL.md +8 -52
- package/.agent/skills/llm-engineering/SKILL.md +344 -357
- package/.agent/skills/local-first/SKILL.md +120 -154
- package/.agent/skills/mcp-builder/SKILL.md +84 -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 +88 -122
- package/.agent/skills/performance-profiling/SKILL.md +217 -254
- package/.agent/skills/plan-writing/SKILL.md +84 -118
- package/.agent/skills/platform-engineer/SKILL.md +89 -123
- package/.agent/skills/playwright-best-practices/SKILL.md +128 -162
- package/.agent/skills/powershell-windows/SKILL.md +112 -146
- package/.agent/skills/python-patterns/SKILL.md +7 -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 +15 -85
- package/.agent/skills/realtime-patterns/SKILL.md +269 -304
- package/.agent/skills/red-team-tactics/SKILL.md +10 -51
- package/.agent/skills/rust-pro/SKILL.md +623 -701
- package/.agent/skills/seo-fundamentals/SKILL.md +120 -154
- package/.agent/skills/server-management/SKILL.md +156 -190
- package/.agent/skills/shadcn-ui-expert/SKILL.md +172 -206
- package/.agent/skills/skill-creator/SKILL.md +18 -58
- package/.agent/skills/sql-pro/SKILL.md +579 -633
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +28 -68
- package/.agent/skills/swiftui-expert/SKILL.md +142 -176
- package/.agent/skills/systematic-debugging/SKILL.md +84 -118
- package/.agent/skills/tailwind-patterns/SKILL.md +516 -576
- package/.agent/skills/tdd-workflow/SKILL.md +103 -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 +0 -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 +159 -193
- package/.agent/skills/web-design-guidelines/SKILL.md +17 -61
- package/.agent/skills/webapp-testing/SKILL.md +111 -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 +12 -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 +93 -113
- package/.agent/workflows/tribunal-database.md +94 -115
- package/.agent/workflows/tribunal-frontend.md +95 -118
- package/.agent/workflows/tribunal-full.md +92 -133
- package/.agent/workflows/tribunal-mobile.md +94 -119
- package/.agent/workflows/tribunal-performance.md +109 -133
- package/.agent/workflows/ui-ux-pro-max.md +122 -143
- package/package.json +1 -1
- 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,119 +1,94 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Mobile-specific Tribunal. Runs Logic + Security + Mobile reviewers. Use for React Native, Expo, gesture handlers, animations, navigation, and any iOS/Android-targeted code.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /tribunal-mobile — Mobile Code Audit
|
|
6
|
-
|
|
7
|
-
$ARGUMENTS
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## When to Use /tribunal-mobile
|
|
12
|
-
|
|
13
|
-
|
|
|
14
|
-
|:---|:---|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## 3 Active Reviewers (All Run Simultaneously)
|
|
24
|
-
|
|
25
|
-
### logic-reviewer
|
|
26
|
-
- `runOnJS` called inside `onUpdate` instead of `onEnd` (runs every frame)
|
|
27
|
-
- Missing `'worklet'` directive on functions called inside Reanimated
|
|
28
|
-
- FlatList inside ScrollView (disables virtualization)
|
|
29
|
-
- `useSharedValue` vs `useState` confusion (SharedValue on wrong thread)
|
|
30
|
-
|
|
31
|
-
### security-auditor
|
|
32
|
-
- AsyncStorage storing sensitive data (tokens, PII) unencrypted
|
|
33
|
-
- API keys in source code (should be in EAS Secrets)
|
|
34
|
-
- cleartext HTTP traffic (should be HTTPS on all platforms)
|
|
35
|
-
- Deep link not validated before processing URL scheme
|
|
36
|
-
|
|
37
|
-
### mobile-reviewer
|
|
38
|
-
- `setState` inside Reanimated `onUpdate` (JS bridge crossing = jank)
|
|
39
|
-
- Missing `'worklet'` on custom functions used in Reanimated
|
|
40
|
-
- FlatList for large lists (use FlashList with `estimatedItemSize`)
|
|
41
|
-
- Hardcoded pixel insets instead of `useSafeAreaInsets()`
|
|
42
|
-
- `Platform.OS === 'ios'` inside StyleSheet.create (not evaluated correctly)
|
|
43
|
-
- Missing `AppState` subscription cleanup (`subscription.remove()`)
|
|
44
|
-
- `react-native Image` used instead of `expo-image` (poor caching)
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## Verdict System
|
|
49
|
-
|
|
50
|
-
```
|
|
51
|
-
If ANY reviewer → ❌ REJECTED: fix before Human Gate
|
|
52
|
-
If any reviewer → ⚠️ WARNING: proceed with flagged items
|
|
53
|
-
If all reviewers → ✅ APPROVED: Human Gate
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
---
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
// ❌ Expo Router: navigate() was refactored in v4 — old API
|
|
97
|
-
import { navigate } from 'expo-router'; // Named export doesn't exist
|
|
98
|
-
// ✅ Current Expo Router v4
|
|
99
|
-
import { router } from 'expo-router';
|
|
100
|
-
router.push('/products/123');
|
|
101
|
-
|
|
102
|
-
// ❌ React Native: StyleSheet.create doesn't eval functions
|
|
103
|
-
const styles = StyleSheet.create({
|
|
104
|
-
box: { paddingTop: Platform.OS === 'ios' ? 20 : 0 } // Doesn't work in all contexts
|
|
105
|
-
});
|
|
106
|
-
// ✅ Use Platform.select or dynamic style object
|
|
107
|
-
const boxStyle = Platform.select({ ios: { paddingTop: 20 }, android: { paddingTop: 0 } });
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
## Usage Examples
|
|
113
|
-
|
|
114
|
-
```
|
|
115
|
-
/tribunal-mobile the SwipeToDelete gesture implementation with Reanimated 3
|
|
116
|
-
/tribunal-mobile the ProductList component using FlashList
|
|
117
|
-
/tribunal-mobile the auth token storage and retrieval functions
|
|
118
|
-
/tribunal-mobile the ProfileScreen with safe area insets
|
|
119
|
-
```
|
|
1
|
+
---
|
|
2
|
+
description: Mobile-specific Tribunal. Runs Logic + Security + Mobile reviewers. Use for React Native, Expo, gesture handlers, animations, navigation, and any iOS/Android-targeted code.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /tribunal-mobile — Mobile Code Audit
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## When to Use /tribunal-mobile
|
|
12
|
+
|
|
13
|
+
|Use `/tribunal-mobile` when...|Use something else when...|
|
|
14
|
+
|:---|:---|
|
|
15
|
+
|React Native components|Web-only components → `/tribunal-frontend`|
|
|
16
|
+
|Expo Router navigation|API routes → `/tribunal-backend`|
|
|
17
|
+
|Reanimated animations/gestures|Full audit → `/tribunal-full`|
|
|
18
|
+
|FlashList / FlatList code||
|
|
19
|
+
|Platform-specific (ios/android) code||
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 3 Active Reviewers (All Run Simultaneously)
|
|
24
|
+
|
|
25
|
+
### logic-reviewer
|
|
26
|
+
- `runOnJS` called inside `onUpdate` instead of `onEnd` (runs every frame)
|
|
27
|
+
- Missing `'worklet'` directive on functions called inside Reanimated
|
|
28
|
+
- FlatList inside ScrollView (disables virtualization)
|
|
29
|
+
- `useSharedValue` vs `useState` confusion (SharedValue on wrong thread)
|
|
30
|
+
|
|
31
|
+
### security-auditor
|
|
32
|
+
- AsyncStorage storing sensitive data (tokens, PII) unencrypted
|
|
33
|
+
- API keys in source code (should be in EAS Secrets)
|
|
34
|
+
- cleartext HTTP traffic (should be HTTPS on all platforms)
|
|
35
|
+
- Deep link not validated before processing URL scheme
|
|
36
|
+
|
|
37
|
+
### mobile-reviewer
|
|
38
|
+
- `setState` inside Reanimated `onUpdate` (JS bridge crossing = jank)
|
|
39
|
+
- Missing `'worklet'` on custom functions used in Reanimated
|
|
40
|
+
- FlatList for large lists (use FlashList with `estimatedItemSize`)
|
|
41
|
+
- Hardcoded pixel insets instead of `useSafeAreaInsets()`
|
|
42
|
+
- `Platform.OS === 'ios'` inside StyleSheet.create (not evaluated correctly)
|
|
43
|
+
- Missing `AppState` subscription cleanup (`subscription.remove()`)
|
|
44
|
+
- `react-native Image` used instead of `expo-image` (poor caching)
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Verdict System
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
If ANY reviewer → ❌ REJECTED: fix before Human Gate
|
|
52
|
+
If any reviewer → ⚠️ WARNING: proceed with flagged items
|
|
53
|
+
If all reviewers → ✅ APPROVED: Human Gate
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Mobile-Specific Hallucination Traps (Common LLM Mistakes)
|
|
61
|
+
|
|
62
|
+
```tsx
|
|
63
|
+
// ❌ Missing 'worklet' — animation function crashes silently
|
|
64
|
+
const clamp = (val: number, min: number, max: number) => Math.min(Math.max(val, min), max);
|
|
65
|
+
// ✅ Must have worklet directive
|
|
66
|
+
const clamp = (val: number, min: number, max: number): number => {
|
|
67
|
+
'worklet';
|
|
68
|
+
return Math.min(Math.max(val, min), max);
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
// ❌ Expo Router: navigate() was refactored in v4 — old API
|
|
72
|
+
import { navigate } from 'expo-router'; // Named export doesn't exist
|
|
73
|
+
// ✅ Current Expo Router v4
|
|
74
|
+
import { router } from 'expo-router';
|
|
75
|
+
router.push('/products/123');
|
|
76
|
+
|
|
77
|
+
// ❌ React Native: StyleSheet.create doesn't eval functions
|
|
78
|
+
const styles = StyleSheet.create({
|
|
79
|
+
box: { paddingTop: Platform.OS === 'ios' ? 20 : 0 } // Doesn't work in all contexts
|
|
80
|
+
});
|
|
81
|
+
// ✅ Use Platform.select or dynamic style object
|
|
82
|
+
const boxStyle = Platform.select({ ios: { paddingTop: 20 }, android: { paddingTop: 0 } });
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Usage Examples
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
/tribunal-mobile the SwipeToDelete gesture implementation with Reanimated 3
|
|
91
|
+
/tribunal-mobile the ProductList component using FlashList
|
|
92
|
+
/tribunal-mobile the auth token storage and retrieval functions
|
|
93
|
+
/tribunal-mobile the ProfileScreen with safe area insets
|
|
94
|
+
```
|
|
@@ -1,133 +1,109 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Performance-specific Tribunal. Runs Logic + Performance reviewers. Use when code is slow, for optimization tasks, bundle analysis, Core Web Vitals improvement, memory leak investigation, and before deploying performance-critical features.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /tribunal-performance — Performance Audit
|
|
6
|
-
|
|
7
|
-
$ARGUMENTS
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## When to Use /tribunal-performance
|
|
12
|
-
|
|
13
|
-
|
|
|
14
|
-
|:---|:---|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## 2 Active Reviewers (Both Run Simultaneously)
|
|
24
|
-
|
|
25
|
-
### logic-reviewer
|
|
26
|
-
- Expensive computation in render function (runs every render)
|
|
27
|
-
- Missing memoization where React.memo/useMemo would help
|
|
28
|
-
- Infinite re-render loop (effect updates a value that triggers the effect)
|
|
29
|
-
|
|
30
|
-
### performance-reviewer
|
|
31
|
-
- INP: expensive synchronous work on user interaction (> 50ms blocking)
|
|
32
|
-
- LCP: hero image without priority={true} or preload hint
|
|
33
|
-
- CLS: missing width/height on images causing layout shift
|
|
34
|
-
- Bundle: large library imported without tree-shaking or dynamic import
|
|
35
|
-
- Memory: event listeners added without cleanup in useEffect
|
|
36
|
-
- N+1: database queries in loop should be batched
|
|
37
|
-
- Cache: expensive DB query without Redis/memory cache
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## 2026 CWV Targets (Verdict Reference)
|
|
42
|
-
|
|
43
|
-
|
|
|
44
|
-
|:---|:---|:---|:---|
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## Verdict System
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
If code contains patterns causing POOR rating → ❌ REJECTED
|
|
55
|
-
If code contains patterns causing NEEDS WORK → ⚠️ WARNING
|
|
56
|
-
If all patterns cause GOOD rating → ✅ APPROVED
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
## Measurement Protocol
|
|
111
|
-
|
|
112
|
-
Performance optimization without measurement is guessing:
|
|
113
|
-
|
|
114
|
-
```
|
|
115
|
-
Before optimizing:
|
|
116
|
-
□ Run Lighthouse: record LCP, INP, CLS, bundle size
|
|
117
|
-
□ Profile with Chrome DevTools: identify actual bottleneck
|
|
118
|
-
|
|
119
|
-
After optimizing:
|
|
120
|
-
□ Run Lighthouse again: confirm improvement
|
|
121
|
-
□ Show before/after scores in audit output
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
## Usage Examples
|
|
127
|
-
|
|
128
|
-
```
|
|
129
|
-
/tribunal-performance the product listing page with image grid
|
|
130
|
-
/tribunal-performance the search component with real-time filtering
|
|
131
|
-
/tribunal-performance the checkout flow for CWV compliance
|
|
132
|
-
/tribunal-performance the API route with expensive DB query for caching
|
|
133
|
-
```
|
|
1
|
+
---
|
|
2
|
+
description: Performance-specific Tribunal. Runs Logic + Performance reviewers. Use when code is slow, for optimization tasks, bundle analysis, Core Web Vitals improvement, memory leak investigation, and before deploying performance-critical features.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /tribunal-performance — Performance Audit
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## When to Use /tribunal-performance
|
|
12
|
+
|
|
13
|
+
|Use `/tribunal-performance` when...|Use something else when...|
|
|
14
|
+
|:---|:---|
|
|
15
|
+
|LCP, INP, or CLS is above threshold|General code review → `/tribunal-full`|
|
|
16
|
+
|Bundle size is too large|Backend perf only → `/tribunal-backend`|
|
|
17
|
+
|Memory usage grows unbounded|Database perf → `/tribunal-database`|
|
|
18
|
+
|Node.js event loop is saturated||
|
|
19
|
+
|Optimizing rendering performance||
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 2 Active Reviewers (Both Run Simultaneously)
|
|
24
|
+
|
|
25
|
+
### logic-reviewer
|
|
26
|
+
- Expensive computation in render function (runs every render)
|
|
27
|
+
- Missing memoization where React.memo/useMemo would help
|
|
28
|
+
- Infinite re-render loop (effect updates a value that triggers the effect)
|
|
29
|
+
|
|
30
|
+
### performance-reviewer
|
|
31
|
+
- INP: expensive synchronous work on user interaction (> 50ms blocking)
|
|
32
|
+
- LCP: hero image without priority={true} or preload hint
|
|
33
|
+
- CLS: missing width/height on images causing layout shift
|
|
34
|
+
- Bundle: large library imported without tree-shaking or dynamic import
|
|
35
|
+
- Memory: event listeners added without cleanup in useEffect
|
|
36
|
+
- N+1: database queries in loop should be batched
|
|
37
|
+
- Cache: expensive DB query without Redis/memory cache
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 2026 CWV Targets (Verdict Reference)
|
|
42
|
+
|
|
43
|
+
|Metric|Good|Needs Work|Poor (REJECTED)|
|
|
44
|
+
|:---|:---|:---|:---|
|
|
45
|
+
|INP|< 200ms|200–500ms|> 500ms|
|
|
46
|
+
|LCP|< 2.5s|2.5–4.0s|> 4.0s|
|
|
47
|
+
|CLS|< 0.1|0.1–0.25|> 0.25|
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Verdict System
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
If code contains patterns causing POOR rating → ❌ REJECTED
|
|
55
|
+
If code contains patterns causing NEEDS WORK → ⚠️ WARNING
|
|
56
|
+
If all patterns cause GOOD rating → ✅ APPROVED
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Performance-Specific Hallucination Traps
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
// ❌ React.memo doesn't help when parent re-renders with new objects every time
|
|
67
|
+
const MemoCard = React.memo(Card);
|
|
68
|
+
<MemoCard style={{ margin: 8 }} /> // New object {} every render → memo has no effect
|
|
69
|
+
|
|
70
|
+
// ✅ Memoize the object itself
|
|
71
|
+
const cardStyle = useMemo(() => ({ margin: 8 }), []);
|
|
72
|
+
<MemoCard style={cardStyle} />
|
|
73
|
+
|
|
74
|
+
// ❌ useMemo with no deps array — runs every render (same as no memo)
|
|
75
|
+
const sorted = useMemo(() => items.sort(...)); // Missing deps array!
|
|
76
|
+
|
|
77
|
+
// ✅ Correct deps array
|
|
78
|
+
const sorted = useMemo(() => [...items].sort(compareFn), [items]);
|
|
79
|
+
|
|
80
|
+
// ❌ Non-measurement claim
|
|
81
|
+
// "This is fast" — never write this without a Lighthouse score to back it
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Measurement Protocol
|
|
87
|
+
|
|
88
|
+
Performance optimization without measurement is guessing:
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
Before optimizing:
|
|
92
|
+
□ Run Lighthouse: record LCP, INP, CLS, bundle size
|
|
93
|
+
□ Profile with Chrome DevTools: identify actual bottleneck
|
|
94
|
+
|
|
95
|
+
After optimizing:
|
|
96
|
+
□ Run Lighthouse again: confirm improvement
|
|
97
|
+
□ Show before/after scores in audit output
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Usage Examples
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
/tribunal-performance the product listing page with image grid
|
|
106
|
+
/tribunal-performance the search component with real-time filtering
|
|
107
|
+
/tribunal-performance the checkout flow for CWV compliance
|
|
108
|
+
/tribunal-performance the API route with expensive DB query for caching
|
|
109
|
+
```
|