tribunal-kit 4.5.0 → 4.6.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/.shared/ui-ux-pro-max/README.md +4 -4
- package/.agent/ARCHITECTURE.md +279 -277
- package/.agent/GEMINI.md +127 -121
- package/.agent/agents/accessibility-reviewer.md +187 -187
- package/.agent/agents/ai-code-reviewer.md +199 -199
- package/.agent/agents/api-architect.md +71 -66
- package/.agent/agents/backend-specialist.md +219 -215
- package/.agent/agents/cloud-engineer.md +98 -0
- package/.agent/agents/code-archaeologist.md +168 -161
- package/.agent/agents/database-architect.md +184 -184
- package/.agent/agents/db-latency-auditor.md +213 -216
- package/.agent/agents/debugger.md +198 -191
- package/.agent/agents/dependency-reviewer.md +106 -103
- package/.agent/agents/devops-engineer.md +218 -218
- package/.agent/agents/documentation-writer.md +209 -201
- package/.agent/agents/explorer-agent.md +167 -160
- package/.agent/agents/frontend-reviewer.md +162 -160
- package/.agent/agents/frontend-specialist.md +257 -248
- package/.agent/agents/game-developer.md +48 -48
- package/.agent/agents/logic-reviewer.md +118 -116
- package/.agent/agents/mobile-developer.md +197 -200
- package/.agent/agents/mobile-reviewer.md +159 -162
- package/.agent/agents/orchestrator.md +187 -181
- package/.agent/agents/penetration-tester.md +160 -157
- package/.agent/agents/performance-optimizer.md +183 -183
- package/.agent/agents/performance-reviewer.md +178 -178
- package/.agent/agents/precedence-reviewer.md +251 -250
- package/.agent/agents/product-manager.md +149 -142
- package/.agent/agents/product-owner.md +81 -80
- package/.agent/agents/project-planner.md +152 -142
- package/.agent/agents/qa-automation-engineer.md +216 -225
- package/.agent/agents/resilience-reviewer.md +88 -88
- package/.agent/agents/schema-reviewer.md +67 -67
- package/.agent/agents/security-auditor.md +180 -174
- package/.agent/agents/seo-specialist.md +188 -193
- package/.agent/agents/sql-reviewer.md +159 -161
- package/.agent/agents/supervisor-agent.md +173 -184
- package/.agent/agents/swarm-worker-contracts.md +170 -166
- package/.agent/agents/swarm-worker-registry.md +92 -92
- package/.agent/agents/system-architect.md +85 -0
- package/.agent/agents/test-coverage-reviewer.md +158 -160
- package/.agent/agents/test-engineer.md +118 -118
- package/.agent/agents/throughput-optimizer.md +291 -299
- package/.agent/agents/type-safety-reviewer.md +182 -175
- package/.agent/agents/ui-ux-auditor.md +300 -292
- package/.agent/agents/vitals-reviewer.md +223 -223
- package/.agent/mcp_config.json +37 -40
- package/.agent/patterns/generator.md +11 -9
- package/.agent/patterns/inversion.md +14 -12
- package/.agent/patterns/pipeline.md +11 -9
- package/.agent/patterns/reviewer.md +15 -13
- package/.agent/patterns/tool-wrapper.md +11 -9
- package/.agent/routing_index.json +654 -0
- package/.agent/rules/GEMINI.md +358 -352
- package/.agent/scripts/compile_router.py +112 -0
- package/.agent/scripts/migrate_skills_frontmatter.py +64 -0
- package/.agent/scripts/strengthen_skills.js +1 -1
- package/.agent/skills/advanced-rag-pipelines/SKILL.md +56 -0
- package/.agent/skills/agent-organizer/SKILL.md +156 -150
- package/.agent/skills/agentic-patterns/SKILL.md +313 -315
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +190 -184
- package/.agent/skills/api-patterns/SKILL.md +253 -247
- package/.agent/skills/api-security-auditor/SKILL.md +195 -193
- package/.agent/skills/app-builder/SKILL.md +573 -572
- package/.agent/skills/app-builder/templates/SKILL.md +108 -115
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -76
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -92
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -88
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -88
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -83
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -90
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -90
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +126 -122
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +127 -122
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +172 -169
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +139 -134
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -83
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +122 -119
- package/.agent/skills/appflow-wireframe/SKILL.md +146 -145
- package/.agent/skills/architecture/SKILL.md +226 -219
- package/.agent/skills/authentication-best-practices/SKILL.md +197 -189
- package/.agent/skills/backend-security-expert/SKILL.md +16 -2
- package/.agent/skills/bash-linux/SKILL.md +179 -179
- package/.agent/skills/behavioral-modes/SKILL.md +239 -223
- package/.agent/skills/brainstorming/SKILL.md +498 -486
- package/.agent/skills/browser-native-ai/SKILL.md +57 -4
- package/.agent/skills/building-native-ui/SKILL.md +202 -202
- package/.agent/skills/cicd-pro/SKILL.md +442 -0
- package/.agent/skills/clean-code/SKILL.md +400 -381
- package/.agent/skills/cloud-architect/SKILL.md +439 -0
- package/.agent/skills/code-review-checklist/SKILL.md +203 -194
- package/.agent/skills/config-validator/SKILL.md +165 -165
- package/.agent/skills/containerization-pro/SKILL.md +452 -0
- package/.agent/skills/csharp-developer/SKILL.md +518 -518
- package/.agent/skills/data-validation-schemas/SKILL.md +333 -328
- package/.agent/skills/database-design/SKILL.md +247 -240
- package/.agent/skills/deployment-procedures/SKILL.md +172 -169
- package/.agent/skills/devops-engineer/SKILL.md +345 -345
- package/.agent/skills/devops-incident-responder/SKILL.md +143 -137
- package/.agent/skills/doc.md +209 -177
- package/.agent/skills/documentation-templates/SKILL.md +291 -279
- package/.agent/skills/edge-computing/SKILL.md +183 -181
- package/.agent/skills/error-resilience/SKILL.md +411 -428
- package/.agent/skills/extract-design-system/SKILL.md +160 -158
- package/.agent/skills/framer-motion-expert/SKILL.md +253 -244
- package/.agent/skills/frontend-design/SKILL.md +208 -201
- package/.agent/skills/frontend-security-expert/SKILL.md +16 -3
- package/.agent/skills/game-design-expert/SKILL.md +132 -129
- package/.agent/skills/game-engineering-expert/SKILL.md +148 -146
- package/.agent/skills/generative-ui-expert/SKILL.md +57 -1
- package/.agent/skills/geo-fundamentals/SKILL.md +148 -147
- package/.agent/skills/git-pro/SKILL.md +435 -0
- package/.agent/skills/github-operations/SKILL.md +335 -329
- package/.agent/skills/gsap-core/SKILL.md +319 -308
- package/.agent/skills/gsap-frameworks/SKILL.md +213 -207
- package/.agent/skills/gsap-performance/SKILL.md +139 -133
- package/.agent/skills/gsap-plugins/SKILL.md +486 -480
- package/.agent/skills/gsap-react/SKILL.md +202 -189
- package/.agent/skills/gsap-scrolltrigger/SKILL.md +357 -350
- package/.agent/skills/gsap-timeline/SKILL.md +165 -161
- package/.agent/skills/gsap-utils/SKILL.md +344 -338
- package/.agent/skills/harness-protocol/SKILL.md +48 -0
- package/.agent/skills/i18n-localization/SKILL.md +174 -163
- package/.agent/skills/intelligent-routing/SKILL.md +202 -246
- package/.agent/skills/knowledge-graph/SKILL.md +60 -52
- package/.agent/skills/lint-and-validate/SKILL.md +261 -261
- package/.agent/skills/llm-engineering/SKILL.md +400 -394
- package/.agent/skills/local-first/SKILL.md +178 -178
- package/.agent/skills/mcp-builder/SKILL.md +143 -142
- package/.agent/skills/mobile-design/SKILL.md +272 -263
- package/.agent/skills/monorepo-management/SKILL.md +335 -334
- package/.agent/skills/motion-engineering/SKILL.md +266 -234
- package/.agent/skills/nextjs-react-expert/SKILL.md +236 -234
- package/.agent/skills/nodejs-best-practices/SKILL.md +547 -548
- package/.agent/skills/observability/SKILL.md +343 -343
- package/.agent/skills/parallel-agents/SKILL.md +143 -146
- package/.agent/skills/performance-profiling/SKILL.md +259 -267
- package/.agent/skills/plan-writing/SKILL.md +150 -142
- package/.agent/skills/platform-engineer/SKILL.md +148 -147
- package/.agent/skills/playwright-best-practices/SKILL.md +188 -187
- package/.agent/skills/powershell-windows/SKILL.md +162 -162
- package/.agent/skills/project-idioms/SKILL.md +137 -137
- package/.agent/skills/python-patterns/SKILL.md +260 -259
- package/.agent/skills/python-pro/SKILL.md +324 -323
- package/.agent/skills/react-specialist/SKILL.md +305 -277
- package/.agent/skills/readme-builder/SKILL.md +310 -300
- package/.agent/skills/realtime-patterns/SKILL.md +323 -319
- package/.agent/skills/red-team-tactics/SKILL.md +231 -218
- package/.agent/skills/rust-pro/SKILL.md +671 -673
- package/.agent/skills/seo-fundamentals/SKILL.md +179 -179
- package/.agent/skills/server-management/SKILL.md +218 -214
- package/.agent/skills/shadcn-ui-expert/SKILL.md +231 -231
- package/.agent/skills/skill-creator/SKILL.md +87 -86
- package/.agent/skills/sql-pro/SKILL.md +629 -629
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +97 -97
- package/.agent/skills/swiftui-expert/SKILL.md +204 -201
- package/.agent/skills/system-design-pro/SKILL.md +345 -0
- package/.agent/skills/systematic-debugging/SKILL.md +153 -142
- package/.agent/skills/tailwind-patterns/SKILL.md +610 -566
- package/.agent/skills/tdd-workflow/SKILL.md +169 -161
- package/.agent/skills/test-result-analyzer/SKILL.md +313 -309
- package/.agent/skills/testing-patterns/SKILL.md +566 -579
- package/.agent/skills/trend-researcher/SKILL.md +243 -237
- package/.agent/skills/typescript-advanced/SKILL.md +336 -335
- package/.agent/skills/ui-ux-pro-max/SKILL.md +590 -562
- package/.agent/skills/ui-ux-researcher/SKILL.md +244 -244
- package/.agent/skills/vue-expert/SKILL.md +294 -275
- package/.agent/skills/vulnerability-scanner/SKILL.md +416 -404
- package/.agent/skills/web-accessibility-auditor/SKILL.md +219 -218
- package/.agent/skills/web-design-guidelines/SKILL.md +192 -186
- package/.agent/skills/webapp-testing/SKILL.md +167 -169
- package/.agent/skills/webgpu-performance/SKILL.md +56 -2
- package/.agent/skills/whimsy-injector/SKILL.md +346 -325
- package/.agent/skills/workflow-optimizer/SKILL.md +231 -229
- package/.agent/workflows/acf.md +141 -0
- package/.agent/workflows/api-tester.md +176 -151
- package/.agent/workflows/audit.md +150 -127
- package/.agent/workflows/brainstorm.md +134 -110
- package/.agent/workflows/changelog.md +140 -112
- package/.agent/workflows/create.md +168 -124
- package/.agent/workflows/debug.md +190 -165
- package/.agent/workflows/deploy.md +201 -180
- package/.agent/workflows/enhance.md +154 -128
- package/.agent/workflows/fix.md +136 -114
- package/.agent/workflows/generate.md +198 -183
- package/.agent/workflows/marathon.md +37 -11
- package/.agent/workflows/migrate.md +184 -160
- package/.agent/workflows/orchestrate.md +192 -168
- package/.agent/workflows/performance-benchmarker.md +135 -114
- package/.agent/workflows/plan.md +196 -173
- package/.agent/workflows/preview.md +103 -80
- package/.agent/workflows/refactor.md +192 -161
- package/.agent/workflows/review-ai.md +125 -101
- package/.agent/workflows/review.md +141 -116
- package/.agent/workflows/session.md +122 -94
- package/.agent/workflows/status.md +101 -79
- package/.agent/workflows/strengthen-skills.md +164 -138
- package/.agent/workflows/super-prompt.md +24 -0
- package/.agent/workflows/swarm.md +193 -179
- package/.agent/workflows/test.md +211 -189
- package/.agent/workflows/tribunal-backend.md +136 -105
- package/.agent/workflows/tribunal-database.md +122 -95
- package/.agent/workflows/tribunal-frontend.md +221 -96
- package/.agent/workflows/tribunal-full.md +129 -100
- package/.agent/workflows/tribunal-mobile.md +122 -95
- package/.agent/workflows/tribunal-performance.md +136 -110
- package/.agent/workflows/tribunal-speed.md +209 -183
- package/.agent/workflows/ui-ux-pro-max.md +145 -122
- package/README.md +107 -55
- package/bin/mcp-server.js +159 -0
- package/bin/tribunal-kit.js +105 -29
- package/bin/wrapper.js +16 -7
- package/mcp_config.json +9 -0
- package/package.json +94 -86
- package/scripts/changelog.js +4 -3
- package/scripts/validate-payload.js +6 -1
- package/scripts/postinstall.js +0 -127
|
@@ -1,281 +1,307 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: react-specialist
|
|
3
|
-
description: React 19+ specialist. use(), useActionState, useOptimistic, React Compiler, Server/Client Components, Zustand/Jotai, React Query. Use when building components, managing state, optimizing renders.
|
|
4
|
-
allowed-tools: Read, Write, Edit, Glob, Grep
|
|
5
|
-
version: 3.1.0
|
|
6
|
-
last-updated: 2026-04-06
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
- ❌ `
|
|
17
|
-
- ❌
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
// Reads
|
|
32
|
-
function
|
|
33
|
-
|
|
34
|
-
return <
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
### `
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
###
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
###
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
- ✅ Mock server calls with MSW (Mock Service Worker)
|
|
227
|
-
- ❌ Never test internal state, ref values, or component instances
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
---
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
235
|
-
|
|
236
|
-
1. **Over-engineering:** Proposing complex abstractions or distributed systems when a simpler approach suffices.
|
|
237
|
-
2. **Hallucinated Libraries/Methods:** Using non-existent methods or packages. Always `// VERIFY` or check `package.json` / `requirements.txt`.
|
|
238
|
-
3. **Skipping Edge Cases:** Writing the "happy path" and ignoring error handling, timeouts, or data validation.
|
|
239
|
-
4. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
240
|
-
5. **Silent Degradation:** Catching and suppressing errors without logging or re-raising.
|
|
241
|
-
|
|
242
|
-
---
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
**Slash command: `/review` or `/tribunal-full`**
|
|
247
|
-
**Active reviewers: `logic-reviewer` · `security-auditor`**
|
|
248
|
-
|
|
249
|
-
### ❌ Forbidden AI Tropes
|
|
250
|
-
|
|
251
|
-
1. **Blind Assumptions:** Never make an assumption without documenting it clearly with `// VERIFY: [reason]`.
|
|
252
|
-
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
253
|
-
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
Review these questions before confirming output:
|
|
258
|
-
```
|
|
259
|
-
✅ Did I rely ONLY on real, verified tools and methods?
|
|
260
|
-
✅ Is this solution appropriately scoped to the user's constraints?
|
|
261
|
-
✅ Did I handle potential failure modes and edge cases?
|
|
262
|
-
✅ Have I avoided generic boilerplate that doesn't add value?
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
### 🛑 Verification-Before-Completion (VBC) Protocol
|
|
266
|
-
|
|
267
|
-
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
268
|
-
- ❌ **Forbidden:** Declaring a task complete because the output "looks correct."
|
|
269
|
-
- ✅ **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.
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
## Pre-Flight Checklist
|
|
273
|
-
- [ ] Have I reviewed the user's specific constraints and requests?
|
|
274
|
-
- [ ] Have I checked the environment for relevant existing implementations?
|
|
275
|
-
|
|
276
|
-
## VBC Protocol (Verification-Before-Completion)
|
|
277
|
-
You MUST verify existing code signatures and variables before attempting to modify or call them. No hallucination is permitted.
|
|
1
|
+
---
|
|
2
|
+
name: react-specialist
|
|
3
|
+
description: React 19+ specialist. use(), useActionState, useOptimistic, React Compiler, Server/Client Components, Zustand/Jotai, React Query. Use when building components, managing state, optimizing renders.
|
|
4
|
+
allowed-tools: Read, Write, Edit, Glob, Grep
|
|
5
|
+
version: 3.1.0
|
|
6
|
+
last-updated: 2026-04-06
|
|
7
|
+
routing:
|
|
8
|
+
domain: general
|
|
9
|
+
tier: basic
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# React 19+ — Dense Reference
|
|
13
|
+
|
|
14
|
+
## Hallucination Traps (Read First)
|
|
15
|
+
|
|
16
|
+
- ❌ `useFormState` → ✅ `useActionState` (stable name)
|
|
17
|
+
- ❌ `useContext()` in conditionals → ✅ `use(Context)` CAN be conditional
|
|
18
|
+
- ❌ `useMemo/useCallback/React.memo` in React 19+ projects → ✅ React Compiler handles this
|
|
19
|
+
- ❌ `exitBeforeEnter` (Framer) → ✅ `mode="wait"` on `<AnimatePresence>`
|
|
20
|
+
- ❌ `next/router` → ✅ `next/navigation` in App Router
|
|
21
|
+
- ❌ Server Components using `useState/useEffect` → must be `"use client"`
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## React 19 Core APIs
|
|
26
|
+
|
|
27
|
+
### `use()` — Replaces many useEffect patterns
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
import { use } from "react";
|
|
31
|
+
// Reads promises (suspends until resolved)
|
|
32
|
+
function UserProfile({ userPromise }: { userPromise: Promise<User> }) {
|
|
33
|
+
const user = use(userPromise); // suspends
|
|
34
|
+
return <h1>{user.name}</h1>;
|
|
35
|
+
}
|
|
36
|
+
// Reads context — CAN be called conditionally (unlike useContext)
|
|
37
|
+
function Admin({ isAdmin }: { isAdmin: boolean }) {
|
|
38
|
+
if (isAdmin) return <Panel theme={use(ThemeContext)} />;
|
|
39
|
+
return <PublicPanel />;
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### `useActionState` — Form actions with state
|
|
44
|
+
|
|
45
|
+
```tsx
|
|
46
|
+
import { useActionState } from "react"; // NOT useFormState
|
|
47
|
+
|
|
48
|
+
async function submitForm(prevState: FormState, formData: FormData) {
|
|
49
|
+
const email = formData.get("email") as string;
|
|
50
|
+
if (!email.includes("@")) return { error: "Invalid email" };
|
|
51
|
+
await saveToDatabase(email);
|
|
52
|
+
return { error: null, success: true };
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function SignupForm() {
|
|
56
|
+
const [state, formAction, isPending] = useActionState(submitForm, { error: null });
|
|
57
|
+
return (
|
|
58
|
+
<form action={formAction}>
|
|
59
|
+
<input name="email" disabled={isPending} />
|
|
60
|
+
{state.error && <p>{state.error}</p>}
|
|
61
|
+
<button disabled={isPending}>{isPending ? "Saving..." : "Submit"}</button>
|
|
62
|
+
</form>
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### `useOptimistic` — Instant UI feedback
|
|
68
|
+
|
|
69
|
+
```tsx
|
|
70
|
+
import { useOptimistic } from "react";
|
|
71
|
+
function TodoList({ todos }: { todos: Todo[] }) {
|
|
72
|
+
const [optimistic, addOptimistic] = useOptimistic(todos, (current, newTodo: Todo) => [...current, newTodo]);
|
|
73
|
+
async function handleAdd(formData: FormData) {
|
|
74
|
+
addOptimistic({ id: crypto.randomUUID(), title: formData.get("title"), pending: true });
|
|
75
|
+
await saveTodo(formData.get("title") as string);
|
|
76
|
+
}
|
|
77
|
+
return (
|
|
78
|
+
<form action={handleAdd}>
|
|
79
|
+
{optimistic.map((t) => (
|
|
80
|
+
<li key={t.id} style={{ opacity: t.pending ? 0.5 : 1 }}>
|
|
81
|
+
{t.title}
|
|
82
|
+
</li>
|
|
83
|
+
))}
|
|
84
|
+
</form>
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### `useFormStatus` — Button pending state (must be INSIDE `<form>`)
|
|
90
|
+
|
|
91
|
+
```tsx
|
|
92
|
+
import { useFormStatus } from "react-dom";
|
|
93
|
+
// ❌ TRAP: Cannot be called in the same component as <form>
|
|
94
|
+
function SubmitButton() {
|
|
95
|
+
const { pending } = useFormStatus(); // reads nearest parent form
|
|
96
|
+
return <button disabled={pending}>{pending ? "Saving..." : "Save"}</button>;
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### `useTransition` — Non-blocking updates (React 19: supports async)
|
|
101
|
+
|
|
102
|
+
```tsx
|
|
103
|
+
const [isPending, startTransition] = useTransition();
|
|
104
|
+
startTransition(async () => {
|
|
105
|
+
const data = await search(query); // async supported in React 19 only
|
|
106
|
+
setResults(data);
|
|
107
|
+
});
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### `useDeferredValue` — Stale-while-rerender
|
|
111
|
+
|
|
112
|
+
```tsx
|
|
113
|
+
const deferredQuery = useDeferredValue(query);
|
|
114
|
+
const isStale = query !== deferredQuery;
|
|
115
|
+
return (
|
|
116
|
+
<div style={{ opacity: isStale ? 0.6 : 1 }}>
|
|
117
|
+
<ExpensiveList query={deferredQuery} />
|
|
118
|
+
</div>
|
|
119
|
+
);
|
|
120
|
+
// React 19: useDeferredValue(value, initialFallback) — 2-arg form
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## React Compiler (React 19)
|
|
126
|
+
|
|
127
|
+
- Auto-memoizes components/values/callbacks. **Don't manually memoize in React 19 projects.**
|
|
128
|
+
- ❌ `useMemo(() => calc(a), [a])` / `useCallback(fn, [id])` / `React.memo(Comp)` — legacy
|
|
129
|
+
- ✅ Write plain functions/values. Compiler optimizes automatically.
|
|
130
|
+
- Exception: still use manual memo if compiler is explicitly disabled in config.
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Component Patterns
|
|
135
|
+
|
|
136
|
+
### Compound Components (shared state via context)
|
|
137
|
+
|
|
138
|
+
```tsx
|
|
139
|
+
const TabsContext = createContext<{ active: string; setActive: (id: string) => void } | null>(null);
|
|
140
|
+
function Tabs({ children, defaultTab }: { children: ReactNode; defaultTab: string }) {
|
|
141
|
+
const [active, setActive] = useState(defaultTab);
|
|
142
|
+
return (
|
|
143
|
+
<TabsContext value={{ active, setActive }}>
|
|
144
|
+
<div>{children}</div>
|
|
145
|
+
</TabsContext>
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
function Tab({ id, children }: { id: string; children: ReactNode }) {
|
|
149
|
+
const ctx = use(TabsContext)!;
|
|
150
|
+
return (
|
|
151
|
+
<button onClick={() => ctx.setActive(id)} aria-selected={ctx.active === id}>
|
|
152
|
+
{children}
|
|
153
|
+
</button>
|
|
154
|
+
);
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Render Props / Higher Order Hooks
|
|
159
|
+
|
|
160
|
+
Prefer custom hooks over render props for modern React.
|
|
161
|
+
|
|
162
|
+
### Context Performance Pattern
|
|
163
|
+
|
|
164
|
+
```tsx
|
|
165
|
+
// Split context — prevents all consumers from re-rendering on every change
|
|
166
|
+
const CountStateCtx = createContext<number>(0);
|
|
167
|
+
const CountDispatchCtx = createContext<Dispatch<Action>>(() => {});
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## State Management
|
|
173
|
+
|
|
174
|
+
### Zustand (preferred for global state)
|
|
175
|
+
|
|
176
|
+
```tsx
|
|
177
|
+
import { create } from "zustand";
|
|
178
|
+
import { persist } from "zustand/middleware";
|
|
179
|
+
const useStore = create<Store>()(
|
|
180
|
+
persist(
|
|
181
|
+
(set, get) => ({
|
|
182
|
+
count: 0,
|
|
183
|
+
increment: () => set((s) => ({ count: s.count + 1 })),
|
|
184
|
+
getDoubled: () => get().count * 2,
|
|
185
|
+
}),
|
|
186
|
+
{ name: "my-store" },
|
|
187
|
+
),
|
|
188
|
+
);
|
|
189
|
+
// ❌ TRAP: Do NOT destructure the whole store — causes re-render on every change
|
|
190
|
+
// ✅ const count = useStore(s => s.count); // selector
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Jotai (preferred for derived/atomic state)
|
|
194
|
+
|
|
195
|
+
```tsx
|
|
196
|
+
import { atom, useAtom, useAtomValue, useSetAtom } from "jotai";
|
|
197
|
+
const countAtom = atom(0);
|
|
198
|
+
const doubledAtom = atom((get) => get(countAtom) * 2); // derived atom
|
|
199
|
+
// ❌ TRAP: atomWithStorage is from jotai/utils — NOT from jotai
|
|
200
|
+
import { atomWithStorage } from "jotai/utils";
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### React Query / TanStack Query
|
|
204
|
+
|
|
205
|
+
```tsx
|
|
206
|
+
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
|
|
207
|
+
const { data, isPending, error } = useQuery({
|
|
208
|
+
queryKey: ["user", userId],
|
|
209
|
+
queryFn: () => fetchUser(userId),
|
|
210
|
+
staleTime: 5 * 60 * 1000, // don't refetch for 5 minutes
|
|
211
|
+
});
|
|
212
|
+
// Optimistic update:
|
|
213
|
+
const qc = useQueryClient();
|
|
214
|
+
const mutation = useMutation({
|
|
215
|
+
mutationFn: updateUser,
|
|
216
|
+
onMutate: async (newUser) => {
|
|
217
|
+
await qc.cancelQueries({ queryKey: ["user", newUser.id] });
|
|
218
|
+
const prev = qc.getQueryData(["user", newUser.id]);
|
|
219
|
+
qc.setQueryData(["user", newUser.id], newUser);
|
|
220
|
+
return { prev };
|
|
221
|
+
},
|
|
222
|
+
onError: (_, __, ctx) => qc.setQueryData(["user"], ctx?.prev),
|
|
223
|
+
onSettled: () => qc.invalidateQueries({ queryKey: ["user"] }),
|
|
224
|
+
});
|
|
225
|
+
```
|
|
278
226
|
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Performance
|
|
230
|
+
|
|
231
|
+
| Technique | When |
|
|
232
|
+
| -------------------------------------- | ------------------------------------------ |
|
|
233
|
+
| `useDeferredValue` | Expensive derived render (charts, filters) |
|
|
234
|
+
| `useTransition` | Page nav, tab switches, data load |
|
|
235
|
+
| `lazy()` + `Suspense` | Code-split heavy components |
|
|
236
|
+
| `<Virtuoso>` / `<WindowVirtualizer>` | Lists > 200 items |
|
|
237
|
+
| Avoid `useEffect` for state transforms | Use `useMemo` or derived atoms |
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Refs & DOM
|
|
242
|
+
|
|
243
|
+
```tsx
|
|
244
|
+
// React 19: ref is now a prop (no forwardRef needed)
|
|
245
|
+
function Input({ ref, ...props }: ComponentProps<"input"> & { ref?: Ref<HTMLInputElement> }) {
|
|
246
|
+
return <input ref={ref} {...props} />;
|
|
247
|
+
}
|
|
248
|
+
// ❌ TRAP: forwardRef is deprecated in React 19 — still works but not needed
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## Testing Checklist
|
|
254
|
+
|
|
255
|
+
- ✅ Use React Testing Library — test behavior, not implementation
|
|
256
|
+
- ✅ `userEvent` over `fireEvent` (async, closer to real interaction)
|
|
257
|
+
- ✅ Mock server calls with MSW (Mock Service Worker)
|
|
258
|
+
- ❌ Never test internal state, ref values, or component instances
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
263
|
+
|
|
264
|
+
1. **Over-engineering:** Proposing complex abstractions or distributed systems when a simpler approach suffices.
|
|
265
|
+
2. **Hallucinated Libraries/Methods:** Using non-existent methods or packages. Always `// VERIFY` or check `package.json` / `requirements.txt`.
|
|
266
|
+
3. **Skipping Edge Cases:** Writing the "happy path" and ignoring error handling, timeouts, or data validation.
|
|
267
|
+
4. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
268
|
+
5. **Silent Degradation:** Catching and suppressing errors without logging or re-raising.
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
**Slash command: `/review` or `/tribunal-full`**
|
|
273
|
+
**Active reviewers: `logic-reviewer` · `security-auditor`**
|
|
274
|
+
|
|
275
|
+
### ❌ Forbidden AI Tropes
|
|
276
|
+
|
|
277
|
+
1. **Blind Assumptions:** Never make an assumption without documenting it clearly with `// VERIFY: [reason]`.
|
|
278
|
+
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
279
|
+
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
280
|
+
|
|
281
|
+
Review these questions before confirming output:
|
|
282
|
+
|
|
283
|
+
```
|
|
284
|
+
✅ Did I rely ONLY on real, verified tools and methods?
|
|
285
|
+
✅ Is this solution appropriately scoped to the user's constraints?
|
|
286
|
+
✅ Did I handle potential failure modes and edge cases?
|
|
287
|
+
✅ Have I avoided generic boilerplate that doesn't add value?
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### 🛑 Verification-Before-Completion (VBC) Protocol
|
|
291
|
+
|
|
292
|
+
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
293
|
+
|
|
294
|
+
- ❌ **Forbidden:** Declaring a task complete because the output "looks correct."
|
|
295
|
+
- ✅ **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.
|
|
296
|
+
|
|
297
|
+
## Pre-Flight Checklist
|
|
298
|
+
|
|
299
|
+
- [ ] Have I reviewed the user's specific constraints and requests?
|
|
300
|
+
- [ ] Have I checked the environment for relevant existing implementations?
|
|
301
|
+
|
|
302
|
+
## VBC Protocol (Verification-Before-Completion)
|
|
303
|
+
|
|
304
|
+
You MUST verify existing code signatures and variables before attempting to modify or call them. No hallucination is permitted.
|
|
279
305
|
|
|
280
306
|
---
|
|
281
307
|
|
|
@@ -305,6 +331,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
305
331
|
### ✅ Pre-Flight Self-Audit
|
|
306
332
|
|
|
307
333
|
Review these questions before confirming output:
|
|
334
|
+
|
|
308
335
|
```
|
|
309
336
|
✅ Did I rely ONLY on real, verified tools and methods?
|
|
310
337
|
✅ Is this solution appropriately scoped to the user's constraints?
|
|
@@ -315,5 +342,6 @@ Review these questions before confirming output:
|
|
|
315
342
|
### 🛑 Verification-Before-Completion (VBC) Protocol
|
|
316
343
|
|
|
317
344
|
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
345
|
+
|
|
318
346
|
- ❌ **Forbidden:** Declaring a task complete because the output "looks correct."
|
|
319
347
|
- ✅ **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.
|