tribunal-kit 2.4.6 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/.agent/agents/accessibility-reviewer.md +220 -134
  2. package/.agent/agents/ai-code-reviewer.md +233 -129
  3. package/.agent/agents/backend-specialist.md +238 -178
  4. package/.agent/agents/code-archaeologist.md +181 -119
  5. package/.agent/agents/database-architect.md +207 -164
  6. package/.agent/agents/debugger.md +218 -151
  7. package/.agent/agents/dependency-reviewer.md +136 -55
  8. package/.agent/agents/devops-engineer.md +238 -175
  9. package/.agent/agents/documentation-writer.md +221 -137
  10. package/.agent/agents/explorer-agent.md +180 -142
  11. package/.agent/agents/frontend-reviewer.md +194 -80
  12. package/.agent/agents/frontend-specialist.md +237 -188
  13. package/.agent/agents/game-developer.md +52 -184
  14. package/.agent/agents/logic-reviewer.md +149 -78
  15. package/.agent/agents/mobile-developer.md +223 -152
  16. package/.agent/agents/mobile-reviewer.md +195 -79
  17. package/.agent/agents/orchestrator.md +211 -170
  18. package/.agent/agents/penetration-tester.md +174 -131
  19. package/.agent/agents/performance-optimizer.md +203 -139
  20. package/.agent/agents/performance-reviewer.md +211 -108
  21. package/.agent/agents/product-manager.md +162 -108
  22. package/.agent/agents/project-planner.md +162 -142
  23. package/.agent/agents/qa-automation-engineer.md +242 -138
  24. package/.agent/agents/security-auditor.md +194 -170
  25. package/.agent/agents/seo-specialist.md +213 -132
  26. package/.agent/agents/sql-reviewer.md +194 -73
  27. package/.agent/agents/supervisor-agent.md +203 -156
  28. package/.agent/agents/test-coverage-reviewer.md +193 -81
  29. package/.agent/agents/type-safety-reviewer.md +208 -65
  30. package/.agent/scripts/__pycache__/auto_preview.cpython-311.pyc +0 -0
  31. package/.agent/scripts/__pycache__/bundle_analyzer.cpython-311.pyc +0 -0
  32. package/.agent/scripts/__pycache__/checklist.cpython-311.pyc +0 -0
  33. package/.agent/scripts/__pycache__/dependency_analyzer.cpython-311.pyc +0 -0
  34. package/.agent/scripts/__pycache__/security_scan.cpython-311.pyc +0 -0
  35. package/.agent/scripts/__pycache__/session_manager.cpython-311.pyc +0 -0
  36. package/.agent/scripts/__pycache__/skill_integrator.cpython-311.pyc +0 -0
  37. package/.agent/scripts/__pycache__/swarm_dispatcher.cpython-311.pyc +0 -0
  38. package/.agent/scripts/__pycache__/test_runner.cpython-311.pyc +0 -0
  39. package/.agent/scripts/__pycache__/verify_all.cpython-311.pyc +0 -0
  40. package/.agent/skills/agent-organizer/SKILL.md +126 -132
  41. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +155 -66
  42. package/.agent/skills/api-patterns/SKILL.md +289 -257
  43. package/.agent/skills/api-security-auditor/SKILL.md +172 -70
  44. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +1 -1
  45. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +1 -1
  46. package/.agent/skills/appflow-wireframe/SKILL.md +107 -100
  47. package/.agent/skills/architecture/SKILL.md +331 -200
  48. package/.agent/skills/authentication-best-practices/SKILL.md +168 -67
  49. package/.agent/skills/bash-linux/SKILL.md +154 -215
  50. package/.agent/skills/brainstorming/SKILL.md +104 -210
  51. package/.agent/skills/building-native-ui/SKILL.md +169 -70
  52. package/.agent/skills/clean-code/SKILL.md +360 -206
  53. package/.agent/skills/config-validator/SKILL.md +141 -165
  54. package/.agent/skills/csharp-developer/SKILL.md +528 -107
  55. package/.agent/skills/database-design/SKILL.md +455 -275
  56. package/.agent/skills/deployment-procedures/SKILL.md +145 -188
  57. package/.agent/skills/devops-engineer/SKILL.md +332 -134
  58. package/.agent/skills/devops-incident-responder/SKILL.md +113 -98
  59. package/.agent/skills/edge-computing/SKILL.md +157 -213
  60. package/.agent/skills/extract-design-system/SKILL.md +129 -69
  61. package/.agent/skills/framer-motion-expert/SKILL.md +939 -0
  62. package/.agent/skills/game-design-expert/SKILL.md +105 -0
  63. package/.agent/skills/game-engineering-expert/SKILL.md +122 -0
  64. package/.agent/skills/geo-fundamentals/SKILL.md +124 -215
  65. package/.agent/skills/github-operations/SKILL.md +314 -354
  66. package/.agent/skills/gsap-expert/SKILL.md +901 -0
  67. package/.agent/skills/i18n-localization/SKILL.md +138 -216
  68. package/.agent/skills/intelligent-routing/SKILL.md +127 -139
  69. package/.agent/skills/llm-engineering/SKILL.md +357 -258
  70. package/.agent/skills/local-first/SKILL.md +154 -203
  71. package/.agent/skills/mcp-builder/SKILL.md +118 -224
  72. package/.agent/skills/nextjs-react-expert/SKILL.md +783 -203
  73. package/.agent/skills/nodejs-best-practices/SKILL.md +559 -280
  74. package/.agent/skills/observability/SKILL.md +330 -285
  75. package/.agent/skills/parallel-agents/SKILL.md +122 -181
  76. package/.agent/skills/performance-profiling/SKILL.md +254 -197
  77. package/.agent/skills/plan-writing/SKILL.md +118 -188
  78. package/.agent/skills/platform-engineer/SKILL.md +123 -135
  79. package/.agent/skills/playwright-best-practices/SKILL.md +157 -76
  80. package/.agent/skills/powershell-windows/SKILL.md +146 -230
  81. package/.agent/skills/python-pro/SKILL.md +879 -114
  82. package/.agent/skills/react-specialist/SKILL.md +931 -108
  83. package/.agent/skills/realtime-patterns/SKILL.md +304 -296
  84. package/.agent/skills/rust-pro/SKILL.md +701 -240
  85. package/.agent/skills/seo-fundamentals/SKILL.md +154 -181
  86. package/.agent/skills/server-management/SKILL.md +190 -212
  87. package/.agent/skills/shadcn-ui-expert/SKILL.md +201 -68
  88. package/.agent/skills/sql-pro/SKILL.md +633 -104
  89. package/.agent/skills/swiftui-expert/SKILL.md +171 -70
  90. package/.agent/skills/systematic-debugging/SKILL.md +118 -186
  91. package/.agent/skills/tailwind-patterns/SKILL.md +576 -232
  92. package/.agent/skills/tdd-workflow/SKILL.md +137 -209
  93. package/.agent/skills/testing-patterns/SKILL.md +573 -205
  94. package/.agent/skills/vue-expert/SKILL.md +964 -119
  95. package/.agent/skills/vulnerability-scanner/SKILL.md +269 -316
  96. package/.agent/skills/web-accessibility-auditor/SKILL.md +188 -71
  97. package/.agent/skills/webapp-testing/SKILL.md +145 -236
  98. package/.agent/workflows/api-tester.md +151 -279
  99. package/.agent/workflows/audit.md +138 -168
  100. package/.agent/workflows/brainstorm.md +110 -146
  101. package/.agent/workflows/changelog.md +112 -144
  102. package/.agent/workflows/create.md +124 -139
  103. package/.agent/workflows/debug.md +189 -196
  104. package/.agent/workflows/deploy.md +189 -153
  105. package/.agent/workflows/enhance.md +151 -139
  106. package/.agent/workflows/fix.md +135 -143
  107. package/.agent/workflows/generate.md +157 -164
  108. package/.agent/workflows/migrate.md +160 -163
  109. package/.agent/workflows/orchestrate.md +168 -151
  110. package/.agent/workflows/performance-benchmarker.md +123 -305
  111. package/.agent/workflows/plan.md +173 -151
  112. package/.agent/workflows/preview.md +80 -137
  113. package/.agent/workflows/refactor.md +183 -153
  114. package/.agent/workflows/review-ai.md +129 -140
  115. package/.agent/workflows/review.md +116 -155
  116. package/.agent/workflows/session.md +94 -154
  117. package/.agent/workflows/status.md +79 -125
  118. package/.agent/workflows/strengthen-skills.md +139 -99
  119. package/.agent/workflows/swarm.md +179 -194
  120. package/.agent/workflows/test.md +211 -166
  121. package/.agent/workflows/tribunal-backend.md +113 -111
  122. package/.agent/workflows/tribunal-database.md +115 -132
  123. package/.agent/workflows/tribunal-frontend.md +118 -115
  124. package/.agent/workflows/tribunal-full.md +133 -136
  125. package/.agent/workflows/tribunal-mobile.md +119 -123
  126. package/.agent/workflows/tribunal-performance.md +133 -152
  127. package/.agent/workflows/ui-ux-pro-max.md +143 -171
  128. package/README.md +11 -15
  129. package/package.json +1 -1
  130. package/.agent/skills/dotnet-core-expert/SKILL.md +0 -103
  131. package/.agent/skills/framer-motion-animations/SKILL.md +0 -74
  132. package/.agent/skills/game-development/2d-games/SKILL.md +0 -119
  133. package/.agent/skills/game-development/3d-games/SKILL.md +0 -135
  134. package/.agent/skills/game-development/SKILL.md +0 -236
  135. package/.agent/skills/game-development/game-art/SKILL.md +0 -185
  136. package/.agent/skills/game-development/game-audio/SKILL.md +0 -190
  137. package/.agent/skills/game-development/game-design/SKILL.md +0 -129
  138. package/.agent/skills/game-development/mobile-games/SKILL.md +0 -108
  139. package/.agent/skills/game-development/multiplayer/SKILL.md +0 -132
  140. package/.agent/skills/game-development/pc-games/SKILL.md +0 -144
  141. package/.agent/skills/game-development/vr-ar/SKILL.md +0 -123
  142. package/.agent/skills/game-development/web-games/SKILL.md +0 -150
@@ -1,200 +1,331 @@
1
- ---
2
- name: architecture
3
- description: Architectural decision-making framework. Requirements analysis, trade-off evaluation, ADR documentation. Use when making architecture decisions or analyzing system design.
4
- allowed-tools: Read, Write, Edit, Glob, Grep
5
- version: 1.0.0
6
- last-updated: 2026-03-12
7
- applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
8
- ---
9
-
10
- # Architecture Decision Framework
11
-
12
- > An architecture decision is only good until the constraints change.
13
- > Document the decision AND the reasoning future teams need both.
14
-
15
- ---
16
-
17
- ## When to Use This Skill
18
-
19
- - A new system, service, or major feature is being designed
20
- - An existing architecture is being evaluated for scaling, cost, or maintainability problems
21
- - A team disagrees on technical direction and needs a structured decision process
22
- - A decision needs to be documented so future engineers understand the "why"
23
-
24
- ---
25
-
26
- ## The Decision Process
27
-
28
- Good architecture decisions follow a sequence. Skipping steps creates decisions that look good in a diagram and fail in production.
29
-
30
- ### Phase 1 Understand the Forces
31
-
32
- Before proposing anything, map what actually constrains the design:
33
-
34
- ```
35
- Requirements: What must this system do?
36
- Quality attributes: Speed, reliability, security, cost, maintainability — rank them
37
- Constraints: Team size, existing tech, regulatory, budget
38
- Team context: What does the team already know? What can they operate?
39
- ```
40
-
41
- **The trap:** Jumping to technology before understanding quality attributes.
42
- If the top priority is "cheap to run" — that's a different answer than "sub-100ms response time."
43
-
44
- ### Phase 2 — Generate Options
45
-
46
- Produce at least 2 real alternates. "We could do X, or we could not" is not a comparison.
47
-
48
- For each option document:
49
- - How it satisfies the top quality attributes
50
- - Where it falls short
51
- - Long-term operational cost (not just build cost)
52
- - Risk to the team given their current knowledge
53
-
54
- ### Phase 3 — Evaluate Trade-offs
55
-
56
- Use a table:
57
-
58
- | Quality Attribute | Option A | Option B | Option C |
59
- |---|---|---|---|
60
- | Time to first delivery | ★★★ | ★★ | ★★★★ |
61
- | Operational complexity | Low | High | Medium |
62
- | Cost at 10x scale | $ | $$$ | $$ |
63
-
64
- The option with the most stars doesn't always win. **The one that best fits the top-priority attributes wins.**
65
-
66
- ### Phase 4 Document the Decision (ADR)
67
-
68
- Every significant architecture decision gets an ADR (Architecture Decision Record).
69
-
70
- ```markdown
71
- # ADR-NNN: [Short title]
72
-
73
- ## Status
74
- Accepted / Proposed / Deprecated / Superseded by ADR-NNN
75
-
76
- ## Context
77
- [What situation or problem prompted this decision?]
78
-
79
- ## Options Considered
80
- [Brief description of each option]
81
-
82
- ## Decision
83
- [What was chosen and why]
84
-
85
- ## Trade-offs Accepted
86
- [What downsides are being consciously accepted?]
87
-
88
- ## Consequences
89
- [What becomes easier? What becomes harder?]
90
- ```
91
-
92
- ---
93
-
94
- ## File Index
95
-
96
- | File | Covers | When to Load |
97
- |---|---|---|
98
- | `context-discovery.md` | Questions to map requirements and constraints | Early in design |
99
- | `pattern-selection.md` | Monolith vs microservices, event-driven, CQRS, etc. | Choosing structural patterns |
100
- | `patterns-reference.md` | Reference descriptions of common patterns | Evaluating patterns |
101
- | `trade-off-analysis.md` | Scoring and comparison frameworks | Decision phase |
102
- | `examples.md` | Worked architecture examples | Concrete reference |
103
-
104
- ---
105
-
106
- ## Anti-Patterns in Architecture Work
107
-
108
- | Pattern | Problem |
109
- |---|---|
110
- | Resume-driven architecture | Choosing tech because it's interesting, not because it fits |
111
- | Premature microservices | Splitting a monolith before the domain boundaries are known |
112
- | Ignoring operational cost | Systems that are brilliant to build and terrible to run |
113
- | No ADR | Decision rationale lost future engineers repeat the same debates |
114
- | One option considered | Not an evaluation, just a justification |
115
-
116
- ---
117
-
118
- ## Output Format
119
-
120
- When this skill produces a recommendation or design decision, structure your output as:
121
-
122
- ```
123
- ━━━ Architecture Recommendation ━━━━━━━━━━━━━━━━
124
- Decision: [what was chosen / proposed]
125
- Rationale: [why — one concise line]
126
- Trade-offs: [what is consciously accepted]
127
- Next action: [concrete next step for the user]
128
- ─────────────────────────────────────────────────
129
- Pre-Flight: ✅ All checks passed
130
- or [blocking item that must be resolved first]
131
- ```
132
-
133
-
134
- ---
135
-
136
- ## 🏛️ Tribunal Integration (Anti-Hallucination)
137
-
138
- **Slash command: `/brainstorm` or `/plan`**
139
- **Active reviewers: `project-planner` · `logic-reviewer`**
140
-
141
- ### Forbidden AI Tropes in Architecture
142
-
143
- 1. **Defaulting to Microservices** — never recommend Microservices for a new or small project without explicit scale requirements. Monolith first.
144
- 2. **Over-engineering with CQRS/Event Sourcing** — do not suggest complex distributed patterns unless the domain demands it.
145
- 3. **Assuming AWS/Cloud Provider** ask where the user deploys, do not hallucinate AWS services as the default solution.
146
- 4. **Ignoring Operational Cost** do not recommend architectures that require dedicated DevOps teams if the user is a solo developer.
147
- 5. **Failing to Document Trade-offs** — every architecture decision has a downside. Never present a "perfect" solution.
148
-
149
- ### ✅ Pre-Flight Self-Audit
150
-
151
- Review these questions before proposing an architecture:
152
- ```
153
- Did I start with the simplest architecture that satisfies the constraints?
154
- Did I explicitly document the downsides (cost, complexity, maintainability) of my proposal?
155
- Is my proposal grounded in the user's actual constraints (team size, budget, timeline)?
156
- Did I ask about the read/write ratio and data shape before choosing a database?
157
- ✅ Is my solution resilient to partial failures?
158
- ```
159
-
160
-
161
- ---
162
-
163
- ## 🤖 LLM-Specific Traps
164
-
165
- AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
166
-
167
- 1. **Over-engineering:** Proposing complex abstractions or distributed systems when a simpler approach suffices.
168
- 2. **Hallucinated Libraries/Methods:** Using non-existent methods or packages. Always `// VERIFY` or check `package.json` / `requirements.txt`.
169
- 3. **Skipping Edge Cases:** Writing the "happy path" and ignoring error handling, timeouts, or data validation.
170
- 4. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
171
- 5. **Silent Degradation:** Catching and suppressing errors without logging or re-raising.
172
-
173
- ---
174
-
175
- ## 🏛️ Tribunal Integration (Anti-Hallucination)
176
-
177
- **Slash command: `/review` or `/tribunal-full`**
178
- **Active reviewers: `logic-reviewer` · `security-auditor`**
179
-
180
- ### Forbidden AI Tropes
181
-
182
- 1. **Blind Assumptions:** Never make an assumption without documenting it clearly with `// VERIFY: [reason]`.
183
- 2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
184
- 3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
185
-
186
- ### ✅ Pre-Flight Self-Audit
187
-
188
- Review these questions before confirming output:
189
- ```
190
- Did I rely ONLY on real, verified tools and methods?
191
- ✅ Is this solution appropriately scoped to the user's constraints?
192
- Did I handle potential failure modes and edge cases?
193
- Have I avoided generic boilerplate that doesn't add value?
194
- ```
195
-
196
- ### 🛑 Verification-Before-Completion (VBC) Protocol
197
-
198
- **CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
199
- - **Forbidden:** Declaring a task complete because the output "looks correct."
200
- - **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
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 developers → Modular 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
+ // Infrastructureconcrete 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
+ ```