tribunal-kit 2.4.6 → 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 +139 -86
- package/.agent/agents/ai-code-reviewer.md +160 -90
- package/.agent/agents/backend-specialist.md +164 -127
- package/.agent/agents/code-archaeologist.md +115 -73
- package/.agent/agents/database-architect.md +130 -110
- package/.agent/agents/debugger.md +137 -97
- package/.agent/agents/dependency-reviewer.md +78 -30
- package/.agent/agents/devops-engineer.md +161 -118
- package/.agent/agents/documentation-writer.md +151 -87
- package/.agent/agents/explorer-agent.md +117 -99
- package/.agent/agents/frontend-reviewer.md +127 -47
- package/.agent/agents/frontend-specialist.md +169 -109
- package/.agent/agents/game-developer.md +28 -164
- package/.agent/agents/logic-reviewer.md +87 -49
- package/.agent/agents/mobile-developer.md +151 -103
- package/.agent/agents/mobile-reviewer.md +133 -50
- package/.agent/agents/orchestrator.md +121 -110
- package/.agent/agents/penetration-tester.md +103 -77
- package/.agent/agents/performance-optimizer.md +136 -92
- package/.agent/agents/performance-reviewer.md +139 -69
- package/.agent/agents/product-manager.md +104 -70
- package/.agent/agents/product-owner.md +6 -25
- package/.agent/agents/project-planner.md +95 -95
- package/.agent/agents/qa-automation-engineer.md +174 -87
- package/.agent/agents/security-auditor.md +133 -129
- package/.agent/agents/seo-specialist.md +160 -99
- package/.agent/agents/sql-reviewer.md +132 -44
- package/.agent/agents/supervisor-agent.md +137 -109
- 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 +132 -53
- package/.agent/agents/test-engineer.md +0 -21
- package/.agent/agents/type-safety-reviewer.md +143 -33
- 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/__pycache__/auto_preview.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/bundle_analyzer.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/checklist.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/dependency_analyzer.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/security_scan.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/session_manager.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/skill_integrator.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/swarm_dispatcher.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/test_runner.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/verify_all.cpython-311.pyc +0 -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/strip_tribunal.py +41 -0
- package/.agent/skills/agent-organizer/SKILL.md +60 -100
- package/.agent/skills/agentic-patterns/SKILL.md +0 -70
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +108 -53
- package/.agent/skills/api-patterns/SKILL.md +197 -257
- package/.agent/skills/api-security-auditor/SKILL.md +125 -57
- 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 +71 -98
- package/.agent/skills/architecture/SKILL.md +161 -200
- package/.agent/skills/authentication-best-practices/SKILL.md +121 -54
- package/.agent/skills/bash-linux/SKILL.md +71 -166
- package/.agent/skills/behavioral-modes/SKILL.md +8 -69
- package/.agent/skills/brainstorming/SKILL.md +345 -127
- package/.agent/skills/building-native-ui/SKILL.md +125 -57
- package/.agent/skills/clean-code/SKILL.md +266 -149
- package/.agent/skills/code-review-checklist/SKILL.md +0 -62
- package/.agent/skills/config-validator/SKILL.md +73 -131
- package/.agent/skills/csharp-developer/SKILL.md +434 -73
- package/.agent/skills/database-design/SKILL.md +190 -275
- package/.agent/skills/deployment-procedures/SKILL.md +81 -158
- package/.agent/skills/devops-engineer/SKILL.md +255 -94
- package/.agent/skills/devops-incident-responder/SKILL.md +50 -69
- package/.agent/skills/doc.md +5 -5
- package/.agent/skills/documentation-templates/SKILL.md +19 -63
- package/.agent/skills/edge-computing/SKILL.md +75 -165
- package/.agent/skills/extract-design-system/SKILL.md +84 -58
- package/.agent/skills/framer-motion-expert/SKILL.md +195 -0
- package/.agent/skills/frontend-design/SKILL.md +151 -499
- package/.agent/skills/game-design-expert/SKILL.md +71 -0
- package/.agent/skills/game-engineering-expert/SKILL.md +88 -0
- package/.agent/skills/geo-fundamentals/SKILL.md +52 -178
- package/.agent/skills/github-operations/SKILL.md +197 -272
- package/.agent/skills/gsap-expert/SKILL.md +194 -0
- package/.agent/skills/i18n-localization/SKILL.md +60 -172
- package/.agent/skills/intelligent-routing/SKILL.md +123 -103
- package/.agent/skills/lint-and-validate/SKILL.md +8 -52
- package/.agent/skills/llm-engineering/SKILL.md +281 -195
- package/.agent/skills/local-first/SKILL.md +76 -159
- package/.agent/skills/mcp-builder/SKILL.md +48 -188
- 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 +184 -203
- package/.agent/skills/nodejs-best-practices/SKILL.md +403 -185
- package/.agent/skills/observability/SKILL.md +211 -203
- package/.agent/skills/parallel-agents/SKILL.md +53 -146
- package/.agent/skills/performance-profiling/SKILL.md +171 -151
- package/.agent/skills/plan-writing/SKILL.md +49 -153
- package/.agent/skills/platform-engineer/SKILL.md +57 -103
- package/.agent/skills/playwright-best-practices/SKILL.md +110 -63
- package/.agent/skills/powershell-windows/SKILL.md +61 -179
- package/.agent/skills/python-patterns/SKILL.md +7 -35
- package/.agent/skills/python-pro/SKILL.md +273 -114
- package/.agent/skills/react-specialist/SKILL.md +227 -108
- package/.agent/skills/readme-builder/SKILL.md +15 -85
- package/.agent/skills/realtime-patterns/SKILL.md +216 -243
- package/.agent/skills/red-team-tactics/SKILL.md +10 -51
- package/.agent/skills/rust-pro/SKILL.md +525 -142
- package/.agent/skills/seo-fundamentals/SKILL.md +92 -153
- package/.agent/skills/server-management/SKILL.md +110 -166
- package/.agent/skills/shadcn-ui-expert/SKILL.md +154 -55
- package/.agent/skills/skill-creator/SKILL.md +18 -58
- package/.agent/skills/sql-pro/SKILL.md +543 -68
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +28 -68
- package/.agent/skills/swiftui-expert/SKILL.md +124 -57
- package/.agent/skills/systematic-debugging/SKILL.md +49 -151
- package/.agent/skills/tailwind-patterns/SKILL.md +433 -149
- package/.agent/skills/tdd-workflow/SKILL.md +63 -169
- package/.agent/skills/test-result-analyzer/SKILL.md +33 -73
- package/.agent/skills/testing-patterns/SKILL.md +437 -130
- 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 +225 -119
- package/.agent/skills/vulnerability-scanner/SKILL.md +264 -226
- package/.agent/skills/web-accessibility-auditor/SKILL.md +141 -58
- package/.agent/skills/web-design-guidelines/SKILL.md +17 -61
- package/.agent/skills/webapp-testing/SKILL.md +71 -196
- package/.agent/skills/whimsy-injector/SKILL.md +58 -132
- package/.agent/skills/workflow-optimizer/SKILL.md +28 -68
- package/.agent/workflows/api-tester.md +96 -224
- package/.agent/workflows/audit.md +81 -122
- package/.agent/workflows/brainstorm.md +69 -105
- package/.agent/workflows/changelog.md +65 -97
- package/.agent/workflows/create.md +73 -88
- package/.agent/workflows/debug.md +80 -111
- package/.agent/workflows/deploy.md +119 -92
- package/.agent/workflows/enhance.md +80 -91
- package/.agent/workflows/fix.md +68 -97
- package/.agent/workflows/generate.md +165 -164
- package/.agent/workflows/migrate.md +106 -109
- package/.agent/workflows/orchestrate.md +103 -86
- package/.agent/workflows/performance-benchmarker.md +77 -268
- package/.agent/workflows/plan.md +120 -98
- package/.agent/workflows/preview.md +39 -96
- package/.agent/workflows/refactor.md +105 -97
- package/.agent/workflows/review-ai.md +63 -102
- package/.agent/workflows/review.md +71 -110
- package/.agent/workflows/session.md +53 -113
- package/.agent/workflows/status.md +42 -88
- package/.agent/workflows/strengthen-skills.md +90 -51
- package/.agent/workflows/swarm.md +114 -129
- package/.agent/workflows/test.md +125 -102
- package/.agent/workflows/tribunal-backend.md +60 -78
- package/.agent/workflows/tribunal-database.md +62 -100
- package/.agent/workflows/tribunal-frontend.md +62 -82
- package/.agent/workflows/tribunal-full.md +56 -100
- package/.agent/workflows/tribunal-mobile.md +65 -94
- package/.agent/workflows/tribunal-performance.md +62 -105
- package/.agent/workflows/ui-ux-pro-max.md +72 -121
- package/README.md +11 -15
- 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/dotnet-core-expert/SKILL.md +0 -103
- package/.agent/skills/framer-motion-animations/SKILL.md +0 -74
- 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/game-development/2d-games/SKILL.md +0 -119
- package/.agent/skills/game-development/3d-games/SKILL.md +0 -135
- package/.agent/skills/game-development/SKILL.md +0 -236
- package/.agent/skills/game-development/game-art/SKILL.md +0 -185
- package/.agent/skills/game-development/game-audio/SKILL.md +0 -190
- package/.agent/skills/game-development/game-design/SKILL.md +0 -129
- package/.agent/skills/game-development/mobile-games/SKILL.md +0 -108
- package/.agent/skills/game-development/multiplayer/SKILL.md +0 -132
- package/.agent/skills/game-development/pc-games/SKILL.md +0 -144
- package/.agent/skills/game-development/vr-ar/SKILL.md +0 -123
- package/.agent/skills/game-development/web-games/SKILL.md +0 -150
- 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,115 +1,95 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Frontend
|
|
2
|
+
description: Frontend and React specific Tribunal. Runs Logic + Security + Frontend + Type Safety reviewers. Use for React components, hooks, UI code, Next.js pages, Server Components, and Client Components.
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
# /tribunal-frontend —
|
|
5
|
+
# /tribunal-frontend — Frontend Code Audit
|
|
6
6
|
|
|
7
7
|
$ARGUMENTS
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## When to Use /tribunal-frontend
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
|Use `/tribunal-frontend` when...|Use something else when...|
|
|
14
|
+
|:---|:---|
|
|
15
|
+
|React components (Server or Client)|Backend routes → `/tribunal-backend`|
|
|
16
|
+
|Custom hooks|Database queries → `/tribunal-database`|
|
|
17
|
+
|Next.js pages and layouts|Mobile (React Native) → `/tribunal-mobile`|
|
|
18
|
+
|UI state management|Maximum coverage → `/tribunal-full`|
|
|
19
|
+
|Form handling with Server Actions||
|
|
14
20
|
|
|
15
|
-
|
|
21
|
+
---
|
|
16
22
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
## 4 Active Reviewers (All Run Simultaneously)
|
|
24
|
+
|
|
25
|
+
### logic-reviewer
|
|
26
|
+
- Hallucinated React 19 hooks (non-existent hook names)
|
|
27
|
+
- useFormState called instead of useActionState (React 19 rename)
|
|
28
|
+
- useEffect missing dependencies (stale closure)
|
|
29
|
+
- Multiple setStates that should be batched (React 19 auto-batches in most cases)
|
|
30
|
+
|
|
31
|
+
### security-auditor
|
|
32
|
+
- `dangerouslySetInnerHTML` with user-controlled content (XSS)
|
|
33
|
+
- eval/Function() calls in component code
|
|
34
|
+
- Exposing sensitive data in client-rendered output
|
|
35
|
+
|
|
36
|
+
### frontend-reviewer
|
|
37
|
+
- useState/useReducer in Server Components (no client runtime!)
|
|
38
|
+
- 'use client' directive missing on components using hooks
|
|
39
|
+
- Missing 'use server' on Server Actions
|
|
40
|
+
- cookies()/headers()/params not awaited in Next.js 15
|
|
41
|
+
- useEffect not cleaned up (subscription leaks)
|
|
42
|
+
- Keys not unique in list rendering (using index as key)
|
|
43
|
+
- Direct DOM mutations (document.querySelector inside React)
|
|
44
|
+
|
|
45
|
+
### type-safety-reviewer
|
|
46
|
+
- Props typed as `any`
|
|
47
|
+
- Event handlers typed as `any` (use `React.MouseEvent<HTMLButtonElement>`)
|
|
48
|
+
- Server Component async props typed without Promise<> (Next.js 15 params)
|
|
49
|
+
- No explicit return type on custom hooks
|
|
24
50
|
|
|
25
51
|
---
|
|
26
52
|
|
|
27
|
-
##
|
|
53
|
+
## Verdict System
|
|
28
54
|
|
|
29
55
|
```
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
in component state, unsanitized URL params
|
|
34
|
-
frontend-reviewer → Hooks violations (rules of hooks), missing dep arrays,
|
|
35
|
-
direct state mutation, infinite render loops
|
|
36
|
-
type-safety-reviewer → Untyped props, any in hooks, unsafe DOM ref usage,
|
|
37
|
-
missing generic type parameters
|
|
56
|
+
If ANY reviewer → ❌ REJECTED: fix before Human Gate
|
|
57
|
+
If any reviewer → ⚠️ WARNING: proceed with flagged items
|
|
58
|
+
If all reviewers → ✅ APPROVED: Human Gate
|
|
38
59
|
```
|
|
39
60
|
|
|
40
61
|
---
|
|
41
62
|
|
|
42
|
-
## What Gets Flagged — Real Examples
|
|
43
|
-
|
|
44
|
-
| Reviewer | Example Finding |
|
|
45
|
-
|---|---|
|
|
46
|
-
| logic | `useState.useAsync()` — not a real React API |
|
|
47
|
-
| logic | Setting state during render without a guard → infinite loop |
|
|
48
|
-
| security | `dangerouslySetInnerHTML={{ __html: userInput }}` — XSS |
|
|
49
|
-
| security | `localStorage.setItem('token', jwt)` — accessible to XSS |
|
|
50
|
-
| frontend | `useEffect(() => {...}, [])` with a prop used inside — stale closure |
|
|
51
|
-
| frontend | `setCount(count + 1)` inside a stale closure — use functional updater |
|
|
52
|
-
| frontend | Hook called inside a conditional `if (loggedIn) { useData() }` |
|
|
53
|
-
| type-safety | `function Card(props: any)` — no defined prop interface |
|
|
54
|
-
| type-safety | `ref.current.focus()` without null check |
|
|
55
|
-
|
|
56
63
|
---
|
|
57
64
|
|
|
58
|
-
##
|
|
59
|
-
|
|
60
|
-
```
|
|
61
|
-
━━━ Frontend Audit ━━━━━━━━━━━━━━━━━━━━━━
|
|
62
|
-
|
|
63
|
-
logic-reviewer: ✅ APPROVED
|
|
64
|
-
security-auditor: ✅ APPROVED
|
|
65
|
-
frontend-reviewer: ❌ REJECTED
|
|
66
|
-
type-safety: ⚠️ WARNING
|
|
67
|
-
|
|
68
|
-
━━━ Issues ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
65
|
+
## Frontend-Specific Hallucination Traps (Common LLM Mistakes)
|
|
69
66
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
Fix: useEffect(() => fetchUser(userId), [userId])
|
|
67
|
+
```typescript
|
|
68
|
+
// ❌ React 19: useFormState renamed to useActionState
|
|
69
|
+
import { useFormState } from 'react'; // useFormState no longer exists in React 19
|
|
70
|
+
import { useActionState } from 'react'; // Correct React 19 name
|
|
75
71
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
72
|
+
// ❌ Next.js 15: params and searchParams must be awaited
|
|
73
|
+
const { id } = params; // WRONG — params is a Promise in Next.js 15
|
|
74
|
+
const { id } = await params; // CORRECT
|
|
79
75
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
76
|
+
// ❌ Hook not valid in Server Component
|
|
77
|
+
export default async function Page() {
|
|
78
|
+
const [count, setCount] = useState(0); // Server Components cannot use hooks
|
|
79
|
+
}
|
|
84
80
|
|
|
85
|
-
|
|
81
|
+
// ❌ Server Action missing 'use server'
|
|
82
|
+
async function saveData(formData: FormData) { // Without 'use server' — not a Server Action
|
|
83
|
+
'use server'; // Must be FIRST line
|
|
86
84
|
```
|
|
87
85
|
|
|
88
86
|
---
|
|
89
87
|
|
|
90
|
-
##
|
|
91
|
-
|
|
92
|
-
- Only real React/Vue/Next.js APIs are accepted — invented hooks get REJECTED
|
|
93
|
-
- Hook violation findings cite the **specific hooks rule being broken**
|
|
94
|
-
- XSS findings include the **specific input path** that creates the injection
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## Cross-Workflow Navigation
|
|
99
|
-
|
|
100
|
-
| Finding type | Next step |
|
|
101
|
-
|---|---|
|
|
102
|
-
| XSS finding | Contact security team + `/audit` for project-wide XSS scan |
|
|
103
|
-
| Hooks violations everywhere | `/refactor` to extract to properly structured custom hooks |
|
|
104
|
-
| All approved | Human Gate to write code to disk |
|
|
105
|
-
|
|
106
|
-
---
|
|
107
|
-
|
|
108
|
-
## Usage
|
|
88
|
+
## Usage Examples
|
|
109
89
|
|
|
110
90
|
```
|
|
111
|
-
/tribunal-frontend
|
|
112
|
-
/tribunal-frontend
|
|
113
|
-
/tribunal-frontend
|
|
114
|
-
/tribunal-frontend the
|
|
91
|
+
/tribunal-frontend the ProductCard component with server-fetched data
|
|
92
|
+
/tribunal-frontend the useAuth custom hook implementation
|
|
93
|
+
/tribunal-frontend the checkout page with Server Action form
|
|
94
|
+
/tribunal-frontend the DashboardLayout with Suspense and loading states
|
|
115
95
|
```
|
|
@@ -1,136 +1,92 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Run ALL 11 Tribunal reviewer agents simultaneously. Maximum hallucination coverage. Use before merging any AI-generated code.
|
|
2
|
+
description: Run ALL 11 Tribunal reviewer agents simultaneously. Maximum hallucination coverage. Use before merging any AI-generated code, before production deployments, or when maximum confidence is required.
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
# /tribunal-full —
|
|
5
|
+
# /tribunal-full — Complete 11-Reviewer Audit
|
|
6
6
|
|
|
7
7
|
$ARGUMENTS
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## When to Use /tribunal-full
|
|
12
12
|
|
|
13
|
-
Use
|
|
13
|
+
|Use `/tribunal-full` when...|Use targeted tribunal when...|
|
|
14
|
+
|:---|:---|
|
|
15
|
+
|Before merging any AI-generated code|Backend only → `/tribunal-backend`|
|
|
16
|
+
|Before production deployment|Frontend only → `/tribunal-frontend`|
|
|
17
|
+
|Security-critical feature review|DB only → `/tribunal-database`|
|
|
18
|
+
|Code affects auth, payments, or PII||
|
|
19
|
+
|Maximum confidence required||
|
|
14
20
|
|
|
15
21
|
---
|
|
16
22
|
|
|
17
|
-
##
|
|
18
|
-
|
|
19
|
-
| Use `/tribunal-full` when... | Use a targeted tribunal when... |
|
|
20
|
-
|---|---|
|
|
21
|
-
| Not sure which domain applies | You know it's backend-only → `/tribunal-backend` |
|
|
22
|
-
| Cross-domain code (API + DB + UI) | Pure frontend → `/tribunal-frontend` |
|
|
23
|
-
| AI-generated code, pre-merge | Pure database queries → `/tribunal-database` |
|
|
24
|
-
| Security-critical code path | Mobile-specific → `/tribunal-mobile` |
|
|
25
|
-
| "Final check" before shipping | Performance concern only → `/tribunal-performance` |
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Who Runs
|
|
23
|
+
## 11 Reviewers — All Active Simultaneously
|
|
30
24
|
|
|
31
25
|
```
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
26
|
+
Tier 1: Always active (universal concerns)
|
|
27
|
+
├── logic-reviewer → Hallucinated methods, impossible logic, undefined refs
|
|
28
|
+
└── security-auditor → OWASP 2025, injection, JWT, SSRF, IDOR
|
|
29
|
+
|
|
30
|
+
Tier 2: Code quality
|
|
31
|
+
├── dependency-reviewer → Fabricated packages, supply chain, version compatibility
|
|
32
|
+
├── type-safety-reviewer → 'any' epidemic, Zod parse vs cast, unguarded access
|
|
33
|
+
└── sql-reviewer → Injection, N+1, missing indexes, unscoped mutations
|
|
34
|
+
|
|
35
|
+
Tier 3: Domain-specific
|
|
36
|
+
├── frontend-reviewer → React 19 APIs, RSC violations, hook rules, hydration
|
|
37
|
+
├── performance-reviewer → 2026 CWV targets, re-render cascades, memory leaks
|
|
38
|
+
├── mobile-reviewer → Reanimated thread safety, FlashList, safe area insets
|
|
39
|
+
├── ai-code-reviewer → Model name hallucinations, prompt injection, cost explosion
|
|
40
|
+
├── test-coverage-reviewer → Happy path only, brittle selectors, missing edge cases
|
|
41
|
+
└── accessibility-reviewer → WCAG 2.2 AA, ARIA misuse, focus management, live regions
|
|
43
42
|
```
|
|
44
43
|
|
|
45
|
-
All 11 run in parallel. You wait for all verdicts before seeing the result.
|
|
46
|
-
|
|
47
44
|
---
|
|
48
45
|
|
|
49
|
-
##
|
|
46
|
+
## Active Reviewers by Code Type
|
|
50
47
|
|
|
51
|
-
|
|
52
|
-
|---|---|---|
|
|
53
|
-
| `❌ CRITICAL` | Blocking | Must be fixed before code reaches the codebase |
|
|
54
|
-
| `❌ HIGH` | Blocking | Likely to cause bugs or security issues in production |
|
|
55
|
-
| `⚠️ MEDIUM` | Non-blocking | Should be addressed; review before approving |
|
|
56
|
-
| `💬 LOW` | Advisory | Consider fixing; does not block merge |
|
|
48
|
+
Not all 11 reviewers produce meaningful findings on all code types. Active reviewers detect their first finding immediately — inactive reviewers auto-pass with "N/A for this code type."
|
|
57
49
|
|
|
58
|
-
|
|
50
|
+
|Code Under Review|Critical Reviewers|
|
|
51
|
+
|:---|:---|
|
|
52
|
+
|REST API route|logic, security, dependency, type-safety, sql|
|
|
53
|
+
|React component|logic, frontend, accessibility, type-safety|
|
|
54
|
+
|Database query|logic, security, sql|
|
|
55
|
+
|AI LLM integration|logic, security, ai-code, dependency|
|
|
56
|
+
|Test file|test-coverage, logic|
|
|
57
|
+
|React Native / Expo|mobile, logic, security, performance|
|
|
58
|
+
|Next.js page|logic, frontend, performance, accessibility|
|
|
59
|
+
|Auth/JWT code|security, logic, type-safety|
|
|
59
60
|
|
|
60
61
|
---
|
|
61
62
|
|
|
62
|
-
##
|
|
63
|
+
## Verdict Aggregation
|
|
63
64
|
|
|
64
65
|
```
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
type-safety-reviewer: ⚠️ WARNING
|
|
71
|
-
sql-reviewer: ✅ APPROVED
|
|
72
|
-
frontend-reviewer: ✅ APPROVED
|
|
73
|
-
performance-reviewer: ✅ APPROVED
|
|
74
|
-
test-coverage-reviewer: ❌ REJECTED
|
|
75
|
-
mobile-reviewer: ✅ APPROVED (N/A — no mobile code)
|
|
76
|
-
ai-code-reviewer: ✅ APPROVED (N/A — no LLM calls)
|
|
77
|
-
accessibility-reviewer: ✅ APPROVED
|
|
78
|
-
|
|
79
|
-
━━━ Issues ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
80
|
-
|
|
81
|
-
security-auditor:
|
|
82
|
-
❌ CRITICAL — Line 12
|
|
83
|
-
SQL injection: db.query(`WHERE id = ${id}`)
|
|
84
|
-
Fix: db.query('WHERE id = $1', [id])
|
|
85
|
-
|
|
86
|
-
test-coverage-reviewer:
|
|
87
|
-
❌ HIGH — Line 45-60
|
|
88
|
-
Tautology test: expect(fn(x)).toBe(fn(x)) — always passes regardless of fn's behavior
|
|
89
|
-
|
|
90
|
-
type-safety-reviewer:
|
|
91
|
-
⚠️ MEDIUM — Line 7
|
|
92
|
-
Implicit any in parameter: function (data) — add explicit type annotation
|
|
93
|
-
|
|
94
|
-
━━━ Verdict ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
95
|
-
|
|
96
|
-
2 REJECTED. Fix all CRITICAL and HIGH issues before this code reaches your codebase.
|
|
97
|
-
1 WARNING — review before approving.
|
|
98
|
-
8 APPROVED.
|
|
66
|
+
All 11 verdicts are collected. Aggregated result:
|
|
67
|
+
|
|
68
|
+
If ANY reviewer = ❌ REJECTED → Global verdict: ❌ REJECTED (must fix before Human Gate)
|
|
69
|
+
If any reviewer = ⚠️ WARNING → Global verdict: ⚠️ WARNINGS (proceed with attention)
|
|
70
|
+
If all reviewers = ✅ APPROVED → Global verdict: ✅ APPROVED (proceed to Human Gate)
|
|
99
71
|
```
|
|
100
72
|
|
|
101
73
|
---
|
|
102
74
|
|
|
75
|
+
---
|
|
76
|
+
|
|
103
77
|
## Retry Protocol
|
|
104
78
|
|
|
105
|
-
|
|
79
|
+
When code is rejected:
|
|
106
80
|
|
|
107
81
|
```
|
|
108
|
-
Attempt 1
|
|
109
|
-
Attempt 2
|
|
110
|
-
Attempt 3
|
|
111
|
-
|
|
82
|
+
Attempt 1: Maker revises with reviewer feedback
|
|
83
|
+
Attempt 2: Maker revises with stricter constraints + full reviewer context
|
|
84
|
+
Attempt 3: Maker revises with maximum constraints + full context dump
|
|
85
|
+
|
|
86
|
+
After 3 failed attempts:
|
|
87
|
+
→ HALT
|
|
88
|
+
→ Report to human with full failure history
|
|
89
|
+
→ DO NOT retry silently
|
|
112
90
|
```
|
|
113
91
|
|
|
114
|
-
Hard limit: **3 revisions**. After 3 rejections, the agent stops and reports.
|
|
115
|
-
|
|
116
92
|
---
|
|
117
|
-
|
|
118
|
-
## Cross-Workflow Navigation
|
|
119
|
-
|
|
120
|
-
| After seeing findings... | Go to |
|
|
121
|
-
|---|---|
|
|
122
|
-
| Security findings need a targeted scan | `/audit` for full project-wide security sweep |
|
|
123
|
-
| Performance issues found | `/tribunal-performance` for deeper profiling |
|
|
124
|
-
| SQL injection pattern found | Check with `/tribunal-database` across all queries |
|
|
125
|
-
| Stale or phantom deps found | `/audit` → dependency scan |
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
## Usage
|
|
130
|
-
|
|
131
|
-
```
|
|
132
|
-
/tribunal-full [paste any code]
|
|
133
|
-
/tribunal-full before merging
|
|
134
|
-
/tribunal-full when you're unsure which domain applies
|
|
135
|
-
/tribunal-full the entire auth service
|
|
136
|
-
```
|
|
@@ -1,123 +1,94 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Mobile-specific Tribunal. Runs Logic + Security + Mobile reviewers. Use for React Native,
|
|
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
3
|
---
|
|
4
4
|
|
|
5
|
-
# /tribunal-mobile — Mobile Code
|
|
5
|
+
# /tribunal-mobile — Mobile Code Audit
|
|
6
6
|
|
|
7
7
|
$ARGUMENTS
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## When to Use /tribunal-mobile
|
|
12
12
|
|
|
13
|
-
Use
|
|
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||
|
|
14
20
|
|
|
15
21
|
---
|
|
16
22
|
|
|
17
|
-
##
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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)
|
|
25
45
|
|
|
26
46
|
---
|
|
27
47
|
|
|
28
|
-
##
|
|
29
|
-
|
|
30
|
-
| Reviewer | What It Catches |
|
|
31
|
-
|---|---|
|
|
32
|
-
| `logic-reviewer` | Hallucinated RN/Flutter APIs, impossible logic, undefined refs |
|
|
33
|
-
| `security-auditor` | Hardcoded secrets, insecure storage, OWASP Mobile Top 10 |
|
|
34
|
-
| `mobile-reviewer` | Touch targets, safe areas, keyboard avoidance, gesture handling, image optimization |
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## What Gets Flagged — Real Examples
|
|
39
|
-
|
|
40
|
-
| Reviewer | Example Finding | Severity |
|
|
41
|
-
|---|---|---|
|
|
42
|
-
| logic | Calling a non-existent `Animated.stagger()` method | ❌ HIGH |
|
|
43
|
-
| security | `AsyncStorage.setItem('token', jwt)` — use `expo-secure-store` instead | ⚠️ MEDIUM |
|
|
44
|
-
| security | Deeplink handler with no validation of `url` param | ❌ HIGH |
|
|
45
|
-
| security | Missing certificate pinning on sensitive API endpoints | ⚠️ MEDIUM |
|
|
46
|
-
| mobile | Button `height: 20` — minimum touch target is 44pt (iOS) / 48dp (Android) | ❌ HIGH |
|
|
47
|
-
| mobile | Missing `<SafeAreaView>` on root screen component | ❌ HIGH |
|
|
48
|
-
| mobile | No `KeyboardAvoidingView` on screen with text inputs | ❌ HIGH |
|
|
49
|
-
| mobile | `<Image source={uri}>` with no width/height bounds — memory risk | ⚠️ MEDIUM |
|
|
50
|
-
| mobile | No `Platform.OS` guard on platform-specific code | ⚠️ MEDIUM |
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
## Mobile-Specific Anti-Hallucination Rules
|
|
48
|
+
## Verdict System
|
|
55
49
|
|
|
56
50
|
```
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
❌ Never skip keyboard avoidance on screens with text inputs
|
|
61
|
-
❌ Never use hardcoded pixel values — use pt (iOS) or dp (Android) logical units
|
|
62
|
-
❌ Never claim an animation approach is "performant" without mentioning native driver usage
|
|
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
|
|
63
54
|
```
|
|
64
55
|
|
|
65
56
|
---
|
|
66
57
|
|
|
67
|
-
## Output Format
|
|
68
|
-
|
|
69
|
-
```
|
|
70
|
-
━━━ Tribunal: Mobile ━━━━━━━━━━━━━━━━━━━━━
|
|
71
|
-
|
|
72
|
-
Active reviewers: logic · security · mobile
|
|
73
|
-
|
|
74
|
-
[Your code under review]
|
|
75
|
-
|
|
76
|
-
━━━ Verdicts ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
77
|
-
|
|
78
|
-
logic-reviewer: ✅ APPROVED
|
|
79
|
-
security-auditor: ⚠️ WARNING
|
|
80
|
-
mobile-reviewer: ❌ REJECTED
|
|
81
|
-
|
|
82
|
-
━━━ Issues ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
83
|
-
|
|
84
|
-
security-auditor:
|
|
85
|
-
⚠️ MEDIUM — Line 8
|
|
86
|
-
AsyncStorage used for auth token storage
|
|
87
|
-
Fix: Use expo-secure-store or react-native-keychain for sensitive data
|
|
88
|
-
|
|
89
|
-
mobile-reviewer:
|
|
90
|
-
❌ HIGH — Line 12
|
|
91
|
-
Touch target: Button height is 20pt. Minimum is 44pt (iOS) / 48dp (Android)
|
|
92
|
-
Fix: style={{ minHeight: 44 }}
|
|
93
|
-
|
|
94
|
-
❌ HIGH — Line 34
|
|
95
|
-
Missing SafeAreaView wrapping the root view
|
|
96
|
-
Fix: Wrap with <SafeAreaView style={{ flex: 1 }}>
|
|
97
|
-
|
|
98
|
-
━━━ Verdict: REJECTED ━━━━━━━━━━━━━━━━━━━━
|
|
99
|
-
|
|
100
|
-
Address rejections? Y = fix and re-review | N = accept risk | R = revise manually
|
|
101
|
-
```
|
|
102
|
-
|
|
103
58
|
---
|
|
104
59
|
|
|
105
|
-
##
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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
|
+
```
|
|
113
84
|
|
|
114
85
|
---
|
|
115
86
|
|
|
116
|
-
## Usage
|
|
87
|
+
## Usage Examples
|
|
117
88
|
|
|
118
89
|
```
|
|
119
|
-
/tribunal-mobile
|
|
120
|
-
/tribunal-mobile the
|
|
121
|
-
/tribunal-mobile the
|
|
122
|
-
/tribunal-mobile the
|
|
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
|
|
123
94
|
```
|