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.
- package/.agent/ARCHITECTURE.md +99 -99
- package/.agent/GEMINI.md +52 -52
- package/.agent/agents/accessibility-reviewer.md +187 -220
- package/.agent/agents/ai-code-reviewer.md +199 -233
- package/.agent/agents/backend-specialist.md +215 -238
- package/.agent/agents/code-archaeologist.md +161 -181
- package/.agent/agents/database-architect.md +184 -207
- package/.agent/agents/debugger.md +191 -218
- package/.agent/agents/dependency-reviewer.md +103 -136
- package/.agent/agents/devops-engineer.md +218 -238
- package/.agent/agents/documentation-writer.md +201 -221
- package/.agent/agents/explorer-agent.md +160 -180
- package/.agent/agents/frontend-reviewer.md +160 -194
- package/.agent/agents/frontend-specialist.md +248 -237
- package/.agent/agents/game-developer.md +48 -52
- package/.agent/agents/logic-reviewer.md +116 -149
- package/.agent/agents/mobile-developer.md +200 -223
- package/.agent/agents/mobile-reviewer.md +162 -195
- package/.agent/agents/orchestrator.md +181 -211
- package/.agent/agents/penetration-tester.md +157 -174
- package/.agent/agents/performance-optimizer.md +183 -203
- package/.agent/agents/performance-reviewer.md +178 -211
- package/.agent/agents/precedence-reviewer.md +213 -0
- package/.agent/agents/product-manager.md +142 -162
- package/.agent/agents/product-owner.md +6 -25
- package/.agent/agents/project-planner.md +142 -162
- package/.agent/agents/qa-automation-engineer.md +225 -242
- package/.agent/agents/security-auditor.md +174 -194
- package/.agent/agents/seo-specialist.md +193 -213
- package/.agent/agents/sql-reviewer.md +161 -194
- package/.agent/agents/supervisor-agent.md +184 -203
- package/.agent/agents/swarm-worker-contracts.md +17 -17
- package/.agent/agents/swarm-worker-registry.md +46 -46
- package/.agent/agents/test-coverage-reviewer.md +160 -193
- package/.agent/agents/test-engineer.md +0 -21
- package/.agent/agents/type-safety-reviewer.md +175 -208
- package/.agent/patterns/generator.md +9 -9
- package/.agent/patterns/inversion.md +12 -12
- package/.agent/patterns/pipeline.md +9 -9
- package/.agent/patterns/reviewer.md +13 -13
- package/.agent/patterns/tool-wrapper.md +9 -9
- package/.agent/rules/GEMINI.md +63 -63
- package/.agent/scripts/append_flow.js +72 -0
- package/.agent/scripts/case_law_manager.py +525 -0
- package/.agent/scripts/compress_skills.py +167 -0
- package/.agent/scripts/consolidate_skills.py +173 -0
- package/.agent/scripts/deep_compress.py +202 -0
- package/.agent/scripts/minify_context.py +80 -0
- package/.agent/scripts/security_scan.py +1 -1
- package/.agent/scripts/skill_evolution.py +563 -0
- package/.agent/scripts/strip_tribunal.py +41 -0
- package/.agent/skills/agent-organizer/SKILL.md +100 -126
- package/.agent/skills/agentic-patterns/SKILL.md +0 -70
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +134 -160
- package/.agent/skills/api-patterns/SKILL.md +123 -215
- package/.agent/skills/api-security-auditor/SKILL.md +143 -177
- package/.agent/skills/app-builder/SKILL.md +334 -50
- package/.agent/skills/app-builder/templates/SKILL.md +13 -15
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +16 -16
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +22 -22
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +18 -18
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +20 -20
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +17 -17
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +18 -18
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +21 -21
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +19 -19
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +26 -26
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +26 -26
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +19 -19
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +18 -18
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +20 -20
- package/.agent/skills/appflow-wireframe/SKILL.md +95 -121
- package/.agent/skills/architecture/SKILL.md +169 -331
- package/.agent/skills/authentication-best-practices/SKILL.md +139 -173
- package/.agent/skills/bash-linux/SKILL.md +129 -154
- package/.agent/skills/behavioral-modes/SKILL.md +8 -69
- package/.agent/skills/brainstorming/SKILL.md +436 -104
- package/.agent/skills/building-native-ui/SKILL.md +152 -174
- package/.agent/skills/clean-code/SKILL.md +331 -360
- package/.agent/skills/code-review-checklist/SKILL.md +0 -62
- package/.agent/skills/config-validator/SKILL.md +115 -141
- package/.agent/skills/csharp-developer/SKILL.md +468 -528
- package/.agent/skills/database-design/SKILL.md +104 -369
- package/.agent/skills/deployment-procedures/SKILL.md +119 -145
- package/.agent/skills/devops-engineer/SKILL.md +295 -332
- package/.agent/skills/devops-incident-responder/SKILL.md +87 -113
- package/.agent/skills/doc.md +5 -5
- package/.agent/skills/documentation-templates/SKILL.md +27 -63
- package/.agent/skills/edge-computing/SKILL.md +131 -157
- package/.agent/skills/extract-design-system/SKILL.md +108 -134
- package/.agent/skills/framer-motion-expert/SKILL.md +111 -855
- package/.agent/skills/frontend-design/SKILL.md +151 -499
- package/.agent/skills/game-design-expert/SKILL.md +79 -105
- package/.agent/skills/game-engineering-expert/SKILL.md +96 -122
- package/.agent/skills/geo-fundamentals/SKILL.md +97 -124
- package/.agent/skills/github-operations/SKILL.md +279 -314
- package/.agent/skills/gsap-expert/SKILL.md +119 -826
- package/.agent/skills/i18n-localization/SKILL.md +113 -138
- package/.agent/skills/intelligent-routing/SKILL.md +167 -127
- package/.agent/skills/lint-and-validate/SKILL.md +16 -52
- package/.agent/skills/llm-engineering/SKILL.md +344 -357
- package/.agent/skills/local-first/SKILL.md +128 -154
- package/.agent/skills/mcp-builder/SKILL.md +92 -118
- package/.agent/skills/mobile-design/SKILL.md +213 -219
- package/.agent/skills/motion-engineering/SKILL.md +184 -0
- package/.agent/skills/nextjs-react-expert/SKILL.md +99 -698
- package/.agent/skills/nodejs-best-practices/SKILL.md +498 -559
- package/.agent/skills/observability/SKILL.md +293 -330
- package/.agent/skills/parallel-agents/SKILL.md +96 -122
- package/.agent/skills/performance-profiling/SKILL.md +217 -254
- package/.agent/skills/plan-writing/SKILL.md +92 -118
- package/.agent/skills/platform-engineer/SKILL.md +97 -123
- package/.agent/skills/playwright-best-practices/SKILL.md +137 -162
- package/.agent/skills/powershell-windows/SKILL.md +112 -146
- package/.agent/skills/project-idioms/SKILL.md +87 -0
- package/.agent/skills/python-patterns/SKILL.md +15 -35
- package/.agent/skills/python-pro/SKILL.md +148 -754
- package/.agent/skills/react-specialist/SKILL.md +123 -827
- package/.agent/skills/readme-builder/SKILL.md +23 -85
- package/.agent/skills/realtime-patterns/SKILL.md +269 -304
- package/.agent/skills/red-team-tactics/SKILL.md +18 -51
- package/.agent/skills/rust-pro/SKILL.md +623 -701
- package/.agent/skills/seo-fundamentals/SKILL.md +129 -154
- package/.agent/skills/server-management/SKILL.md +164 -190
- package/.agent/skills/shadcn-ui-expert/SKILL.md +181 -206
- package/.agent/skills/skill-creator/SKILL.md +24 -56
- package/.agent/skills/sql-pro/SKILL.md +579 -633
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +35 -66
- package/.agent/skills/swiftui-expert/SKILL.md +151 -176
- package/.agent/skills/systematic-debugging/SKILL.md +92 -118
- package/.agent/skills/tailwind-patterns/SKILL.md +516 -576
- package/.agent/skills/tdd-workflow/SKILL.md +111 -137
- package/.agent/skills/test-result-analyzer/SKILL.md +33 -73
- package/.agent/skills/testing-patterns/SKILL.md +512 -573
- package/.agent/skills/trend-researcher/SKILL.md +30 -71
- package/.agent/skills/ui-ux-pro-max/SKILL.md +8 -41
- package/.agent/skills/ui-ux-researcher/SKILL.md +51 -91
- package/.agent/skills/vue-expert/SKILL.md +127 -866
- package/.agent/skills/vulnerability-scanner/SKILL.md +354 -269
- package/.agent/skills/web-accessibility-auditor/SKILL.md +168 -193
- package/.agent/skills/web-design-guidelines/SKILL.md +25 -61
- package/.agent/skills/webapp-testing/SKILL.md +119 -145
- package/.agent/skills/whimsy-injector/SKILL.md +58 -132
- package/.agent/skills/workflow-optimizer/SKILL.md +28 -68
- package/.agent/workflows/api-tester.md +151 -151
- package/.agent/workflows/audit.md +127 -138
- package/.agent/workflows/brainstorm.md +110 -110
- package/.agent/workflows/changelog.md +112 -112
- package/.agent/workflows/create.md +124 -124
- package/.agent/workflows/debug.md +165 -189
- package/.agent/workflows/deploy.md +180 -189
- package/.agent/workflows/enhance.md +128 -151
- package/.agent/workflows/fix.md +114 -135
- package/.agent/workflows/generate.md +13 -4
- package/.agent/workflows/migrate.md +160 -160
- package/.agent/workflows/orchestrate.md +168 -168
- package/.agent/workflows/performance-benchmarker.md +114 -123
- package/.agent/workflows/plan.md +173 -173
- package/.agent/workflows/preview.md +80 -80
- package/.agent/workflows/refactor.md +161 -183
- package/.agent/workflows/review-ai.md +101 -129
- package/.agent/workflows/review.md +116 -116
- package/.agent/workflows/session.md +94 -94
- package/.agent/workflows/status.md +79 -79
- package/.agent/workflows/strengthen-skills.md +138 -139
- package/.agent/workflows/swarm.md +179 -179
- package/.agent/workflows/test.md +189 -211
- package/.agent/workflows/tribunal-backend.md +94 -113
- package/.agent/workflows/tribunal-database.md +95 -115
- package/.agent/workflows/tribunal-frontend.md +96 -118
- package/.agent/workflows/tribunal-full.md +93 -133
- package/.agent/workflows/tribunal-mobile.md +95 -119
- package/.agent/workflows/tribunal-performance.md +110 -133
- package/.agent/workflows/ui-ux-pro-max.md +122 -143
- package/README.md +30 -1
- package/bin/tribunal-kit.js +175 -12
- package/package.json +25 -4
- package/.agent/skills/api-patterns/api-style.md +0 -42
- package/.agent/skills/api-patterns/auth.md +0 -24
- package/.agent/skills/api-patterns/documentation.md +0 -26
- package/.agent/skills/api-patterns/graphql.md +0 -41
- package/.agent/skills/api-patterns/rate-limiting.md +0 -31
- package/.agent/skills/api-patterns/response.md +0 -37
- package/.agent/skills/api-patterns/rest.md +0 -40
- package/.agent/skills/api-patterns/security-testing.md +0 -122
- package/.agent/skills/api-patterns/trpc.md +0 -41
- package/.agent/skills/api-patterns/versioning.md +0 -22
- package/.agent/skills/app-builder/agent-coordination.md +0 -71
- package/.agent/skills/app-builder/feature-building.md +0 -53
- package/.agent/skills/app-builder/project-detection.md +0 -34
- package/.agent/skills/app-builder/scaffolding.md +0 -118
- package/.agent/skills/app-builder/tech-stack.md +0 -40
- package/.agent/skills/architecture/context-discovery.md +0 -43
- package/.agent/skills/architecture/examples.md +0 -94
- package/.agent/skills/architecture/pattern-selection.md +0 -68
- package/.agent/skills/architecture/patterns-reference.md +0 -50
- package/.agent/skills/architecture/trade-off-analysis.md +0 -77
- package/.agent/skills/brainstorming/dynamic-questioning.md +0 -360
- package/.agent/skills/database-design/database-selection.md +0 -43
- package/.agent/skills/database-design/indexing.md +0 -39
- package/.agent/skills/database-design/migrations.md +0 -48
- package/.agent/skills/database-design/optimization.md +0 -36
- package/.agent/skills/database-design/orm-selection.md +0 -30
- package/.agent/skills/database-design/schema-design.md +0 -56
- package/.agent/skills/frontend-design/animation-guide.md +0 -331
- package/.agent/skills/frontend-design/color-system.md +0 -329
- package/.agent/skills/frontend-design/decision-trees.md +0 -418
- package/.agent/skills/frontend-design/motion-graphics.md +0 -306
- package/.agent/skills/frontend-design/typography-system.md +0 -363
- package/.agent/skills/frontend-design/ux-psychology.md +0 -1116
- package/.agent/skills/frontend-design/visual-effects.md +0 -383
- package/.agent/skills/intelligent-routing/router-manifest.md +0 -65
- package/.agent/skills/mobile-design/decision-trees.md +0 -516
- package/.agent/skills/mobile-design/mobile-backend.md +0 -491
- package/.agent/skills/mobile-design/mobile-color-system.md +0 -420
- package/.agent/skills/mobile-design/mobile-debugging.md +0 -122
- package/.agent/skills/mobile-design/mobile-design-thinking.md +0 -357
- package/.agent/skills/mobile-design/mobile-navigation.md +0 -458
- package/.agent/skills/mobile-design/mobile-performance.md +0 -767
- package/.agent/skills/mobile-design/mobile-testing.md +0 -356
- package/.agent/skills/mobile-design/mobile-typography.md +0 -433
- package/.agent/skills/mobile-design/platform-android.md +0 -666
- package/.agent/skills/mobile-design/platform-ios.md +0 -561
- package/.agent/skills/mobile-design/touch-psychology.md +0 -537
- package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
- package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
- package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
- package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
- package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
- package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
- package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
- package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
- 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:
|
|
6
|
-
last-updated: 2026-04-
|
|
7
|
-
applies-to-model: gemini-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
// 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
|
+
```
|