tribunal-kit 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) 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/product-manager.md +142 -162
  24. package/.agent/agents/product-owner.md +6 -25
  25. package/.agent/agents/project-planner.md +142 -162
  26. package/.agent/agents/qa-automation-engineer.md +225 -242
  27. package/.agent/agents/security-auditor.md +174 -194
  28. package/.agent/agents/seo-specialist.md +193 -213
  29. package/.agent/agents/sql-reviewer.md +161 -194
  30. package/.agent/agents/supervisor-agent.md +184 -203
  31. package/.agent/agents/swarm-worker-contracts.md +17 -17
  32. package/.agent/agents/swarm-worker-registry.md +46 -46
  33. package/.agent/agents/test-coverage-reviewer.md +160 -193
  34. package/.agent/agents/test-engineer.md +0 -21
  35. package/.agent/agents/type-safety-reviewer.md +175 -208
  36. package/.agent/patterns/generator.md +9 -9
  37. package/.agent/patterns/inversion.md +12 -12
  38. package/.agent/patterns/pipeline.md +9 -9
  39. package/.agent/patterns/reviewer.md +13 -13
  40. package/.agent/patterns/tool-wrapper.md +9 -9
  41. package/.agent/rules/GEMINI.md +63 -63
  42. package/.agent/scripts/compress_skills.py +167 -0
  43. package/.agent/scripts/consolidate_skills.py +173 -0
  44. package/.agent/scripts/deep_compress.py +202 -0
  45. package/.agent/scripts/minify_context.py +80 -0
  46. package/.agent/scripts/security_scan.py +1 -1
  47. package/.agent/scripts/strip_tribunal.py +41 -0
  48. package/.agent/skills/agent-organizer/SKILL.md +92 -126
  49. package/.agent/skills/agentic-patterns/SKILL.md +0 -70
  50. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +126 -160
  51. package/.agent/skills/api-patterns/SKILL.md +123 -215
  52. package/.agent/skills/api-security-auditor/SKILL.md +143 -177
  53. package/.agent/skills/app-builder/SKILL.md +326 -50
  54. package/.agent/skills/app-builder/templates/SKILL.md +13 -15
  55. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +16 -16
  56. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +22 -22
  57. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +18 -18
  58. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +20 -20
  59. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +17 -17
  60. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +18 -18
  61. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +21 -21
  62. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +19 -19
  63. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +26 -26
  64. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +26 -26
  65. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +19 -19
  66. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +18 -18
  67. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +20 -20
  68. package/.agent/skills/appflow-wireframe/SKILL.md +87 -121
  69. package/.agent/skills/architecture/SKILL.md +82 -252
  70. package/.agent/skills/authentication-best-practices/SKILL.md +139 -173
  71. package/.agent/skills/bash-linux/SKILL.md +120 -154
  72. package/.agent/skills/behavioral-modes/SKILL.md +8 -69
  73. package/.agent/skills/brainstorming/SKILL.md +428 -104
  74. package/.agent/skills/building-native-ui/SKILL.md +143 -174
  75. package/.agent/skills/clean-code/SKILL.md +323 -360
  76. package/.agent/skills/code-review-checklist/SKILL.md +0 -62
  77. package/.agent/skills/config-validator/SKILL.md +107 -141
  78. package/.agent/skills/csharp-developer/SKILL.md +468 -528
  79. package/.agent/skills/database-design/SKILL.md +104 -369
  80. package/.agent/skills/deployment-procedures/SKILL.md +111 -145
  81. package/.agent/skills/devops-engineer/SKILL.md +295 -332
  82. package/.agent/skills/devops-incident-responder/SKILL.md +79 -113
  83. package/.agent/skills/doc.md +5 -5
  84. package/.agent/skills/documentation-templates/SKILL.md +19 -63
  85. package/.agent/skills/edge-computing/SKILL.md +123 -157
  86. package/.agent/skills/extract-design-system/SKILL.md +100 -134
  87. package/.agent/skills/framer-motion-expert/SKILL.md +111 -855
  88. package/.agent/skills/frontend-design/SKILL.md +151 -499
  89. package/.agent/skills/game-design-expert/SKILL.md +71 -105
  90. package/.agent/skills/game-engineering-expert/SKILL.md +88 -122
  91. package/.agent/skills/geo-fundamentals/SKILL.md +89 -124
  92. package/.agent/skills/github-operations/SKILL.md +279 -314
  93. package/.agent/skills/gsap-expert/SKILL.md +119 -826
  94. package/.agent/skills/i18n-localization/SKILL.md +104 -138
  95. package/.agent/skills/intelligent-routing/SKILL.md +159 -127
  96. package/.agent/skills/lint-and-validate/SKILL.md +8 -52
  97. package/.agent/skills/llm-engineering/SKILL.md +344 -357
  98. package/.agent/skills/local-first/SKILL.md +120 -154
  99. package/.agent/skills/mcp-builder/SKILL.md +84 -118
  100. package/.agent/skills/mobile-design/SKILL.md +213 -219
  101. package/.agent/skills/motion-engineering/SKILL.md +184 -0
  102. package/.agent/skills/nextjs-react-expert/SKILL.md +99 -698
  103. package/.agent/skills/nodejs-best-practices/SKILL.md +498 -559
  104. package/.agent/skills/observability/SKILL.md +293 -330
  105. package/.agent/skills/parallel-agents/SKILL.md +88 -122
  106. package/.agent/skills/performance-profiling/SKILL.md +217 -254
  107. package/.agent/skills/plan-writing/SKILL.md +84 -118
  108. package/.agent/skills/platform-engineer/SKILL.md +89 -123
  109. package/.agent/skills/playwright-best-practices/SKILL.md +128 -162
  110. package/.agent/skills/powershell-windows/SKILL.md +112 -146
  111. package/.agent/skills/python-patterns/SKILL.md +7 -35
  112. package/.agent/skills/python-pro/SKILL.md +148 -754
  113. package/.agent/skills/react-specialist/SKILL.md +123 -827
  114. package/.agent/skills/readme-builder/SKILL.md +15 -85
  115. package/.agent/skills/realtime-patterns/SKILL.md +269 -304
  116. package/.agent/skills/red-team-tactics/SKILL.md +10 -51
  117. package/.agent/skills/rust-pro/SKILL.md +623 -701
  118. package/.agent/skills/seo-fundamentals/SKILL.md +120 -154
  119. package/.agent/skills/server-management/SKILL.md +156 -190
  120. package/.agent/skills/shadcn-ui-expert/SKILL.md +172 -206
  121. package/.agent/skills/skill-creator/SKILL.md +18 -58
  122. package/.agent/skills/sql-pro/SKILL.md +579 -633
  123. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +28 -68
  124. package/.agent/skills/swiftui-expert/SKILL.md +142 -176
  125. package/.agent/skills/systematic-debugging/SKILL.md +84 -118
  126. package/.agent/skills/tailwind-patterns/SKILL.md +516 -576
  127. package/.agent/skills/tdd-workflow/SKILL.md +103 -137
  128. package/.agent/skills/test-result-analyzer/SKILL.md +33 -73
  129. package/.agent/skills/testing-patterns/SKILL.md +512 -573
  130. package/.agent/skills/trend-researcher/SKILL.md +30 -71
  131. package/.agent/skills/ui-ux-pro-max/SKILL.md +0 -41
  132. package/.agent/skills/ui-ux-researcher/SKILL.md +51 -91
  133. package/.agent/skills/vue-expert/SKILL.md +127 -866
  134. package/.agent/skills/vulnerability-scanner/SKILL.md +354 -269
  135. package/.agent/skills/web-accessibility-auditor/SKILL.md +159 -193
  136. package/.agent/skills/web-design-guidelines/SKILL.md +17 -61
  137. package/.agent/skills/webapp-testing/SKILL.md +111 -145
  138. package/.agent/skills/whimsy-injector/SKILL.md +58 -132
  139. package/.agent/skills/workflow-optimizer/SKILL.md +28 -68
  140. package/.agent/workflows/api-tester.md +151 -151
  141. package/.agent/workflows/audit.md +127 -138
  142. package/.agent/workflows/brainstorm.md +110 -110
  143. package/.agent/workflows/changelog.md +112 -112
  144. package/.agent/workflows/create.md +124 -124
  145. package/.agent/workflows/debug.md +165 -189
  146. package/.agent/workflows/deploy.md +180 -189
  147. package/.agent/workflows/enhance.md +128 -151
  148. package/.agent/workflows/fix.md +114 -135
  149. package/.agent/workflows/generate.md +12 -4
  150. package/.agent/workflows/migrate.md +160 -160
  151. package/.agent/workflows/orchestrate.md +168 -168
  152. package/.agent/workflows/performance-benchmarker.md +114 -123
  153. package/.agent/workflows/plan.md +173 -173
  154. package/.agent/workflows/preview.md +80 -80
  155. package/.agent/workflows/refactor.md +161 -183
  156. package/.agent/workflows/review-ai.md +101 -129
  157. package/.agent/workflows/review.md +116 -116
  158. package/.agent/workflows/session.md +94 -94
  159. package/.agent/workflows/status.md +79 -79
  160. package/.agent/workflows/strengthen-skills.md +138 -139
  161. package/.agent/workflows/swarm.md +179 -179
  162. package/.agent/workflows/test.md +189 -211
  163. package/.agent/workflows/tribunal-backend.md +93 -113
  164. package/.agent/workflows/tribunal-database.md +94 -115
  165. package/.agent/workflows/tribunal-frontend.md +95 -118
  166. package/.agent/workflows/tribunal-full.md +92 -133
  167. package/.agent/workflows/tribunal-mobile.md +94 -119
  168. package/.agent/workflows/tribunal-performance.md +109 -133
  169. package/.agent/workflows/ui-ux-pro-max.md +122 -143
  170. package/package.json +1 -1
  171. package/.agent/skills/api-patterns/api-style.md +0 -42
  172. package/.agent/skills/api-patterns/auth.md +0 -24
  173. package/.agent/skills/api-patterns/documentation.md +0 -26
  174. package/.agent/skills/api-patterns/graphql.md +0 -41
  175. package/.agent/skills/api-patterns/rate-limiting.md +0 -31
  176. package/.agent/skills/api-patterns/response.md +0 -37
  177. package/.agent/skills/api-patterns/rest.md +0 -40
  178. package/.agent/skills/api-patterns/security-testing.md +0 -122
  179. package/.agent/skills/api-patterns/trpc.md +0 -41
  180. package/.agent/skills/api-patterns/versioning.md +0 -22
  181. package/.agent/skills/app-builder/agent-coordination.md +0 -71
  182. package/.agent/skills/app-builder/feature-building.md +0 -53
  183. package/.agent/skills/app-builder/project-detection.md +0 -34
  184. package/.agent/skills/app-builder/scaffolding.md +0 -118
  185. package/.agent/skills/app-builder/tech-stack.md +0 -40
  186. package/.agent/skills/architecture/context-discovery.md +0 -43
  187. package/.agent/skills/architecture/examples.md +0 -94
  188. package/.agent/skills/architecture/pattern-selection.md +0 -68
  189. package/.agent/skills/architecture/patterns-reference.md +0 -50
  190. package/.agent/skills/architecture/trade-off-analysis.md +0 -77
  191. package/.agent/skills/brainstorming/dynamic-questioning.md +0 -360
  192. package/.agent/skills/database-design/database-selection.md +0 -43
  193. package/.agent/skills/database-design/indexing.md +0 -39
  194. package/.agent/skills/database-design/migrations.md +0 -48
  195. package/.agent/skills/database-design/optimization.md +0 -36
  196. package/.agent/skills/database-design/orm-selection.md +0 -30
  197. package/.agent/skills/database-design/schema-design.md +0 -56
  198. package/.agent/skills/frontend-design/animation-guide.md +0 -331
  199. package/.agent/skills/frontend-design/color-system.md +0 -329
  200. package/.agent/skills/frontend-design/decision-trees.md +0 -418
  201. package/.agent/skills/frontend-design/motion-graphics.md +0 -306
  202. package/.agent/skills/frontend-design/typography-system.md +0 -363
  203. package/.agent/skills/frontend-design/ux-psychology.md +0 -1116
  204. package/.agent/skills/frontend-design/visual-effects.md +0 -383
  205. package/.agent/skills/intelligent-routing/router-manifest.md +0 -65
  206. package/.agent/skills/mobile-design/decision-trees.md +0 -516
  207. package/.agent/skills/mobile-design/mobile-backend.md +0 -491
  208. package/.agent/skills/mobile-design/mobile-color-system.md +0 -420
  209. package/.agent/skills/mobile-design/mobile-debugging.md +0 -122
  210. package/.agent/skills/mobile-design/mobile-design-thinking.md +0 -357
  211. package/.agent/skills/mobile-design/mobile-navigation.md +0 -458
  212. package/.agent/skills/mobile-design/mobile-performance.md +0 -767
  213. package/.agent/skills/mobile-design/mobile-testing.md +0 -356
  214. package/.agent/skills/mobile-design/mobile-typography.md +0 -433
  215. package/.agent/skills/mobile-design/platform-android.md +0 -666
  216. package/.agent/skills/mobile-design/platform-ios.md +0 -561
  217. package/.agent/skills/mobile-design/touch-psychology.md +0 -537
  218. package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
  219. package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
  220. package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
  221. package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
  222. package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
  223. package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
  224. package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
  225. package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
  226. package/.agent/skills/vulnerability-scanner/checklists.md +0 -121
@@ -1,208 +1,175 @@
1
- ---
2
- name: type-safety-reviewer
3
- description: Audits TypeScript code for unsafe any usage, unjustified type assertions, missing return types, unguarded property access, broken generic constraints, Zod parse vs cast confusion, and discriminated union exhaustiveness. Activates on /tribunal-backend, /tribunal-frontend, and /tribunal-full.
4
- version: 2.0.0
5
- last-updated: 2026-04-02
6
- ---
7
-
8
- # Type Safety Reviewer — The Type Enforcer
9
-
10
- > "TypeScript's job is to catch bugs before runtime. `any` defeats the entire purpose."
11
- > A codebase with `any` everywhere has the same safety profile as vanilla JavaScript.
12
-
13
- ---
14
-
15
- ## Core Mandate
16
-
17
- TypeScript is a contract system. Your job is to ensure every contract is honored — no silent escapes via `any`, no false assertions via `as`, no runtime surprises via unguarded nullable access.
18
-
19
- ---
20
-
21
- ## Section 1: The `any` Epidemic
22
-
23
- Flag every `any` that isn't accompanied by a documented justification comment.
24
-
25
- ```typescript
26
- // ❌ REJECTED: Lazy anythe type is knowable
27
- function process(data: any) { return data.name; }
28
-
29
- // REJECTED: Cast from unknown response — no runtime validation
30
- const result: any = await fetch('/api').then(r => r.json());
31
-
32
- // ✅ APPROVED: Narrow interface defined
33
- function process(data: { name: string; id: number }) { return data.name; }
34
-
35
- // ✅ APPROVED: Zod validates at runtime boundary
36
- const result = UserSchema.parse(await fetch('/api').then(r => r.json()));
37
-
38
- // ✅ APPROVED with documented justification
39
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
- const pluginData: any = loadDynamicPlugin(); // VERIFY: Plugin system has no static types
41
- ```
42
-
43
- ---
44
-
45
- ## Section 2: Type Assertion Abuse (`as` keyword)
46
-
47
- `as` silences the type checker without providing runtime safety.
48
-
49
- ```typescript
50
- // ❌ REJECTED: Assertion without validation crashes at runtime if wrong
51
- const user = response as User;
52
-
53
- // REJECTED: Double cast to escape type system entirely
54
- const config = data as unknown as Config;
55
-
56
- // ✅ APPROVED: Runtime-validated parse
57
- const user = UserSchema.parse(response);
58
-
59
- // ✅ APPROVED: Type guard with actual check
60
- function isUser(data: unknown): data is User {
61
- return typeof data === 'object' && data !== null && 'id' in data;
62
- }
63
- ```
64
-
65
- ---
66
-
67
- ## Section 3: Zod — Parse vs Cast Confusion
68
-
69
- This is one of the most common hallucinations in AI-generated TypeScript.
70
-
71
- ```typescript
72
- // ❌ REJECTED: Zod schema used as a type cast (does nothing at runtime)
73
- const user = z.object({ name: z.string() }) as unknown as User;
74
-
75
- // ❌ REJECTED: .safeParse() result used without checking .success
76
- const result = UserSchema.safeParse(input);
77
- return result.data; // Could be undefined if parsing failed!
78
-
79
- // ✅ APPROVED: .parse() throws on invalid input
80
- const user = UserSchema.parse(input);
81
-
82
- // APPROVED: .safeParse() with discriminated result check
83
- const result = UserSchema.safeParse(input);
84
- if (!result.success) {
85
- return NextResponse.json({ error: result.error.flatten() }, { status: 400 });
86
- }
87
- const user = result.data; // Narrowed to User here
88
- ```
89
-
90
- ---
91
-
92
- ## Section 4: Unguarded Property Access
93
-
94
- ```typescript
95
- // ❌ REJECTED: Chain crashes if address is null/undefined
96
- const city = user.address.city;
97
-
98
- // REJECTED: Index access without bound check
99
- const first = arr[0].name; // arr could be empty
100
-
101
- // ✅ APPROVED: Optional chaining with fallback
102
- const city = user.address?.city ?? 'Unknown';
103
-
104
- // ✅ APPROVED: Guard before access
105
- if (arr.length > 0) {
106
- const first = arr[0].name;
107
- }
108
- ```
109
-
110
- ---
111
-
112
- ## Section 5: Missing Return Types on Exports
113
-
114
- Public API functions are contracts. They must declare their return types explicitly.
115
-
116
- ```typescript
117
- // ❌ REJECTED: Return type inferred — callers can't trust the contract
118
- export async function getUser(id: string) {
119
- return db.users.findUnique({ where: { id } });
120
- }
121
-
122
- // ✅ APPROVED: Explicit contract
123
- export async function getUser(id: string): Promise<User | null> {
124
- return db.users.findUnique({ where: { id } });
125
- }
126
-
127
- // ✅ APPROVED: void return explicitly declared
128
- export function logEvent(event: string): void {
129
- console.log(event);
130
- }
131
- ```
132
-
133
- ---
134
-
135
- ## Section 6: Broken Generic Constraints
136
-
137
- ```typescript
138
- // ❌ REJECTED: Unconstrained generic loses type information
139
- function getProperty<T>(obj: T, key: string) {
140
- return (obj as any)[key]; // Forced to use any
141
- }
142
-
143
- // ✅ APPROVED: Constrained generic preserves type safety
144
- function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
145
- return obj[key];
146
- }
147
- ```
148
-
149
- ---
150
-
151
- ## Section 7: Discriminated Union Exhaustiveness
152
-
153
- ```typescript
154
- // REJECTED: Missing case coverage — new variants break silently
155
- type Status = 'active' | 'inactive' | 'pending';
156
- function label(s: Status): string {
157
- if (s === 'active') return 'Active';
158
- if (s === 'inactive') return 'Inactive';
159
- return ''; // 'pending' falls through silently
160
- }
161
-
162
- // ✅ APPROVED: Exhaustive check with never assertion
163
- function label(s: Status): string {
164
- switch (s) {
165
- case 'active': return 'Active';
166
- case 'inactive': return 'Inactive';
167
- case 'pending': return 'Pending';
168
- default: {
169
- const _exhaustive: never = s; // TypeScript errors if case is missing
170
- throw new Error(`Unknown status: ${_exhaustive}`);
171
- }
172
- }
173
- }
174
- ```
175
-
176
- ---
177
-
178
- ## Output Format
179
-
180
- ```
181
- 🔷 Type Safety Review: [APPROVED ✅ / REJECTED ❌ / WARNING ⚠️]
182
-
183
- Issues found:
184
- - Line 5: `data: any` — define an interface matching the API response shape
185
- - Line 14: `result.data` accessed without checking `result.success` from safeParse
186
- - Line 23: Missing explicit return type on exported `createUser` function
187
- - Line 41: `response.data.items` accessed without optional chaining — could crash
188
-
189
- Verdict: REJECTED — 3 unsafe patterns must be resolved before Human Gate.
190
- ```
191
-
192
- ---
193
-
194
- ## 🏛️ Tribunal Integration
195
-
196
- ### ✅ Pre-Flight Self-Audit
197
- ```
198
- ✅ Did I flag every `any` without a justified comment?
199
- ✅ Did I catch `as` assertions without runtime validation?
200
- ✅ Did I detect .safeParse() result used without .success check?
201
- ✅ Did I flag property chains on nullable values?
202
- ✅ Did I verify exported functions have explicit return types?
203
- ✅ Did I check generics have proper keyof/extends constraints?
204
- ✅ Did I verify discriminated unions have exhaustive coverage?
205
- ✅ Did I flag `as unknown as X` double-cast patterns?
206
- ✅ Did I check Promise return types include error unions (Promise<X | null>)?
207
- ✅ Did I output a clear APPROVED/REJECTED/WARNING verdict?
208
- ```
1
+ ---
2
+ name: type-safety-reviewer
3
+ description: Audits TypeScript code for unsafe any usage, unjustified type assertions, missing return types, unguarded property access, broken generic constraints, Zod parse vs cast confusion, and discriminated union exhaustiveness. Activates on /tribunal-backend, /tribunal-frontend, and /tribunal-full.
4
+ version: 2.0.0
5
+ last-updated: 2026-04-02
6
+ ---
7
+
8
+ # Type Safety Reviewer — The Type Enforcer
9
+
10
+ ---
11
+
12
+ ## Core Mandate
13
+
14
+ TypeScript is a contract system. Your job is to ensure every contract is honored — no silent escapes via `any`, no false assertions via `as`, no runtime surprises via unguarded nullable access.
15
+
16
+ ---
17
+
18
+ ## Section 1: The `any` Epidemic
19
+
20
+ Flag every `any` that isn't accompanied by a documented justification comment.
21
+
22
+ ```typescript
23
+ // REJECTED: Lazy any the type is knowable
24
+ function process(data: any) { return data.name; }
25
+
26
+ // ❌ REJECTED: Cast from unknown response no runtime validation
27
+ const result: any = await fetch('/api').then(r => r.json());
28
+
29
+ // APPROVED: Narrow interface defined
30
+ function process(data: { name: string; id: number }) { return data.name; }
31
+
32
+ // ✅ APPROVED: Zod validates at runtime boundary
33
+ const result = UserSchema.parse(await fetch('/api').then(r => r.json()));
34
+
35
+ // ✅ APPROVED with documented justification
36
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
37
+ const pluginData: any = loadDynamicPlugin(); // VERIFY: Plugin system has no static types
38
+ ```
39
+
40
+ ---
41
+
42
+ ## Section 2: Type Assertion Abuse (`as` keyword)
43
+
44
+ `as` silences the type checker without providing runtime safety.
45
+
46
+ ```typescript
47
+ // REJECTED: Assertion without validation — crashes at runtime if wrong
48
+ const user = response as User;
49
+
50
+ // ❌ REJECTED: Double cast to escape type system entirely
51
+ const config = data as unknown as Config;
52
+
53
+ // APPROVED: Runtime-validated parse
54
+ const user = UserSchema.parse(response);
55
+
56
+ // ✅ APPROVED: Type guard with actual check
57
+ function isUser(data: unknown): data is User {
58
+ return typeof data === 'object' && data !== null && 'id' in data;
59
+ }
60
+ ```
61
+
62
+ ---
63
+
64
+ ## Section 3: Zod — Parse vs Cast Confusion
65
+
66
+ This is one of the most common hallucinations in AI-generated TypeScript.
67
+
68
+ ```typescript
69
+ // REJECTED: Zod schema used as a type cast (does nothing at runtime)
70
+ const user = z.object({ name: z.string() }) as unknown as User;
71
+
72
+ // ❌ REJECTED: .safeParse() result used without checking .success
73
+ const result = UserSchema.safeParse(input);
74
+ return result.data; // Could be undefined if parsing failed!
75
+
76
+ // APPROVED: .parse() — throws on invalid input
77
+ const user = UserSchema.parse(input);
78
+
79
+ // ✅ APPROVED: .safeParse() with discriminated result check
80
+ const result = UserSchema.safeParse(input);
81
+ if (!result.success) {
82
+ return NextResponse.json({ error: result.error.flatten() }, { status: 400 });
83
+ }
84
+ const user = result.data; // Narrowed to User here
85
+ ```
86
+
87
+ ---
88
+
89
+ ## Section 4: Unguarded Property Access
90
+
91
+ ```typescript
92
+ // REJECTED: Chain crashes if address is null/undefined
93
+ const city = user.address.city;
94
+
95
+ // ❌ REJECTED: Index access without bound check
96
+ const first = arr[0].name; // arr could be empty
97
+
98
+ // APPROVED: Optional chaining with fallback
99
+ const city = user.address?.city ?? 'Unknown';
100
+
101
+ // ✅ APPROVED: Guard before access
102
+ if (arr.length > 0) {
103
+ const first = arr[0].name;
104
+ }
105
+ ```
106
+
107
+ ---
108
+
109
+ ## Section 5: Missing Return Types on Exports
110
+
111
+ Public API functions are contracts. They must declare their return types explicitly.
112
+
113
+ ```typescript
114
+ // REJECTED: Return type inferred callers can't trust the contract
115
+ export async function getUser(id: string) {
116
+ return db.users.findUnique({ where: { id } });
117
+ }
118
+
119
+ // APPROVED: Explicit contract
120
+ export async function getUser(id: string): Promise<User | null> {
121
+ return db.users.findUnique({ where: { id } });
122
+ }
123
+
124
+ // APPROVED: void return explicitly declared
125
+ export function logEvent(event: string): void {
126
+ console.log(event);
127
+ }
128
+ ```
129
+
130
+ ---
131
+
132
+ ## Section 6: Broken Generic Constraints
133
+
134
+ ```typescript
135
+ // REJECTED: Unconstrained generic loses type information
136
+ function getProperty<T>(obj: T, key: string) {
137
+ return (obj as any)[key]; // Forced to use any
138
+ }
139
+
140
+ // APPROVED: Constrained generic preserves type safety
141
+ function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
142
+ return obj[key];
143
+ }
144
+ ```
145
+
146
+ ---
147
+
148
+ ## Section 7: Discriminated Union Exhaustiveness
149
+
150
+ ```typescript
151
+ // REJECTED: Missing case coverage — new variants break silently
152
+ type Status = 'active' | 'inactive' | 'pending';
153
+ function label(s: Status): string {
154
+ if (s === 'active') return 'Active';
155
+ if (s === 'inactive') return 'Inactive';
156
+ return ''; // 'pending' falls through silently
157
+ }
158
+
159
+ // APPROVED: Exhaustive check with never assertion
160
+ function label(s: Status): string {
161
+ switch (s) {
162
+ case 'active': return 'Active';
163
+ case 'inactive': return 'Inactive';
164
+ case 'pending': return 'Pending';
165
+ default: {
166
+ const _exhaustive: never = s; // TypeScript errors if case is missing
167
+ throw new Error(`Unknown status: ${_exhaustive}`);
168
+ }
169
+ }
170
+ }
171
+ ```
172
+
173
+ ---
174
+
175
+ ---
@@ -1,9 +1,9 @@
1
- # Generator Pattern
2
-
3
- **Purpose**: Produce structured output by filling a reusable template governed by quality rules.
4
-
5
- ## Protocol
6
- When a skill inherits this pattern, the agent is tasked with producing a specific formatted artifact (like a configuration file, documentation page, or scaffolding code).
7
- 1. **Template Retrieval**: Locate and strictly adhere to the provided template structure (the "assets") defined by the specific skill.
8
- 2. **Constraint Application**: Apply all quality rules and constraints (the "references") required by the skill while fleshing out the template.
9
- 3. **No Halucination Formatting**: Do not invent new sections, alter the required Markdown/JSON structure, or add unauthorized commentary unless it fits directly into the predefined template slots.
1
+ # Generator Pattern
2
+
3
+ **Purpose**: Produce structured output by filling a reusable template governed by quality rules.
4
+
5
+ ## Protocol
6
+ When a skill inherits this pattern, the agent is tasked with producing a specific formatted artifact (like a configuration file, documentation page, or scaffolding code).
7
+ 1. **Template Retrieval**: Locate and strictly adhere to the provided template structure (the "assets") defined by the specific skill.
8
+ 2. **Constraint Application**: Apply all quality rules and constraints (the "references") required by the skill while fleshing out the template.
9
+ 3. **No Halucination Formatting**: Do not invent new sections, alter the required Markdown/JSON structure, or add unauthorized commentary unless it fits directly into the predefined template slots.
@@ -1,12 +1,12 @@
1
- # Inversion Pattern
2
-
3
- **Purpose**: Interview the user before taking action.
4
-
5
- ## Protocol
6
- When a skill inherits this pattern, you MUST NOT proceed with execution immediately. Instead, rely on the "Socratic Gate". You must pause and ask the user questions using the following structured phases:
7
- 1. **Identify Missing Context**: Evaluate the user's prompt against what is absolutely necessary to execute the skill.
8
- 2. **Phase 1 (Goal & Constraints)**: Ask the user about the real outcome and any hard constraints.
9
- 3. **Phase 2 (Out of Scope)**: Confirm what should explicitly NOT be done.
10
- 4. **Phase 3 (Done Condition)**: Verify how you will know the task is completed.
11
-
12
- You must receive explicit answers or a "do your best" override before writing code or executing substantive actions.
1
+ # Inversion Pattern
2
+
3
+ **Purpose**: Interview the user before taking action.
4
+
5
+ ## Protocol
6
+ When a skill inherits this pattern, you MUST NOT proceed with execution immediately. Instead, rely on the "Socratic Gate". You must pause and ask the user questions using the following structured phases:
7
+ 1. **Identify Missing Context**: Evaluate the user's prompt against what is absolutely necessary to execute the skill.
8
+ 2. **Phase 1 (Goal & Constraints)**: Ask the user about the real outcome and any hard constraints.
9
+ 3. **Phase 2 (Out of Scope)**: Confirm what should explicitly NOT be done.
10
+ 4. **Phase 3 (Done Condition)**: Verify how you will know the task is completed.
11
+
12
+ You must receive explicit answers or a "do your best" override before writing code or executing substantive actions.
@@ -1,9 +1,9 @@
1
- # Pipeline Pattern
2
-
3
- **Purpose**: Link multiple execution steps together with explicit validation gates between them.
4
-
5
- ## Protocol
6
- When a skill inherits this pattern, the agent must execute its instructions sequentially and rigidly.
7
- 1. **Step-by-Step Execution**: You must not skip steps or combine multiple distinct phases into a single massive generative output.
8
- 2. **Validation Gates**: After completing Step N, you must validate that the output of Step N meets its success criteria before moving to Step N+1.
9
- 3. **Halting**: If any gate fails validation, you must HALT the pipeline and either initiate an Error Recovery Protocol or report the failure to the user. Do not proceed with subsequent steps with broken inputs.
1
+ # Pipeline Pattern
2
+
3
+ **Purpose**: Link multiple execution steps together with explicit validation gates between them.
4
+
5
+ ## Protocol
6
+ When a skill inherits this pattern, the agent must execute its instructions sequentially and rigidly.
7
+ 1. **Step-by-Step Execution**: You must not skip steps or combine multiple distinct phases into a single massive generative output.
8
+ 2. **Validation Gates**: After completing Step N, you must validate that the output of Step N meets its success criteria before moving to Step N+1.
9
+ 3. **Halting**: If any gate fails validation, you must HALT the pipeline and either initiate an Error Recovery Protocol or report the failure to the user. Do not proceed with subsequent steps with broken inputs.
@@ -1,13 +1,13 @@
1
- # Reviewer Pattern
2
-
3
- **Purpose**: Evaluate code or content against a strict external checklist.
4
-
5
- ## Protocol
6
- When a skill inherits this pattern, the agent assumes the role of an evaluator. Do NOT generate novel content or fix the problem automatically unless explicitly instructed.
7
- 1. **Checklist Enforcement**: You must read the evaluation checklist provided in the specific skill.
8
- 2. **Review Output**: For every item in the checklist, determine if it passes or fails.
9
- 3. **Severity Grading**: Group all findings by severity:
10
- - **Critical**: Must fix before proceeding (e.g. security violations, build errors)
11
- - **Warning**: Should fix (e.g. best practice violations, performance risks)
12
- - **Info**: Stylistic or minor suggestions
13
- 4. **Separation of Concerns**: Only evaluate the "what" (the checklist) based on the "how" (this standard format). Do not blur your own opinions into the checklist constraints.
1
+ # Reviewer Pattern
2
+
3
+ **Purpose**: Evaluate code or content against a strict external checklist.
4
+
5
+ ## Protocol
6
+ When a skill inherits this pattern, the agent assumes the role of an evaluator. Do NOT generate novel content or fix the problem automatically unless explicitly instructed.
7
+ 1. **Checklist Enforcement**: You must read the evaluation checklist provided in the specific skill.
8
+ 2. **Review Output**: For every item in the checklist, determine if it passes or fails.
9
+ 3. **Severity Grading**: Group all findings by severity:
10
+ - **Critical**: Must fix before proceeding (e.g. security violations, build errors)
11
+ - **Warning**: Should fix (e.g. best practice violations, performance risks)
12
+ - **Info**: Stylistic or minor suggestions
13
+ 4. **Separation of Concerns**: Only evaluate the "what" (the checklist) based on the "how" (this standard format). Do not blur your own opinions into the checklist constraints.
@@ -1,9 +1,9 @@
1
- # Tool Wrapper Pattern
2
-
3
- **Purpose**: Package an external library's or CLI tool's conventions as on-demand, executable knowledge.
4
-
5
- ## Protocol
6
- When a skill inherits this pattern, the agent MUST NOT guess how to use the target tool. You are acting strictly as a wrapper for this specific utility.
7
- 1. **Consult References**: Read the provided documentation, usage examples, or reference notes in the skill definitions BEFORE issuing any commands.
8
- 2. **Strict Adherence**: Follow the rules defined in the skill exactly as written. Do not improvise flags, parameters, or endpoints that are not explicitly authorized by the reference.
9
- 3. **Command Execution**: If the tool is a CLI command or Python script (e.g. `test_runner.py`), construct the command accurately based solely on the referenced conventions, execute it, and report the direct output.
1
+ # Tool Wrapper Pattern
2
+
3
+ **Purpose**: Package an external library's or CLI tool's conventions as on-demand, executable knowledge.
4
+
5
+ ## Protocol
6
+ When a skill inherits this pattern, the agent MUST NOT guess how to use the target tool. You are acting strictly as a wrapper for this specific utility.
7
+ 1. **Consult References**: Read the provided documentation, usage examples, or reference notes in the skill definitions BEFORE issuing any commands.
8
+ 2. **Strict Adherence**: Follow the rules defined in the skill exactly as written. Do not improvise flags, parameters, or endpoints that are not explicitly authorized by the reference.
9
+ 3. **Command Execution**: If the tool is a CLI command or Python script (e.g. `test_runner.py`), construct the command accurately based solely on the referenced conventions, execute it, and report the direct output.