tribunal-kit 3.0.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/.agent/ARCHITECTURE.md +99 -99
  2. package/.agent/GEMINI.md +52 -52
  3. package/.agent/agents/accessibility-reviewer.md +187 -220
  4. package/.agent/agents/ai-code-reviewer.md +199 -233
  5. package/.agent/agents/backend-specialist.md +215 -238
  6. package/.agent/agents/code-archaeologist.md +161 -181
  7. package/.agent/agents/database-architect.md +184 -207
  8. package/.agent/agents/debugger.md +191 -218
  9. package/.agent/agents/dependency-reviewer.md +103 -136
  10. package/.agent/agents/devops-engineer.md +218 -238
  11. package/.agent/agents/documentation-writer.md +201 -221
  12. package/.agent/agents/explorer-agent.md +160 -180
  13. package/.agent/agents/frontend-reviewer.md +160 -194
  14. package/.agent/agents/frontend-specialist.md +248 -237
  15. package/.agent/agents/game-developer.md +48 -52
  16. package/.agent/agents/logic-reviewer.md +116 -149
  17. package/.agent/agents/mobile-developer.md +200 -223
  18. package/.agent/agents/mobile-reviewer.md +162 -195
  19. package/.agent/agents/orchestrator.md +181 -211
  20. package/.agent/agents/penetration-tester.md +157 -174
  21. package/.agent/agents/performance-optimizer.md +183 -203
  22. package/.agent/agents/performance-reviewer.md +178 -211
  23. package/.agent/agents/precedence-reviewer.md +213 -0
  24. package/.agent/agents/product-manager.md +142 -162
  25. package/.agent/agents/product-owner.md +6 -25
  26. package/.agent/agents/project-planner.md +142 -162
  27. package/.agent/agents/qa-automation-engineer.md +225 -242
  28. package/.agent/agents/security-auditor.md +174 -194
  29. package/.agent/agents/seo-specialist.md +193 -213
  30. package/.agent/agents/sql-reviewer.md +161 -194
  31. package/.agent/agents/supervisor-agent.md +184 -203
  32. package/.agent/agents/swarm-worker-contracts.md +17 -17
  33. package/.agent/agents/swarm-worker-registry.md +46 -46
  34. package/.agent/agents/test-coverage-reviewer.md +160 -193
  35. package/.agent/agents/test-engineer.md +0 -21
  36. package/.agent/agents/type-safety-reviewer.md +175 -208
  37. package/.agent/patterns/generator.md +9 -9
  38. package/.agent/patterns/inversion.md +12 -12
  39. package/.agent/patterns/pipeline.md +9 -9
  40. package/.agent/patterns/reviewer.md +13 -13
  41. package/.agent/patterns/tool-wrapper.md +9 -9
  42. package/.agent/rules/GEMINI.md +63 -63
  43. package/.agent/scripts/append_flow.js +72 -0
  44. package/.agent/scripts/case_law_manager.py +525 -0
  45. package/.agent/scripts/compress_skills.py +167 -0
  46. package/.agent/scripts/consolidate_skills.py +173 -0
  47. package/.agent/scripts/deep_compress.py +202 -0
  48. package/.agent/scripts/minify_context.py +80 -0
  49. package/.agent/scripts/security_scan.py +1 -1
  50. package/.agent/scripts/skill_evolution.py +563 -0
  51. package/.agent/scripts/strip_tribunal.py +41 -0
  52. package/.agent/skills/agent-organizer/SKILL.md +100 -126
  53. package/.agent/skills/agentic-patterns/SKILL.md +0 -70
  54. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +134 -160
  55. package/.agent/skills/api-patterns/SKILL.md +123 -215
  56. package/.agent/skills/api-security-auditor/SKILL.md +143 -177
  57. package/.agent/skills/app-builder/SKILL.md +334 -50
  58. package/.agent/skills/app-builder/templates/SKILL.md +13 -15
  59. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +16 -16
  60. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +22 -22
  61. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +18 -18
  62. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +20 -20
  63. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +17 -17
  64. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +18 -18
  65. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +21 -21
  66. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +19 -19
  67. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +26 -26
  68. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +26 -26
  69. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +19 -19
  70. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +18 -18
  71. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +20 -20
  72. package/.agent/skills/appflow-wireframe/SKILL.md +95 -121
  73. package/.agent/skills/architecture/SKILL.md +169 -331
  74. package/.agent/skills/authentication-best-practices/SKILL.md +139 -173
  75. package/.agent/skills/bash-linux/SKILL.md +129 -154
  76. package/.agent/skills/behavioral-modes/SKILL.md +8 -69
  77. package/.agent/skills/brainstorming/SKILL.md +436 -104
  78. package/.agent/skills/building-native-ui/SKILL.md +152 -174
  79. package/.agent/skills/clean-code/SKILL.md +331 -360
  80. package/.agent/skills/code-review-checklist/SKILL.md +0 -62
  81. package/.agent/skills/config-validator/SKILL.md +115 -141
  82. package/.agent/skills/csharp-developer/SKILL.md +468 -528
  83. package/.agent/skills/database-design/SKILL.md +104 -369
  84. package/.agent/skills/deployment-procedures/SKILL.md +119 -145
  85. package/.agent/skills/devops-engineer/SKILL.md +295 -332
  86. package/.agent/skills/devops-incident-responder/SKILL.md +87 -113
  87. package/.agent/skills/doc.md +5 -5
  88. package/.agent/skills/documentation-templates/SKILL.md +27 -63
  89. package/.agent/skills/edge-computing/SKILL.md +131 -157
  90. package/.agent/skills/extract-design-system/SKILL.md +108 -134
  91. package/.agent/skills/framer-motion-expert/SKILL.md +111 -855
  92. package/.agent/skills/frontend-design/SKILL.md +151 -499
  93. package/.agent/skills/game-design-expert/SKILL.md +79 -105
  94. package/.agent/skills/game-engineering-expert/SKILL.md +96 -122
  95. package/.agent/skills/geo-fundamentals/SKILL.md +97 -124
  96. package/.agent/skills/github-operations/SKILL.md +279 -314
  97. package/.agent/skills/gsap-expert/SKILL.md +119 -826
  98. package/.agent/skills/i18n-localization/SKILL.md +113 -138
  99. package/.agent/skills/intelligent-routing/SKILL.md +167 -127
  100. package/.agent/skills/lint-and-validate/SKILL.md +16 -52
  101. package/.agent/skills/llm-engineering/SKILL.md +344 -357
  102. package/.agent/skills/local-first/SKILL.md +128 -154
  103. package/.agent/skills/mcp-builder/SKILL.md +92 -118
  104. package/.agent/skills/mobile-design/SKILL.md +213 -219
  105. package/.agent/skills/motion-engineering/SKILL.md +184 -0
  106. package/.agent/skills/nextjs-react-expert/SKILL.md +99 -698
  107. package/.agent/skills/nodejs-best-practices/SKILL.md +498 -559
  108. package/.agent/skills/observability/SKILL.md +293 -330
  109. package/.agent/skills/parallel-agents/SKILL.md +96 -122
  110. package/.agent/skills/performance-profiling/SKILL.md +217 -254
  111. package/.agent/skills/plan-writing/SKILL.md +92 -118
  112. package/.agent/skills/platform-engineer/SKILL.md +97 -123
  113. package/.agent/skills/playwright-best-practices/SKILL.md +137 -162
  114. package/.agent/skills/powershell-windows/SKILL.md +112 -146
  115. package/.agent/skills/project-idioms/SKILL.md +87 -0
  116. package/.agent/skills/python-patterns/SKILL.md +15 -35
  117. package/.agent/skills/python-pro/SKILL.md +148 -754
  118. package/.agent/skills/react-specialist/SKILL.md +123 -827
  119. package/.agent/skills/readme-builder/SKILL.md +23 -85
  120. package/.agent/skills/realtime-patterns/SKILL.md +269 -304
  121. package/.agent/skills/red-team-tactics/SKILL.md +18 -51
  122. package/.agent/skills/rust-pro/SKILL.md +623 -701
  123. package/.agent/skills/seo-fundamentals/SKILL.md +129 -154
  124. package/.agent/skills/server-management/SKILL.md +164 -190
  125. package/.agent/skills/shadcn-ui-expert/SKILL.md +181 -206
  126. package/.agent/skills/skill-creator/SKILL.md +24 -56
  127. package/.agent/skills/sql-pro/SKILL.md +579 -633
  128. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +35 -66
  129. package/.agent/skills/swiftui-expert/SKILL.md +151 -176
  130. package/.agent/skills/systematic-debugging/SKILL.md +92 -118
  131. package/.agent/skills/tailwind-patterns/SKILL.md +516 -576
  132. package/.agent/skills/tdd-workflow/SKILL.md +111 -137
  133. package/.agent/skills/test-result-analyzer/SKILL.md +33 -73
  134. package/.agent/skills/testing-patterns/SKILL.md +512 -573
  135. package/.agent/skills/trend-researcher/SKILL.md +30 -71
  136. package/.agent/skills/ui-ux-pro-max/SKILL.md +8 -41
  137. package/.agent/skills/ui-ux-researcher/SKILL.md +51 -91
  138. package/.agent/skills/vue-expert/SKILL.md +127 -866
  139. package/.agent/skills/vulnerability-scanner/SKILL.md +354 -269
  140. package/.agent/skills/web-accessibility-auditor/SKILL.md +168 -193
  141. package/.agent/skills/web-design-guidelines/SKILL.md +25 -61
  142. package/.agent/skills/webapp-testing/SKILL.md +119 -145
  143. package/.agent/skills/whimsy-injector/SKILL.md +58 -132
  144. package/.agent/skills/workflow-optimizer/SKILL.md +28 -68
  145. package/.agent/workflows/api-tester.md +151 -151
  146. package/.agent/workflows/audit.md +127 -138
  147. package/.agent/workflows/brainstorm.md +110 -110
  148. package/.agent/workflows/changelog.md +112 -112
  149. package/.agent/workflows/create.md +124 -124
  150. package/.agent/workflows/debug.md +165 -189
  151. package/.agent/workflows/deploy.md +180 -189
  152. package/.agent/workflows/enhance.md +128 -151
  153. package/.agent/workflows/fix.md +114 -135
  154. package/.agent/workflows/generate.md +13 -4
  155. package/.agent/workflows/migrate.md +160 -160
  156. package/.agent/workflows/orchestrate.md +168 -168
  157. package/.agent/workflows/performance-benchmarker.md +114 -123
  158. package/.agent/workflows/plan.md +173 -173
  159. package/.agent/workflows/preview.md +80 -80
  160. package/.agent/workflows/refactor.md +161 -183
  161. package/.agent/workflows/review-ai.md +101 -129
  162. package/.agent/workflows/review.md +116 -116
  163. package/.agent/workflows/session.md +94 -94
  164. package/.agent/workflows/status.md +79 -79
  165. package/.agent/workflows/strengthen-skills.md +138 -139
  166. package/.agent/workflows/swarm.md +179 -179
  167. package/.agent/workflows/test.md +189 -211
  168. package/.agent/workflows/tribunal-backend.md +94 -113
  169. package/.agent/workflows/tribunal-database.md +95 -115
  170. package/.agent/workflows/tribunal-frontend.md +96 -118
  171. package/.agent/workflows/tribunal-full.md +93 -133
  172. package/.agent/workflows/tribunal-mobile.md +95 -119
  173. package/.agent/workflows/tribunal-performance.md +110 -133
  174. package/.agent/workflows/ui-ux-pro-max.md +122 -143
  175. package/README.md +30 -1
  176. package/bin/tribunal-kit.js +175 -12
  177. package/package.json +25 -4
  178. package/.agent/skills/api-patterns/api-style.md +0 -42
  179. package/.agent/skills/api-patterns/auth.md +0 -24
  180. package/.agent/skills/api-patterns/documentation.md +0 -26
  181. package/.agent/skills/api-patterns/graphql.md +0 -41
  182. package/.agent/skills/api-patterns/rate-limiting.md +0 -31
  183. package/.agent/skills/api-patterns/response.md +0 -37
  184. package/.agent/skills/api-patterns/rest.md +0 -40
  185. package/.agent/skills/api-patterns/security-testing.md +0 -122
  186. package/.agent/skills/api-patterns/trpc.md +0 -41
  187. package/.agent/skills/api-patterns/versioning.md +0 -22
  188. package/.agent/skills/app-builder/agent-coordination.md +0 -71
  189. package/.agent/skills/app-builder/feature-building.md +0 -53
  190. package/.agent/skills/app-builder/project-detection.md +0 -34
  191. package/.agent/skills/app-builder/scaffolding.md +0 -118
  192. package/.agent/skills/app-builder/tech-stack.md +0 -40
  193. package/.agent/skills/architecture/context-discovery.md +0 -43
  194. package/.agent/skills/architecture/examples.md +0 -94
  195. package/.agent/skills/architecture/pattern-selection.md +0 -68
  196. package/.agent/skills/architecture/patterns-reference.md +0 -50
  197. package/.agent/skills/architecture/trade-off-analysis.md +0 -77
  198. package/.agent/skills/brainstorming/dynamic-questioning.md +0 -360
  199. package/.agent/skills/database-design/database-selection.md +0 -43
  200. package/.agent/skills/database-design/indexing.md +0 -39
  201. package/.agent/skills/database-design/migrations.md +0 -48
  202. package/.agent/skills/database-design/optimization.md +0 -36
  203. package/.agent/skills/database-design/orm-selection.md +0 -30
  204. package/.agent/skills/database-design/schema-design.md +0 -56
  205. package/.agent/skills/frontend-design/animation-guide.md +0 -331
  206. package/.agent/skills/frontend-design/color-system.md +0 -329
  207. package/.agent/skills/frontend-design/decision-trees.md +0 -418
  208. package/.agent/skills/frontend-design/motion-graphics.md +0 -306
  209. package/.agent/skills/frontend-design/typography-system.md +0 -363
  210. package/.agent/skills/frontend-design/ux-psychology.md +0 -1116
  211. package/.agent/skills/frontend-design/visual-effects.md +0 -383
  212. package/.agent/skills/intelligent-routing/router-manifest.md +0 -65
  213. package/.agent/skills/mobile-design/decision-trees.md +0 -516
  214. package/.agent/skills/mobile-design/mobile-backend.md +0 -491
  215. package/.agent/skills/mobile-design/mobile-color-system.md +0 -420
  216. package/.agent/skills/mobile-design/mobile-debugging.md +0 -122
  217. package/.agent/skills/mobile-design/mobile-design-thinking.md +0 -357
  218. package/.agent/skills/mobile-design/mobile-navigation.md +0 -458
  219. package/.agent/skills/mobile-design/mobile-performance.md +0 -767
  220. package/.agent/skills/mobile-design/mobile-testing.md +0 -356
  221. package/.agent/skills/mobile-design/mobile-typography.md +0 -433
  222. package/.agent/skills/mobile-design/platform-android.md +0 -666
  223. package/.agent/skills/mobile-design/platform-ios.md +0 -561
  224. package/.agent/skills/mobile-design/touch-psychology.md +0 -537
  225. package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
  226. package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
  227. package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
  228. package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
  229. package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
  230. package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
  231. package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
  232. package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
  233. package/.agent/skills/vulnerability-scanner/checklists.md +0 -121
@@ -1,211 +1,189 @@
1
- ---
2
- description: Test generation and test running command. Creates and executes tests for code using the Testing Trophy strategy (unit → integration → E2E). Tests are behavioral (GIVEN/WHEN/THEN), not structural. Tests cannot be approved without covering happy path, error path, and boundary cases.
3
- ---
4
-
5
- # /test — Test Generation & Execution
6
-
7
- $ARGUMENTS
8
-
9
- ---
10
-
11
- ## When to Use /test
12
-
13
- | Use `/test` when... | Use something else when... |
14
- |:---|:---|
15
- | New code was just generated and needs tests | Tests are failing → `/debug` |
16
- | After `/debug` to prevent regression | Need a full coverage audit → `/audit` |
17
- | Test coverage is below threshold | E2E for the whole app → `/performance-benchmarker` |
18
- | A bug was fixed and needs a regression test | |
19
-
20
- ---
21
-
22
- ## Testing Trophy Strategy (2026 Standard)
23
-
24
- ```
25
- /\
26
- /E2E\ ← Small (Playwright): happy paths, auth, critical checkout
27
- /──────\
28
- /Integr.\ ← Medium (RTL + MSW): component + network behavior
29
- /──────────\
30
- / Unit \ ← Foundation (Vitest): pure logic + transformations
31
- /──────────────\
32
- / Static Types \ ← Free: TypeScript + ESLint
33
- /────────────────────\
34
- ```
35
-
36
- When asked to write tests without specifying a level, default to **integration tests** (highest ROI per test).
37
-
38
- ---
39
-
40
- ## Phase 1 — Coverage Gap Analysis
41
-
42
- Before writing new tests, understand existing coverage:
43
-
44
- ```bash
45
- npm run test:coverage # Generate coverage report
46
- ```
47
-
48
- Cover these areas in priority order:
49
-
50
- ```
51
- 1. Authentication flows (login, logout, session expiry)
52
- 2. Data mutation paths (create, update, delete)
53
- 3. Validation rejection (invalid input → correct error)
54
- 4. Error handling (API failure → correct fallback)
55
- 5. Authorization (wrong role → 403, unauthenticated → 401)
56
- 6. Boundary values (0, null, empty, max)
57
- ```
58
-
59
- ---
60
-
61
- ## Phase 2 — Test Design (Behavioral, Not Structural)
62
-
63
- Tests describe **behavior**, not implementation:
64
-
65
- ```
66
- ✅ Behavioral: "returns 401 when no auth token is provided"
67
- ❌ Structural: "calls validateToken() once"
68
-
69
- Format every test as:
70
- GIVEN [initial state/context]
71
- WHEN [action taken]
72
- THEN [observable behavior verified]
73
- ```
74
-
75
- ---
76
-
77
- ## Phase 3 — Minimum Required Test Coverage
78
-
79
- The Tribunal rejects any test submission that does not cover ALL of:
80
-
81
- ```
82
- □ Happy path — does it work correctly with valid input?
83
- □ Error path — does it fail correctly with invalid/missing input?
84
- □ Boundary cases — what happens at 0, null, empty, max, limits?
85
- □ Auth boundary — what happens without auth? With wrong role?
86
- ```
87
-
88
- ---
89
-
90
- ## Test Templates by Layer
91
-
92
- ### Unit Test (Vitest)
93
-
94
- ```typescript
95
- describe('[functionName]()', () => {
96
- it('[happy path description]', () => {
97
- expect(fn(validInput)).toBe(expectedResult);
98
- });
99
-
100
- it('returns [expected] when input is [edge case]', () => {
101
- expect(fn(boundaryInput)).toBe(expectedBoundaryResult);
102
- });
103
-
104
- it('throws [ErrorType] when [invalid condition]', () => {
105
- expect(() => fn(invalidInput)).toThrow(ExpectedError);
106
- });
107
- });
108
- ```
109
-
110
- ### Integration Test (RTL + MSW)
111
-
112
- ```typescript
113
- test('[user observable behavior]', async () => {
114
- // GIVEN: server mock defined in handlers.ts
115
- // WHEN: user action
116
- render(<Component />);
117
- await userEvent.click(screen.getByRole('button', { name: /submit/i }));
118
- // THEN: observable outcome
119
- await screen.findByText(/success/i);
120
- });
121
- ```
122
-
123
- ### E2E Test (Playwright)
124
-
125
- ```typescript
126
- test('[critical user path]', async ({ page }) => {
127
- // GIVEN: pre-authenticated (stored session — not login from UI every test)
128
- // WHEN: navigate and act
129
- await page.goto('/checkout');
130
- // THEN: verify final state
131
- await expect(page.getByText('Order confirmed')).toBeVisible();
132
- });
133
- ```
134
-
135
- ---
136
-
137
- ## Phase 4 — Test Execution
138
-
139
- ```bash
140
- # Run tests
141
- npm test # Unit + integration
142
- npm run test:e2e # Playwright E2E (CI environment)
143
- npm run test:coverage # With coverage report
144
-
145
- # target coverage threshold (default 80%)
146
- ```
147
-
148
- Failed tests halt the workflow. Fix the code or fix the test (not both — understand which first).
149
-
150
- ---
151
-
152
- ## Human Gate — Before Writing Test Files
153
-
154
- After the test-coverage-reviewer approves:
155
-
156
- ```
157
- ━━━ Human Gate ━━━━━━━━━━━━━━━━━━━━━━━━━
158
-
159
- Generated tests cover:
160
- ✅ Happy path
161
- ✅ Error path
162
- ✅ Boundary cases
163
- ✅ Auth boundary
164
-
165
- Files to write:
166
- [list of .test.ts files]
167
-
168
- Write to disk? Y = write | N = discard | R = revise coverage
169
- ```
170
-
171
- No test files are written without explicit approval.
172
-
173
- ---
174
-
175
- ## Test Review Verdicts
176
-
177
- The `test-coverage-reviewer` is automatically activated and checks:
178
-
179
- ```
180
- □ Happy path covered for new function/component
181
- □ Error/rejection paths covered
182
- □ Boundary values tested
183
- □ No brittle CSS selectors — only getByRole/getByLabelText
184
- □ No implementation details tested (private state, internal calls)
185
- □ Async assertions use await findBy* (not getBy*)
186
- □ Mock only at architectural boundaries (MSW for network — not hooks/methods)
187
- ```
188
-
189
- ---
190
-
191
- ## Cross-Workflow Navigation
192
-
193
- | After /test shows... | Go to |
194
- |:---|:---|
195
- | Tests failing — suspected logic bug | `/debug` |
196
- | Tests failing — suspected security issue | `/tribunal-backend` |
197
- | Coverage still below threshold | `/audit` for full coverage report |
198
- | E2E tests failing | Check `/audit` script output |
199
-
200
- ---
201
-
202
- ## Usage Examples
203
-
204
- ```
205
- /test the calculateDiscount function in src/lib/pricing.ts
206
- /test the POST /api/auth/login route including rate limit behavior
207
- /test the UserProfile component including loading and error states
208
- /test the checkout flow E2E with Playwright
209
- /test add regression test for bug: login fails with uppercase email
210
- /test the database transaction in createOrder for rollback behavior
211
- ```
1
+ ---
2
+ description: Test generation and test running command. Creates and executes tests for code using the Testing Trophy strategy (unit → integration → E2E). Tests are behavioral (GIVEN/WHEN/THEN), not structural. Tests cannot be approved without covering happy path, error path, and boundary cases.
3
+ ---
4
+
5
+ # /test — Test Generation & Execution
6
+
7
+ $ARGUMENTS
8
+
9
+ ---
10
+
11
+ ## When to Use /test
12
+
13
+ |Use `/test` when...|Use something else when...|
14
+ |:---|:---|
15
+ |New code was just generated and needs tests|Tests are failing → `/debug`|
16
+ |After `/debug` to prevent regression|Need a full coverage audit → `/audit`|
17
+ |Test coverage is below threshold|E2E for the whole app → `/performance-benchmarker`|
18
+ |A bug was fixed and needs a regression test||
19
+
20
+ ---
21
+
22
+ ## Testing Trophy Strategy (2026 Standard)
23
+
24
+ ```
25
+ /\
26
+ /E2E\ ← Small (Playwright): happy paths, auth, critical checkout
27
+ /──────\
28
+ /Integr.\ ← Medium (RTL + MSW): component + network behavior
29
+ /──────────\
30
+ / Unit \ ← Foundation (Vitest): pure logic + transformations
31
+ /──────────────\
32
+ / Static Types \ ← Free: TypeScript + ESLint
33
+ /────────────────────\
34
+ ```
35
+
36
+ When asked to write tests without specifying a level, default to **integration tests** (highest ROI per test).
37
+
38
+ ---
39
+
40
+ ## Phase 1 — Coverage Gap Analysis
41
+
42
+ Before writing new tests, understand existing coverage:
43
+
44
+ ```bash
45
+ npm run test:coverage # Generate coverage report
46
+ ```
47
+
48
+ Cover these areas in priority order:
49
+
50
+ ```
51
+ 1. Authentication flows (login, logout, session expiry)
52
+ 2. Data mutation paths (create, update, delete)
53
+ 3. Validation rejection (invalid input → correct error)
54
+ 4. Error handling (API failure → correct fallback)
55
+ 5. Authorization (wrong role → 403, unauthenticated → 401)
56
+ 6. Boundary values (0, null, empty, max)
57
+ ```
58
+
59
+ ---
60
+
61
+ ## Phase 2 — Test Design (Behavioral, Not Structural)
62
+
63
+ Tests describe **behavior**, not implementation:
64
+
65
+ ```
66
+ ✅ Behavioral: "returns 401 when no auth token is provided"
67
+ ❌ Structural: "calls validateToken() once"
68
+
69
+ Format every test as:
70
+ GIVEN [initial state/context]
71
+ WHEN [action taken]
72
+ THEN [observable behavior verified]
73
+ ```
74
+
75
+ ---
76
+
77
+ ## Phase 3 — Minimum Required Test Coverage
78
+
79
+ The Tribunal rejects any test submission that does not cover ALL of:
80
+
81
+ ```
82
+ □ Happy path — does it work correctly with valid input?
83
+ □ Error path — does it fail correctly with invalid/missing input?
84
+ □ Boundary cases — what happens at 0, null, empty, max, limits?
85
+ □ Auth boundary — what happens without auth? With wrong role?
86
+ ```
87
+
88
+ ---
89
+
90
+ ## Test Templates by Layer
91
+
92
+ ### Unit Test (Vitest)
93
+
94
+ ```typescript
95
+ describe('[functionName]()', () => {
96
+ it('[happy path description]', () => {
97
+ expect(fn(validInput)).toBe(expectedResult);
98
+ });
99
+
100
+ it('returns [expected] when input is [edge case]', () => {
101
+ expect(fn(boundaryInput)).toBe(expectedBoundaryResult);
102
+ });
103
+
104
+ it('throws [ErrorType] when [invalid condition]', () => {
105
+ expect(() => fn(invalidInput)).toThrow(ExpectedError);
106
+ });
107
+ });
108
+ ```
109
+
110
+ ### Integration Test (RTL + MSW)
111
+
112
+ ```typescript
113
+ test('[user observable behavior]', async () => {
114
+ // GIVEN: server mock defined in handlers.ts
115
+ // WHEN: user action
116
+ render(<Component />);
117
+ await userEvent.click(screen.getByRole('button', { name: /submit/i }));
118
+ // THEN: observable outcome
119
+ await screen.findByText(/success/i);
120
+ });
121
+ ```
122
+
123
+ ### E2E Test (Playwright)
124
+
125
+ ```typescript
126
+ test('[critical user path]', async ({ page }) => {
127
+ // GIVEN: pre-authenticated (stored session — not login from UI every test)
128
+ // WHEN: navigate and act
129
+ await page.goto('/checkout');
130
+ // THEN: verify final state
131
+ await expect(page.getByText('Order confirmed')).toBeVisible();
132
+ });
133
+ ```
134
+
135
+ ---
136
+
137
+ ## Phase 4 — Test Execution
138
+
139
+ ```bash
140
+ # Run tests
141
+ npm test # Unit + integration
142
+ npm run test:e2e # Playwright E2E (CI environment)
143
+ npm run test:coverage # With coverage report
144
+
145
+ # target coverage threshold (default 80%)
146
+ ```
147
+
148
+ Failed tests halt the workflow. Fix the code or fix the test (not both — understand which first).
149
+
150
+ ---
151
+
152
+ ## Human Gate — Before Writing Test Files
153
+
154
+ After the test-coverage-reviewer approves:
155
+
156
+ ```
157
+ ━━━ Human Gate ━━━━━━━━━━━━━━━━━━━━━━━━━
158
+
159
+ Generated tests cover:
160
+ ✅ Happy path
161
+ ✅ Error path
162
+ ✅ Boundary cases
163
+ ✅ Auth boundary
164
+
165
+ Files to write:
166
+ [list of .test.ts files]
167
+
168
+ Write to disk? Y = write | N = discard | R = revise coverage
169
+ ```
170
+
171
+ No test files are written without explicit approval.
172
+
173
+ ---
174
+
175
+ ## Test Review Verdicts
176
+
177
+ The `test-coverage-reviewer` is automatically activated and checks:
178
+
179
+ ```
180
+ □ Happy path covered for new function/component
181
+ □ Error/rejection paths covered
182
+ □ Boundary values tested
183
+ □ No brittle CSS selectors — only getByRole/getByLabelText
184
+ □ No implementation details tested (private state, internal calls)
185
+ □ Async assertions use await findBy* (not getBy*)
186
+ □ Mock only at architectural boundaries (MSW for network — not hooks/methods)
187
+ ```
188
+
189
+ ---
@@ -1,113 +1,94 @@
1
- ---
2
- description: Backend-specific Tribunal. Runs Logic + Security + Dependency + Type Safety reviewers. Use for API routes, server logic, auth code, middleware, Server Actions, and any server-side business logic.
3
- ---
4
-
5
- # /tribunal-backend — Backend Code Audit
6
-
7
- $ARGUMENTS
8
-
9
- ---
10
-
11
- ## When to Use /tribunal-backend
12
-
13
- | Use `/tribunal-backend` when... | Use something else when... |
14
- |:---|:---|
15
- | Reviewing API routes or middleware | Frontend components → `/tribunal-frontend` |
16
- | Auth, JWT, session code | Database queries only → `/tribunal-database` |
17
- | Server Actions | Mobile code → `/tribunal-mobile` |
18
- | Input validation and Zod schemas | Maximum coverage → `/tribunal-full` |
19
- | Third-party API integrations | |
20
-
21
- ---
22
-
23
- ## 4 Active Reviewers (All Run Simultaneously)
24
-
25
- ### logic-reviewer
26
- - Hallucinated Express/Hono/Fastify methods
27
- - Missing awaits on async operations
28
- - Unreachable code after return statements
29
- - Race conditions in sequential state mutations
30
-
31
- ### security-auditor
32
- - SQL injection via string interpolation
33
- - JWT verify missing `{ algorithms: ['HS256'] }` option
34
- - Auth check after business logic (wrong order)
35
- - IDOR resource ownership not verified against session
36
- - SSRFuser-controlled URLs passed to fetch()
37
- - Hardcoded secrets / missing env var existence checks
38
- - CORS wildcard (`*`) in production
39
-
40
- ### dependency-reviewer
41
- - Packages not in package.json
42
- - npm package names matching typosquatting patterns
43
- - Major version incompatibilities
44
- - Known CVEs in used packages
45
-
46
- ### type-safety-reviewer
47
- - `any` types in request handlers
48
- - Missing Zod validation before DB access
49
- - Unsafe type assertions (`as User` without runtime check)
50
- - Return type mismatches
51
-
52
- ---
53
-
54
- ## Verdict System
55
-
56
- ```
57
- If ANY reviewer → ❌ REJECTED: code must be fixed before Human Gate
58
- If any reviewer → ⚠️ WARNING: proceed with flagged items noted
59
- If all reviewers APPROVED: present to Human Gate
60
- ```
61
-
62
- ---
63
-
64
- ## Output Format
65
-
66
- ```
67
- ━━━ Tribunal Backend ━━━━━━━━━━━━━━━━━━━━━
68
-
69
- logic-reviewer: ✅ APPROVED
70
- security-auditor: REJECTED
71
- dependency-reviewer: APPROVED
72
- type-safety-reviewer: ⚠️ WARNING
73
-
74
- ━━━ VERDICT: REJECTED ━━━━━━━━━━━━━━━━━
75
-
76
- Blockers:
77
- - security-auditor: [CRITICAL] SQL string interpolation on line 23: query = `SELECT * WHERE email = '${email}'`
78
- Fix: Use parameterized query: prisma.user.findUnique({ where: { email } })
79
-
80
- Warnings:
81
- - type-safety-reviewer: [MEDIUM] 'req.body' cast as 'any' on line 47 — use Zod parse instead
82
- ```
83
-
84
- ---
85
-
86
- ## Backend-Specific Hallucination Traps (Common LLM Mistakes)
87
-
88
- ```typescript
89
- // ❌ express.Router() methods that don't exist
90
- router.middleware(() => {}); // not a method use app.use()
91
- router.beforeAll(() => {}); // not a method use router.use()
92
-
93
- // Hono methods that don't exist
94
- app.middleware('/path', handler); // not valid — use app.use('/path', handler)
95
-
96
- // ❌ next-auth v4 patterns in v5 projects
97
- import { getServerSession } from 'next-auth'; // v4 — use auth() from './auth' in v5
98
-
99
- // ❌ jwt.verify async form (it's synchronous)
100
- const payload = await jwt.verify(token, secret); // jwt.verify is NOT async
101
- const payload = jwt.verify(token, secret); // Correct
102
- ```
103
-
104
- ---
105
-
106
- ## Usage Examples
107
-
108
- ```
109
- /tribunal-backend the POST /api/auth/login route with JWT issuance
110
- /tribunal-backend the createOrder Server Action with Stripe integration
111
- /tribunal-backend the auth middleware that verifies session on protected routes
112
- /tribunal-backend the webhook handler for Stripe payment events
113
- ```
1
+ ---
2
+ description: Backend-specific Tribunal. Runs Logic + Security + Dependency + Type Safety reviewers. Use for API routes, server logic, auth code, middleware, Server Actions, and any server-side business logic.
3
+ ---
4
+
5
+ # /tribunal-backend — Backend Code Audit
6
+
7
+ $ARGUMENTS
8
+
9
+ ---
10
+
11
+ ## When to Use /tribunal-backend
12
+
13
+ |Use `/tribunal-backend` when...|Use something else when...|
14
+ |:---|:---|
15
+ |Reviewing API routes or middleware|Frontend components → `/tribunal-frontend`|
16
+ |Auth, JWT, session code|Database queries only → `/tribunal-database`|
17
+ |Server Actions|Mobile code → `/tribunal-mobile`|
18
+ |Input validation and Zod schemas|Maximum coverage → `/tribunal-full`|
19
+ |Third-party API integrations||
20
+
21
+ ---
22
+
23
+ ## 4 Active Reviewers (All Run Simultaneously)
24
+
25
+ ### precedence-reviewer → Checks local repo Case Law for past rejections
26
+ logic-reviewer
27
+ - Hallucinated Express/Hono/Fastify methods
28
+ - Missing awaits on async operations
29
+ - Unreachable code after return statements
30
+ - Race conditions in sequential state mutations
31
+
32
+ ### security-auditor
33
+ - SQL injection via string interpolation
34
+ - JWT verify missing `{ algorithms: ['HS256'] }` option
35
+ - Auth check after business logic (wrong order)
36
+ - IDORresource ownership not verified against session
37
+ - SSRF user-controlled URLs passed to fetch()
38
+ - Hardcoded secrets / missing env var existence checks
39
+ - CORS wildcard (`*`) in production
40
+
41
+ ### dependency-reviewer
42
+ - Packages not in package.json
43
+ - npm package names matching typosquatting patterns
44
+ - Major version incompatibilities
45
+ - Known CVEs in used packages
46
+
47
+ ### type-safety-reviewer
48
+ - `any` types in request handlers
49
+ - Missing Zod validation before DB access
50
+ - Unsafe type assertions (`as User` without runtime check)
51
+ - Return type mismatches
52
+
53
+ ---
54
+
55
+ ## Verdict System
56
+
57
+ ```
58
+ If ANY reviewer → REJECTED: code must be fixed before Human Gate
59
+ If any reviewer⚠️ WARNING: proceed with flagged items noted
60
+ If all reviewers → ✅ APPROVED: present to Human Gate
61
+ ```
62
+
63
+ ---
64
+
65
+ ---
66
+
67
+ ## Backend-Specific Hallucination Traps (Common LLM Mistakes)
68
+
69
+ ```typescript
70
+ // express.Router() methods that don't exist
71
+ router.middleware(() => {}); // not a method — use app.use()
72
+ router.beforeAll(() => {}); // not a method — use router.use()
73
+
74
+ //Hono methods that don't exist
75
+ app.middleware('/path', handler); // not valid — use app.use('/path', handler)
76
+
77
+ // ❌ next-auth v4 patterns in v5 projects
78
+ import { getServerSession } from 'next-auth'; // v4 use auth() from './auth' in v5
79
+
80
+ // ❌ jwt.verify async form (it's synchronous)
81
+ const payload = await jwt.verify(token, secret); // jwt.verify is NOT async
82
+ const payload = jwt.verify(token, secret); // Correct
83
+ ```
84
+
85
+ ---
86
+
87
+ ## Usage Examples
88
+
89
+ ```
90
+ /tribunal-backend the POST /api/auth/login route with JWT issuance
91
+ /tribunal-backend the createOrder Server Action with Stripe integration
92
+ /tribunal-backend the auth middleware that verifies session on protected routes
93
+ /tribunal-backend the webhook handler for Stripe payment events
94
+ ```