tribunal-kit 2.4.6 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/.agent/agents/accessibility-reviewer.md +220 -134
  2. package/.agent/agents/ai-code-reviewer.md +233 -129
  3. package/.agent/agents/backend-specialist.md +238 -178
  4. package/.agent/agents/code-archaeologist.md +181 -119
  5. package/.agent/agents/database-architect.md +207 -164
  6. package/.agent/agents/debugger.md +218 -151
  7. package/.agent/agents/dependency-reviewer.md +136 -55
  8. package/.agent/agents/devops-engineer.md +238 -175
  9. package/.agent/agents/documentation-writer.md +221 -137
  10. package/.agent/agents/explorer-agent.md +180 -142
  11. package/.agent/agents/frontend-reviewer.md +194 -80
  12. package/.agent/agents/frontend-specialist.md +237 -188
  13. package/.agent/agents/game-developer.md +52 -184
  14. package/.agent/agents/logic-reviewer.md +149 -78
  15. package/.agent/agents/mobile-developer.md +223 -152
  16. package/.agent/agents/mobile-reviewer.md +195 -79
  17. package/.agent/agents/orchestrator.md +211 -170
  18. package/.agent/agents/penetration-tester.md +174 -131
  19. package/.agent/agents/performance-optimizer.md +203 -139
  20. package/.agent/agents/performance-reviewer.md +211 -108
  21. package/.agent/agents/product-manager.md +162 -108
  22. package/.agent/agents/project-planner.md +162 -142
  23. package/.agent/agents/qa-automation-engineer.md +242 -138
  24. package/.agent/agents/security-auditor.md +194 -170
  25. package/.agent/agents/seo-specialist.md +213 -132
  26. package/.agent/agents/sql-reviewer.md +194 -73
  27. package/.agent/agents/supervisor-agent.md +203 -156
  28. package/.agent/agents/test-coverage-reviewer.md +193 -81
  29. package/.agent/agents/type-safety-reviewer.md +208 -65
  30. package/.agent/scripts/__pycache__/auto_preview.cpython-311.pyc +0 -0
  31. package/.agent/scripts/__pycache__/bundle_analyzer.cpython-311.pyc +0 -0
  32. package/.agent/scripts/__pycache__/checklist.cpython-311.pyc +0 -0
  33. package/.agent/scripts/__pycache__/dependency_analyzer.cpython-311.pyc +0 -0
  34. package/.agent/scripts/__pycache__/security_scan.cpython-311.pyc +0 -0
  35. package/.agent/scripts/__pycache__/session_manager.cpython-311.pyc +0 -0
  36. package/.agent/scripts/__pycache__/skill_integrator.cpython-311.pyc +0 -0
  37. package/.agent/scripts/__pycache__/swarm_dispatcher.cpython-311.pyc +0 -0
  38. package/.agent/scripts/__pycache__/test_runner.cpython-311.pyc +0 -0
  39. package/.agent/scripts/__pycache__/verify_all.cpython-311.pyc +0 -0
  40. package/.agent/skills/agent-organizer/SKILL.md +126 -132
  41. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +155 -66
  42. package/.agent/skills/api-patterns/SKILL.md +289 -257
  43. package/.agent/skills/api-security-auditor/SKILL.md +172 -70
  44. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +1 -1
  45. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +1 -1
  46. package/.agent/skills/appflow-wireframe/SKILL.md +107 -100
  47. package/.agent/skills/architecture/SKILL.md +331 -200
  48. package/.agent/skills/authentication-best-practices/SKILL.md +168 -67
  49. package/.agent/skills/bash-linux/SKILL.md +154 -215
  50. package/.agent/skills/brainstorming/SKILL.md +104 -210
  51. package/.agent/skills/building-native-ui/SKILL.md +169 -70
  52. package/.agent/skills/clean-code/SKILL.md +360 -206
  53. package/.agent/skills/config-validator/SKILL.md +141 -165
  54. package/.agent/skills/csharp-developer/SKILL.md +528 -107
  55. package/.agent/skills/database-design/SKILL.md +455 -275
  56. package/.agent/skills/deployment-procedures/SKILL.md +145 -188
  57. package/.agent/skills/devops-engineer/SKILL.md +332 -134
  58. package/.agent/skills/devops-incident-responder/SKILL.md +113 -98
  59. package/.agent/skills/edge-computing/SKILL.md +157 -213
  60. package/.agent/skills/extract-design-system/SKILL.md +129 -69
  61. package/.agent/skills/framer-motion-expert/SKILL.md +939 -0
  62. package/.agent/skills/game-design-expert/SKILL.md +105 -0
  63. package/.agent/skills/game-engineering-expert/SKILL.md +122 -0
  64. package/.agent/skills/geo-fundamentals/SKILL.md +124 -215
  65. package/.agent/skills/github-operations/SKILL.md +314 -354
  66. package/.agent/skills/gsap-expert/SKILL.md +901 -0
  67. package/.agent/skills/i18n-localization/SKILL.md +138 -216
  68. package/.agent/skills/intelligent-routing/SKILL.md +127 -139
  69. package/.agent/skills/llm-engineering/SKILL.md +357 -258
  70. package/.agent/skills/local-first/SKILL.md +154 -203
  71. package/.agent/skills/mcp-builder/SKILL.md +118 -224
  72. package/.agent/skills/nextjs-react-expert/SKILL.md +783 -203
  73. package/.agent/skills/nodejs-best-practices/SKILL.md +559 -280
  74. package/.agent/skills/observability/SKILL.md +330 -285
  75. package/.agent/skills/parallel-agents/SKILL.md +122 -181
  76. package/.agent/skills/performance-profiling/SKILL.md +254 -197
  77. package/.agent/skills/plan-writing/SKILL.md +118 -188
  78. package/.agent/skills/platform-engineer/SKILL.md +123 -135
  79. package/.agent/skills/playwright-best-practices/SKILL.md +157 -76
  80. package/.agent/skills/powershell-windows/SKILL.md +146 -230
  81. package/.agent/skills/python-pro/SKILL.md +879 -114
  82. package/.agent/skills/react-specialist/SKILL.md +931 -108
  83. package/.agent/skills/realtime-patterns/SKILL.md +304 -296
  84. package/.agent/skills/rust-pro/SKILL.md +701 -240
  85. package/.agent/skills/seo-fundamentals/SKILL.md +154 -181
  86. package/.agent/skills/server-management/SKILL.md +190 -212
  87. package/.agent/skills/shadcn-ui-expert/SKILL.md +201 -68
  88. package/.agent/skills/sql-pro/SKILL.md +633 -104
  89. package/.agent/skills/swiftui-expert/SKILL.md +171 -70
  90. package/.agent/skills/systematic-debugging/SKILL.md +118 -186
  91. package/.agent/skills/tailwind-patterns/SKILL.md +576 -232
  92. package/.agent/skills/tdd-workflow/SKILL.md +137 -209
  93. package/.agent/skills/testing-patterns/SKILL.md +573 -205
  94. package/.agent/skills/vue-expert/SKILL.md +964 -119
  95. package/.agent/skills/vulnerability-scanner/SKILL.md +269 -316
  96. package/.agent/skills/web-accessibility-auditor/SKILL.md +188 -71
  97. package/.agent/skills/webapp-testing/SKILL.md +145 -236
  98. package/.agent/workflows/api-tester.md +151 -279
  99. package/.agent/workflows/audit.md +138 -168
  100. package/.agent/workflows/brainstorm.md +110 -146
  101. package/.agent/workflows/changelog.md +112 -144
  102. package/.agent/workflows/create.md +124 -139
  103. package/.agent/workflows/debug.md +189 -196
  104. package/.agent/workflows/deploy.md +189 -153
  105. package/.agent/workflows/enhance.md +151 -139
  106. package/.agent/workflows/fix.md +135 -143
  107. package/.agent/workflows/generate.md +157 -164
  108. package/.agent/workflows/migrate.md +160 -163
  109. package/.agent/workflows/orchestrate.md +168 -151
  110. package/.agent/workflows/performance-benchmarker.md +123 -305
  111. package/.agent/workflows/plan.md +173 -151
  112. package/.agent/workflows/preview.md +80 -137
  113. package/.agent/workflows/refactor.md +183 -153
  114. package/.agent/workflows/review-ai.md +129 -140
  115. package/.agent/workflows/review.md +116 -155
  116. package/.agent/workflows/session.md +94 -154
  117. package/.agent/workflows/status.md +79 -125
  118. package/.agent/workflows/strengthen-skills.md +139 -99
  119. package/.agent/workflows/swarm.md +179 -194
  120. package/.agent/workflows/test.md +211 -166
  121. package/.agent/workflows/tribunal-backend.md +113 -111
  122. package/.agent/workflows/tribunal-database.md +115 -132
  123. package/.agent/workflows/tribunal-frontend.md +118 -115
  124. package/.agent/workflows/tribunal-full.md +133 -136
  125. package/.agent/workflows/tribunal-mobile.md +119 -123
  126. package/.agent/workflows/tribunal-performance.md +133 -152
  127. package/.agent/workflows/ui-ux-pro-max.md +143 -171
  128. package/README.md +11 -15
  129. package/package.json +1 -1
  130. package/.agent/skills/dotnet-core-expert/SKILL.md +0 -103
  131. package/.agent/skills/framer-motion-animations/SKILL.md +0 -74
  132. package/.agent/skills/game-development/2d-games/SKILL.md +0 -119
  133. package/.agent/skills/game-development/3d-games/SKILL.md +0 -135
  134. package/.agent/skills/game-development/SKILL.md +0 -236
  135. package/.agent/skills/game-development/game-art/SKILL.md +0 -185
  136. package/.agent/skills/game-development/game-audio/SKILL.md +0 -190
  137. package/.agent/skills/game-development/game-design/SKILL.md +0 -129
  138. package/.agent/skills/game-development/mobile-games/SKILL.md +0 -108
  139. package/.agent/skills/game-development/multiplayer/SKILL.md +0 -132
  140. package/.agent/skills/game-development/pc-games/SKILL.md +0 -144
  141. package/.agent/skills/game-development/vr-ar/SKILL.md +0 -123
  142. package/.agent/skills/game-development/web-games/SKILL.md +0 -150
@@ -1,166 +1,211 @@
1
- ---
2
- description: Test generation and test running command. Creates and executes tests for code.
3
- ---
4
-
5
- # /test — Test Quality Engine
6
-
7
- $ARGUMENTS
8
-
9
- ---
10
-
11
- This command either **generates tests that actually test things**, or **audits existing tests** to find ones that don't. A test that always passes isn't protecting anything.
12
-
13
- ---
14
-
15
- ## When to Use /test vs Other Commands
16
-
17
- | Use `/test` when... | Use something else when... |
18
- |---|---|
19
- | No tests exist for working code | Code is broken → `/debug` first, then `/test` |
20
- | Tests exist but coverage is thin | Quality of test assertions → use `audit` mode |
21
- | You changed behavior and need regression tests | Full project test health → `/audit` |
22
- | You want edge case coverage only | Integration tests → specify in the test plan |
23
-
24
- ---
25
-
26
- ## Modes
27
-
28
- ```
29
- /test [file or function] → Generate tests for the target
30
- /test audit → Check existing tests for quality issues
31
- /test coverage → Identify code paths with no test coverage
32
- /test edge [function] → Generate edge-case tests only (null, empty, boundary)
33
- /test run → Run the existing test suite and analyze failures
34
- ```
35
-
36
- ---
37
-
38
- ## Mode: Generate Tests
39
-
40
- ### FirstRead the Code
41
-
42
- Before writing a single test, map:
43
-
44
- - Every **execution path** (normal path, error path, edge cases)
45
- - All **direct external dependencies** (to identify what needs mocking)
46
- - **Expected inputs and outputs** — derived from the function signature and actual behavior, not assumed
47
-
48
- ### Then Write the Test Plan
49
-
50
- A plan must be written **before** test code:
51
-
52
- ```
53
- Target: [function or module name]
54
- Framework: [Jest | Vitest | pytest | Go test]
55
-
56
- Path inventory:
57
- › Normal path — valid input, expected output
58
- › Null / undefined / None input
59
- › Empty string / empty array / empty object
60
- › Boundary values (0, -1, MAX_INT, max string length)
61
- Async rejection / network failure / timeout
62
- › Invalid type input (string where number expected, etc.)
63
- Auth / permission fail path
64
- › Concurrent access (if applicable)
65
-
66
- Dependencies to mock: [list minimal, only direct external deps]
67
- ```
68
-
69
- **Then tests are written and passed through `test-coverage-reviewer`.**
70
-
71
- ---
72
-
73
- ## Test Structure Standard
74
-
75
- Every generated test file follows this format:
76
-
77
- ```typescript
78
- describe('[Unit under test]', () => {
79
-
80
- describe('[scenario group]', () => {
81
- it('[specific behavior being tested]', () => {
82
- // Arrange
83
- const input = [setup value];
84
-
85
- // Act
86
- const result = functionUnderTest(input);
87
-
88
- // Assert — specific value, not .toBeDefined()
89
- expect(result).toBe([exact expected value]);
90
- });
91
- });
92
-
93
- describe('edge cases', () => {
94
- it('throws when input is null', () => {
95
- expect(() => functionUnderTest(null)).toThrow('[exact error message]');
96
- });
97
-
98
- it('handles empty string without crashing', () => {
99
- expect(functionUnderTest('')).toBe([expected fallback value]);
100
- });
101
- });
102
-
103
- });
104
- ```
105
-
106
- ---
107
-
108
- ## Mode: Audit Existing Tests
109
-
110
- The `test-coverage-reviewer` flags:
111
-
112
- | Problem | What It Looks Like | Why It's Bad |
113
- |---|---|---|
114
- | Tautology test | `expect(fn(x)).toBe(fn(x))` | Always passes regardless of fn's behavior |
115
- | No assertion | `it('works', () => { fn(); })` | Passes even if fn throws wrong output |
116
- | Missing edge cases | Suite has happy path only | Misses real-world failure modes |
117
- | Over-mocking | Every dep mocked, nothing real tested | Tests the mocking framework, not the code |
118
- | Vacuous truthy | `expect(result).toBeTruthy()` | Passes for `1`, `"a"`, `{}`, `[]` |
119
-
120
- ---
121
-
122
- ## Mode: Run Tests
123
-
124
- ```bash
125
- // turbo
126
- python .agent/scripts/test_runner.py . --coverage
127
- ```
128
-
129
- After running, the `test-result-analyzer` identifies:
130
- - Root causes across multiple failing test files
131
- - Whether failures are from flaky setup or actual code breakage
132
- - Actionable fix recommendations
133
-
134
- ---
135
-
136
- ## Hallucination Guard
137
-
138
- - Only **documented** Vitest/Jest/pytest methods are used — never `test.eventually()`, `expect.when()`, or inventions
139
- - Assertions test **specific values** — `toBe('exact')`, not `toBeDefined()` or `toBeTruthy()`
140
- - Mocks are **minimal** — only the direct external dependency, not the whole world
141
- - All conclusions about existing test quality are backed by **reading the actual test code**
142
- - `// VERIFY: check this matcher exists` on any assertion method not commonly used
143
-
144
- ---
145
-
146
- ## Cross-Workflow Navigation
147
-
148
- | After /test shows... | Go to |
149
- |---|---|
150
- | Failures in existing tests after a change | `/debug` to find root cause |
151
- | Code has no tests and is untested in prod | `/review` first for quality check |
152
- | Tests pass but logic seems wrong | `/review [file]` for deeper audit |
153
- | Coverage gaps found in security-sensitive paths | `/audit` for full project security + test sweep |
154
-
155
- ---
156
-
157
- ## Usage
158
-
159
- ```
160
- /test src/services/auth.service.ts
161
- /test the validateEmail function
162
- /test audit — check whether my existing tests actually assert anything
163
- /test coverage — show branches with no test
164
- /test edge validateInput — generate null, empty, boundary tests only
165
- /test run — execute the suite and analyze failures
166
- ```
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,111 +1,113 @@
1
- ---
2
- description: Backend-specific Tribunal. Runs Logic + Security + Dependency + Types. Use for API routes, server logic, and auth code.
3
- ---
4
-
5
- # /tribunal-backend — Server-Side Audit
6
-
7
- $ARGUMENTS
8
-
9
- ---
10
-
11
- Focused audit for backend and API code. Paste server-side code and these four reviewers analyze it simultaneously.
12
-
13
- ---
14
-
15
- ## When to Use This vs Other Tribunals
16
-
17
- | Code type | Right tribunal |
18
- |---|---|
19
- | API routes, auth, middleware | `/tribunal-backend` ← you are here |
20
- | React components, hooks | `/tribunal-frontend` |
21
- | SQL queries, ORM, migrations | `/tribunal-database` |
22
- | Mobile-specific code | `/tribunal-mobile` |
23
- | Unknown domain or cross-domain | `/tribunal-full` |
24
-
25
- ---
26
-
27
- ## Active Reviewers
28
-
29
- ```
30
- logic-reviewer → Invented stdlib methods, impossible conditional branches,
31
- calling .user on a req that wasn't authenticated
32
- security-auditor → Auth bypass, SQL injection, secrets in code, rate limiting gaps,
33
- JWT algorithm enforcement, CORS misconfiguration
34
- dependency-reviewer → Any import not found in your package.json
35
- type-safety-reviewer → Implicit any, unguarded optional access, missing return types,
36
- unsafe casts
37
- ```
38
-
39
- ---
40
-
41
- ## What Gets Flagged — Real Examples
42
-
43
- | Reviewer | Example Finding |
44
- |---|---|
45
- | logic | `req.user.id` used after a guard that can pass with null user |
46
- | security | `jwt.verify(token, secret)` — no `algorithms` option → allows `alg:none` attack |
47
- | security | `app.use(cors())` with no origin restriction in production |
48
- | security | `rate-limiter` missing on auth endpoints |
49
- | dependency | `import { z } from 'zod'` but `zod` not in `package.json` |
50
- | type-safety | `async function handler(req, res)` — untyped `req` and `res` |
51
- | type-safety | `const user = await db.findUser(id)` — result typed as `any` |
52
-
53
- ---
54
-
55
- ## Report Format
56
-
57
- ```
58
- ━━━ Backend Audit ━━━━━━━━━━━━━━━━━━━━━━━
59
-
60
- logic-reviewer: ✅ APPROVED
61
- security-auditor: ❌ REJECTED
62
- dependency-reviewer: ✅ APPROVED
63
- type-safety-reviewer: ⚠️ WARNING
64
-
65
- ━━━ Issues ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
66
-
67
- security-auditor:
68
- ❌ CRITICAL — Line 44
69
- JWT algorithm not enforced: jwt.verify(token, secret)
70
- Fix: jwt.verify(token, secret, { algorithms: ['HS256'] })
71
-
72
- HIGH — Line 12
73
- CORS open: app.use(cors()) — allows any origin
74
- Fix: app.use(cors({ origin: process.env.ALLOWED_ORIGIN }))
75
-
76
- type-safety-reviewer:
77
- ⚠️ MEDIUM Line 10
78
- Request body typed as any use Zod schema parse at the API boundary
79
- Fix: const body = schema.parse(req.body)
80
-
81
- ━━━ Verdict: REJECTEDfix before merging ━━━━━━
82
- ```
83
-
84
- ---
85
-
86
- ## Hallucination Guard
87
-
88
- - Logic findings must cite the **exact line and condition** that creates the problem
89
- - Security findings must name the **attack class** (not just "this is unsafe")
90
- - No invented framework methodsonly documented Express/Fastify/Hono/etc. APIs
91
-
92
- ---
93
-
94
- ## Cross-Workflow Navigation
95
-
96
- | Finding type | Next step |
97
- |---|---|
98
- | Security CRITICAL | `/audit` to scan the whole project |
99
- | All approved | Human Gate to write to disk |
100
- | SQL queries also present | Add `/tribunal-database` for those specifically |
101
-
102
- ---
103
-
104
- ## Usage
105
-
106
- ```
107
- /tribunal-backend [paste API route code]
108
- /tribunal-backend [paste auth middleware]
109
- /tribunal-backend src/routes/user.ts
110
- /tribunal-backend the JWT verification middleware
111
- ```
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
+ - SSRF — user-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
+ ```