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,331 +1,169 @@
1
- ---
2
- name: architecture
3
- description: Software architecture mastery. System design patterns, clean architecture, hexagonal/ports-and-adapters, event-driven architecture, microservices vs monolith decision framework, CQRS, domain-driven design, Architecture Decision Records (ADRs), and scalability patterns. Use when making architecture decisions, designing systems, or documenting technical decisions.
4
- allowed-tools: Read, Write, Edit, Glob, Grep
5
- version: 2.0.0
6
- last-updated: 2026-04-01
7
- applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
8
- ---
9
-
10
- # Architecture System Design Mastery
11
-
12
- > Architecture is the set of decisions you wish you could get right the first time.
13
- > Every architecture decision is a trade-off. Document the trade-off, not just the choice.
14
-
15
- ---
16
-
17
- ## Architecture Selection
18
-
19
- ```
20
- ┌────────────────────────────────────────────────────────────────┐
21
- │ What Architecture Do You Need? │
22
- ├────────────────────────────────────────────────────────────────┤
23
- │ │
24
- Team size? │
25
- ├── 1-5 developers → Modular Monolith │
26
- │ ├── 5-20 developersModular Monolith + Event Bus │
27
- │ └── 20+ developers → Microservices (with platform team) │
28
- │ │
29
- │ Scale requirements? │
30
- │ ├── Single region, <10K RPM Monolith │
31
- │ ├── Multi-region, <100K RPM → Monolith + CDN + Read Replicas │
32
- │ └── Global, >100K RPM → Microservices + Edge │
33
- │ │
34
- │ Deployment cadence?
35
- │ ├── Weekly releases Monolith │
36
- │ ├── Daily releases, different modules Modular Monolith │
37
- │ └── Continuous per-service deployment → Microservices │
38
- │ │
39
- │ ❌ HALLUCINATION TRAP: Microservices are NOT inherently better │
40
- │ A well-structured monolith beats a poorly designed microservice│
41
- │ architecture. Start monolith. Extract services when you MUST. │
42
- └────────────────────────────────────────────────────────────────┘
43
- ```
44
-
45
- ---
46
-
47
- ## Clean Architecture (Layered)
48
-
49
- ```
50
- ┌───────────────────────────────────────────────┐
51
- │ Presentation Layer │
52
- │ Controllers / Minimal APIs / CLI / UI │
53
- ├───────────────────────────────────────────────┤
54
- │ Application Layer │
55
- Use Cases / Commands / Queries / DTOs │
56
- ├───────────────────────────────────────────────┤
57
- │ Domain Layer (Core) │
58
- │ Entities / Value Objects / Domain Events │
59
- │ Business Rules / Interfaces (Ports) │
60
- ├───────────────────────────────────────────────┤
61
- │ Infrastructure Layer │
62
- │ Database / External APIs / File System │
63
- Message Queues / Email / Cache (Adapters)
64
- └───────────────────────────────────────────────┘
65
-
66
- Dependency Rule: Dependencies point INWARD only.
67
- - Infrastructure → Application → Domain
68
- - Domain knows NOTHING about infrastructure
69
- - Application defines interfaces (ports)
70
- - Infrastructure implements them (adapters)
71
- ```
72
-
73
- ```typescript
74
- // Domain layer — pure business logic, zero dependencies
75
- interface UserRepository {
76
- findById(id: string): Promise<User | null>;
77
- save(user: User): Promise<void>;
78
- }
79
-
80
- class User {
81
- constructor(
82
- public readonly id: string,
83
- public name: string,
84
- public email: string,
85
- private _role: UserRole,
86
- ) {}
87
-
88
- promote(): void {
89
- if (this._role === UserRole.ADMIN) {
90
- throw new DomainError("Already admin");
91
- }
92
- this._role = UserRole.ADMIN;
93
- }
94
- }
95
-
96
- // Application layer orchestrates use cases
97
- class PromoteUserUseCase {
98
- constructor(
99
- private userRepo: UserRepository,
100
- private eventBus: EventBus,
101
- ) {}
102
-
103
- async execute(userId: string): Promise<void> {
104
- const user = await this.userRepo.findById(userId);
105
- if (!user) throw new NotFoundError("User", userId);
106
-
107
- user.promote(); // domain logic
108
- await this.userRepo.save(user);
109
- await this.eventBus.publish(new UserPromotedEvent(userId));
110
- }
111
- }
112
-
113
- // Infrastructure — concrete implementations
114
- class PostgresUserRepository implements UserRepository {
115
- async findById(id: string): Promise<User | null> {
116
- const row = await db.query("SELECT * FROM users WHERE id = $1", [id]);
117
- return row ? User.fromRow(row) : null;
118
- }
119
- }
120
- ```
121
-
122
- ---
123
-
124
- ## CQRS (Command Query Responsibility Segregation)
125
-
126
- ```
127
- Commands (Write) Queries (Read)
128
- ┌─────────────┐ ┌──────────────┐
129
- CreateUser │──→ Write DB ──→ │ UserListView
130
- │ UpdateOrder │ (normalized) │ OrderSummary │
131
- DeletePost │ │ Dashboard │
132
- └─────────────┘ └──────────────┘
133
-
134
- Read DB / Cache
135
- (denormalized, optimized)
136
-
137
- When to use CQRS:
138
- ✅ Read and write patterns are very different
139
- ✅ Read-heavy system (10:1+ read:write ratio)
140
- Need different optimization for reads vs writes
141
- Event sourcing
142
-
143
- When NOT to use:
144
- Simple CRUD app
145
- ❌ Small team (< 3 developers)
146
- ❌ Read and write models are nearly identical
147
- ```
148
-
149
- ```typescript
150
- // Command
151
- class CreateOrderCommand {
152
- constructor(
153
- public readonly userId: string,
154
- public readonly items: OrderItem[],
155
- public readonly shippingAddress: Address,
156
- ) {}
157
- }
158
-
159
- // Command Handler
160
- class CreateOrderHandler {
161
- constructor(private orderRepo: OrderRepository, private eventBus: EventBus) {}
162
-
163
- async handle(cmd: CreateOrderCommand): Promise<string> {
164
- const order = Order.create(cmd.userId, cmd.items, cmd.shippingAddress);
165
- await this.orderRepo.save(order);
166
- await this.eventBus.publish(new OrderCreatedEvent(order.id));
167
- return order.id;
168
- }
169
- }
170
-
171
- // Query (reads from denormalized view)
172
- class GetOrderSummaryQuery {
173
- constructor(public readonly orderId: string) {}
174
- }
175
-
176
- class GetOrderSummaryHandler {
177
- constructor(private readDb: ReadOnlyDatabase) {}
178
-
179
- async handle(query: GetOrderSummaryQuery): Promise<OrderSummaryView> {
180
- return this.readDb.findOne("order_summaries", { id: query.orderId });
181
- }
182
- }
183
- ```
184
-
185
- ---
186
-
187
- ## Event-Driven Architecture
188
-
189
- ```
190
- Producer → Event Bus → Consumer(s)
191
-
192
- Event types:
193
- 1. Domain Events → "OrderPlaced", "UserRegistered" (within bounded context)
194
- 2. Integration Events → cross-service communication (via message queue)
195
- 3. Notification Events → fire-and-forget (logging, analytics)
196
-
197
- Message brokers:
198
- - Redis Streams / BullMQ → simple, good for single-service queues
199
- - RabbitMQ → complex routing, exchanges, dead-letter queues
200
- - Apache Kafka → high throughput, event log, replay capability
201
- - AWS SQS/SNS → managed, serverless-friendly
202
- ```
203
-
204
- ```typescript
205
- // Domain event
206
- interface DomainEvent {
207
- eventId: string;
208
- eventType: string;
209
- aggregateId: string;
210
- occurredAt: Date;
211
- data: Record<string, unknown>;
212
- }
213
-
214
- // Event handler
215
- class SendWelcomeEmailHandler {
216
- constructor(private emailService: EmailService) {}
217
-
218
- async handle(event: DomainEvent & { eventType: "user.registered" }) {
219
- await this.emailService.send({
220
- to: event.data.email as string,
221
- template: "welcome",
222
- });
223
- }
224
- }
225
-
226
- // Outbox pattern (reliable event publishing)
227
- // 1. Save entity + event in SAME db transaction
228
- // 2. Background worker polls outbox table → publishes to event bus
229
- // 3. Mark as published
230
- // This guarantees at-least-once delivery without distributed transactions
231
- ```
232
-
233
- ---
234
-
235
- ## Architecture Decision Records (ADRs)
236
-
237
- ```markdown
238
- # ADR-001: Use PostgreSQL as Primary Database
239
-
240
- ## Status: Accepted
241
-
242
- ## Context
243
- We need a relational database for our SaaS application with complex querying
244
- requirements, multi-tenancy, and full-text search capabilities.
245
-
246
- ## Decision
247
- We will use PostgreSQL 16 with pgvector extension for AI features.
248
-
249
- ## Consequences
250
- ### Positive
251
- - Strong ecosystem, proven at scale (Instagram, Discord)
252
- - JSONB support for flexible schema fields
253
- - pgvector eliminates need for separate vector DB
254
-
255
- ### Negative
256
- - More operational complexity than managed options (Supabase mitigates this)
257
- - Connection pooling required for serverless (PgBouncer)
258
-
259
- ### Risks
260
- - Team has limited PostgreSQL DBA experience → mitigated by managed hosting
261
-
262
- ## Alternatives Considered
263
- | Database | Rejected Because |
264
- |-------------|----------------------------------------|
265
- | MySQL | Weaker JSON support, no pgvector |
266
- | MongoDB | No strong consistency, no JOINs |
267
- | PlanetScale | MySQL-based, no extensions |
268
- ```
269
-
270
- ---
271
-
272
- ## Scalability Patterns
273
-
274
- ```
275
- Vertical Scaling → Bigger machine (simple, limited)
276
- Horizontal Scaling → More machines (complex, unlimited)
277
-
278
- Read scaling:
279
- Cache layer (Redis) → Read replicas → CDN for static assets
280
-
281
- Write scaling:
282
- Queue writes → Partition/shard data → Event sourcing
283
-
284
- Stateless services:
285
- Sessions in Redis → JWT tokens → No server affinity
286
-
287
- Database scaling:
288
- Connection pooling → Read replicas → Partitioning → Sharding (last resort)
289
-
290
- Caching strategy:
291
- L1: In-memory (process)
292
- L2: Redis/Memcached (shared)
293
- L3: CDN (edge)
294
- Cache invalidation > Cache expiration (when possible)
295
- ```
296
-
297
- ---
298
-
299
- ## 🤖 LLM-Specific Traps
300
-
301
- 1. **Premature Microservices:** Don't split into microservices until you have team/scale pressure. Start with a modular monolith.
302
- 2. **CQRS for Simple CRUD:** CQRS adds complexity. Only use when read/write patterns are fundamentally different.
303
- 3. **"Clean Architecture" Without Domain Logic:** If your "domain layer" is just DTOs, you don't need Clean Architecture.
304
- 4. **Event Sourcing as Default:** Event sourcing is complex. Only use for audit-heavy domains (finance, compliance).
305
- 5. **Shared Database Between Services:** Microservices with a shared database are a distributed monolith.
306
- 6. **Missing ADRs:** Every significant technical decision needs a documented ADR. "We just decided" is not acceptable.
307
- 7. **Synchronous Microservice Chains:** Service A → B → C → D is a distributed monolith with worse latency.
308
- 8. **Ignoring Conway's Law:** Architecture mirrors org structure. Don't fight it.
309
- 9. **"Hexagonal Architecture" Without Ports:** Just having layers isn't hexagonal. You need explicit port interfaces.
310
- 10. **Over-Abstracting Day One:** YAGNI. Build the simplest thing that works, refactor when patterns emerge.
311
-
312
- ---
313
-
314
- ## 🏛️ Tribunal Integration
315
-
316
- **Slash command: `/tribunal-backend`**
317
-
318
- ### ✅ Pre-Flight Self-Audit
319
-
320
- ```
321
- ✅ Did I document the architecture decision as an ADR?
322
- ✅ Is the architecture appropriate for team size and scale?
323
- ✅ Do dependencies point inward (domain has no infrastructure deps)?
324
- ✅ Did I start simple and avoid premature optimization?
325
- ✅ Is the system stateless (sessions in Redis/JWT)?
326
- ✅ Did I consider failure modes (what happens when service X is down)?
327
- ✅ Is there a caching strategy (L1/L2/L3)?
328
- ✅ Are cross-service calls async (events, not synchronous chains)?
329
- ✅ Did I document trade-offs, not just the chosen solution?
330
- ✅ Does the architecture match the team's actual skill set?
331
- ```
1
+ ---
2
+ name: architecture
3
+ description: Software architecture mastery. System design patterns, clean architecture, hexagonal/ports-and-adapters, event-driven architecture, microservices vs monolith decision framework, CQRS, domain-driven design, Architecture Decision Records (ADRs), and scalability patterns. Use when making architecture decisions, designing systems, or documenting technical decisions.
4
+ allowed-tools: Read, Write, Edit, Glob, Grep
5
+ version: 3.1.0
6
+ last-updated: 2026-04-07
7
+ applies-to-model: gemini-3-1-pro, claude-3-7-sonnet
8
+ ---
9
+
10
+ ## Hallucination Traps (Read First)
11
+ - ❌ Choosing microservices for a team of 1-3 developers -> ✅ Start monolith, extract services only when team/scale demands it
12
+ - Using event-driven architecture without understanding eventual consistency -> Events mean data will be stale; design for it
13
+ - Skipping ADRs (Architecture Decision Records) -> Every non-obvious decision needs a written 'why' for future maintainers
14
+
15
+ ---
16
+
17
+
18
+ # Architecture — System Design Mastery
19
+
20
+ ## Architecture Selection
21
+
22
+ ```
23
+ Team size? Scale? Cadence?
24
+ 1–5 → Monolith <10K RPM Monolith Weekly → Monolith
25
+ 5–20 Mod. Mono <100K RPM Mono+CDN Daily → Modular Mono
26
+ 20+ → Microsvcs >100K RPM Microsvcs Per-svc Microsvcs
27
+
28
+ ❌ Microservices are NOT inherently better.
29
+ A well-structured monolith beats a poorly designed microservice system.
30
+ Start monolith. Extract services only when proven necessary.
31
+ ```
32
+
33
+ **3 Questions Before Any Pattern:**
34
+ 1. What SPECIFIC problem does this pattern solve?
35
+ 2. Is there a simpler solution?
36
+ 3. Can we add this LATER when proven needed?
37
+
38
+ ---
39
+
40
+ ## Clean Architecture (Dependency Rule)
41
+
42
+ ```
43
+ Presentation → Application → Domain ← Infrastructure
44
+ (Controllers) (Use Cases) (Entities) (DB, APIs)
45
+
46
+ Dependency Rule: arrows point INWARD. Domain knows NOTHING about infra.
47
+ Application defines interfaces (ports). Infrastructure implements them (adapters).
48
+ ```
49
+
50
+ ```typescript
51
+ // Domain — pure business logic, zero external dependencies
52
+ interface UserRepository { findById(id: string): Promise<User | null>; }
53
+ class User {
54
+ promote(): void {
55
+ if (this._role === UserRole.ADMIN) throw new DomainError("Already admin");
56
+ this._role = UserRole.ADMIN;
57
+ }
58
+ }
59
+
60
+ // Application — orchestrates use cases
61
+ class PromoteUserUseCase {
62
+ async execute(userId: string): Promise<void> {
63
+ const user = await this.userRepo.findById(userId);
64
+ if (!user) throw new NotFoundError("User", userId);
65
+ user.promote();
66
+ await this.userRepo.save(user);
67
+ await this.eventBus.publish(new UserPromotedEvent(userId));
68
+ }
69
+ }
70
+
71
+ // Infrastructure — concrete implementations of ports
72
+ class PostgresUserRepository implements UserRepository {
73
+ async findById(id: string) { /* db.query(...) */ }
74
+ }
75
+ ```
76
+
77
+ ---
78
+
79
+ ## CQRS
80
+
81
+ ```
82
+ Commands (Write) Normalized Write DB
83
+ Queries (Read) → Denormalized/Cached Read Model
84
+
85
+ When to use: Read/write patterns diverge ✅ 10:1+ read:write ratio ✅ Event sourcing
86
+ When NOT to: Simple CRUD ❌ Team < 3 devs ❌ Read/write models are identical
87
+ ```
88
+
89
+ ---
90
+
91
+ ## Event-Driven Architecture
92
+
93
+ ```
94
+ Event Types:
95
+ Domain Events → "OrderPlaced" within a bounded context
96
+ Integration Events Cross-service via message queue
97
+ Notification Events → Fire-and-forget (logging, analytics)
98
+
99
+ Broker Selection:
100
+ BullMQ / Redis Streams → Simple, single-service queues
101
+ RabbitMQ → Complex routing, dead-letter queues
102
+ Apache Kafka → High throughput, replay, event log
103
+ AWS SQS/SNS → Managed, serverless-friendly
104
+
105
+ Outbox Pattern (reliable publishing):
106
+ 1. Save entity + event in ONE DB transaction
107
+ 2. Background worker polls outbox → publishes to broker
108
+ 3. Mark as published → guarantees at-least-once delivery
109
+ ```
110
+
111
+ ---
112
+
113
+ ## Anti-Patterns Reference
114
+
115
+ | Pattern | When it's an Anti-Pattern | Simpler Alternative |
116
+ |---------|--------------------------|---------------------|
117
+ | Microservices | Before team or scale justifies it | Modular monolith |
118
+ | Clean/Hexagonal | Over-abstraction for simple CRUD | Concrete first, interfaces later |
119
+ | Event Sourcing | No business requirement for audit/replay | Append-only audit log |
120
+ | CQRS | Simple data model, no read/write divergence | Single model |
121
+ | Repository | Simple CRUD, single database | ORM direct access |
122
+
123
+ ---
124
+
125
+ ## Architecture Decision Records (ADRs)
126
+
127
+ ```markdown
128
+ ## ADR-001: [Decision Title]
129
+ **Status:** Proposed | Accepted | Deprecated | Superseded by ADR-XXX
130
+
131
+ **Context:** [Problem + constraints: team, scale, timeline]
132
+
133
+ **Decision:** [What was chosen — be specific]
134
+
135
+ **Rationale:** [Why — tied to requirements]
136
+
137
+ **Trade-offs:** [What we consciously give up]
138
+
139
+ **Consequences:**
140
+ - Positive: [Benefits]
141
+ - Negative: [Costs/Risks]
142
+ - Mitigation: [How to address negatives]
143
+
144
+ **Revisit when:** [Trigger conditions]
145
+ ```
146
+
147
+ ADR storage: `docs/architecture/adr-001-title.md`
148
+
149
+ ---
150
+
151
+ ## Scalability Patterns
152
+
153
+ ```
154
+ Read scaling: Redis cache → Read replicas → CDN for static assets
155
+ Write scaling: Queue writes → Partition data → Event sourcing
156
+ Stateless: Sessions in Redis → JWT → No server affinity
157
+ DB scaling: Connection pooling → Read replicas → Partitioning → Sharding (last resort)
158
+ Cache layers: L1: In-memory (process) L2: Redis (shared) L3: CDN (edge)
159
+ ```
160
+
161
+ ## Scale-to-Architecture Matrix
162
+
163
+ ```
164
+ MVP SaaS Enterprise
165
+ Scale: <1K 1K–100K 100K+
166
+ Team: Solo 2–10 10+
167
+ Architecture: Simple Mono Modular Mono Distributed
168
+ Framework: Next.js API NestJS Microservices
169
+ ```