Back to skills
SKILL.md
Architecture
ASecurityUse when 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.
- 5 stars
- 0 votes
- 0 copies
- 0 views
- Added September 27, 2026
Works with
Security analysis
100/100npx -y skills add Harmitx7/tribunal-kit --skill architecture --agent claude-codeAre you the author of Architecture?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/harmitx7-architecture-tribunal-kit)---
name: architecture
description: "Use when 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."
version: 5.0.0
last-updated: 2026-09-13
skills:
- domain-modeling
- codebase-design
- clean-code
tools: Read, Grep, Glob, Bash, Edit, Write
scripts-binding:
- .agent/scripts/lint_runner.js
- .agent/scripts/verify_all.js
---
# Architecture β System Design Mastery
---
## π οΈ Technical Architecture & Reference Recipes
---
## Hallucination Traps (Read First)
- β Choosing microservices for a team of 1-3 developers -> β
Start monolith, extract services only when team/scale demands it
- β Using event-driven architecture without understanding eventual consistency -> β
Events mean data will be stale; design for it
- β Skipping ADRs (Architecture Decision Records) -> β
Every non-obvious decision needs a written 'why' for future maintainers
---
## Architecture Selection
```
Team size? Scale? Cadence?
1β5 β Monolith <10K RPM β Monolith Weekly β Monolith
5β20 β Mod. Mono <100K RPM β Mono+CDN Daily β Modular Mono
20+ β Microsvcs >100K RPM β Microsvcs Per-svc β Microsvcs
β Microservices are NOT inherently better.
A well-structured monolith beats a poorly designed microservice system.
Start monolith. Extract services only when proven necessary.
```
**3 Questions Before Any Pattern:**
1. What SPECIFIC problem does this pattern solve?
2. Is there a simpler solution?
3. Can we add this LATER when proven needed?
---
## Clean Architecture (Dependency Rule)
```
Presentation β Application β Domain β Infrastructure
(Controllers) (Use Cases) (Entities) (DB, APIs)
Dependency Rule: arrows point INWARD. Domain knows NOTHING about infra.
Application defines interfaces (ports). Infrastructure implements them (adapters).
```
```typescript
// Domain β pure business logic, zero external dependencies
interface UserRepository {
findById(id: string): Promise<User | null>;
}
class User {
promote(): void {
if (this._role === UserRole.ADMIN) throw new DomainError('Already admin');
this._role = UserRole.ADMIN;
}
}
// Application β orchestrates use cases
class PromoteUserUseCase {
async execute(userId: string): Promise<void> {
const user = await this.userRepo.findById(userId);
if (!user) throw new NotFoundError('User', userId);
user.promote();
await this.userRepo.save(user);
await this.eventBus.publish(new UserPromotedEvent(userId));
}
}
// Infrastructure β concrete implementations of ports
class PostgresUserRepository implements UserRepository {
async findById(id: string) {
/* db.query(...) */
}
}
```
---
## CQRS
```
Commands (Write) β Normalized Write DB
Queries (Read) β Denormalized/Cached Read Model
When to use: β
Read/write patterns diverge β
10:1+ read:write ratio β
Event sourcing
When NOT to: β Simple CRUD β Team < 3 devs β Read/write models are identical
```
---
## Event-Driven Architecture
```
Event Types:
Domain Events β "OrderPlaced" within a bounded context
Integration Events β Cross-service via message queue
Notification Events β Fire-and-forget (logging, analytics)
Broker Selection:
BullMQ / Redis Streams β Simple, single-service queues
RabbitMQ β Complex routing, dead-letter queues
Apache Kafka β High throughput, replay, event log
AWS SQS/SNS β Managed, serverless-friendly
Outbox Pattern (reliable publishing):
1. Save entity + event in ONE DB transaction
2. Background worker polls outbox β publishes to broker
3. Mark as published β guarantees at-least-once delivery
```
---
## Anti-Patterns Reference
| Pattern | When it's an Anti-Pattern | Simpler Alternative |
| --------------- | ------------------------------------------- | -------------------------------- |
| Microservices | Before team or scale justifies it | Modular monolith |
| Clean/Hexagonal | Over-abstraction for simple CRUD | Concrete first, interfaces later |
| Event Sourcing | No business requirement for audit/replay | Append-only audit log |
| CQRS | Simple data model, no read/write divergence | Single model |
| Repository | Simple CRUD, single database | ORM direct access |
---
## Architecture Decision Records (ADRs)
```markdown
## ADR-001: [Decision Title]
**Status:** Proposed | Accepted | Deprecated | Superseded by ADR-XXX
**Context:** [Problem + constraints: team, scale, timeline]
**Decision:** [What was chosen β be specific]
**Rationale:** [Why β tied to requirements]
**Trade-offs:** [What we consciously give up]
**Consequences:**
- Positive: [Benefits]
- Negative: [Costs/Risks]
- Mitigation: [How to address negatives]
**Revisit when:** [Trigger conditions]
```
ADR storage: `docs/architecture/adr-001-title.md`
---
## Scalability Patterns
```
Read scaling: Redis cache β Read replicas β CDN for static assets
Write scaling: Queue writes β Partition data β Event sourcing
Stateless: Sessions in Redis β JWT β No server affinity
DB scaling: Connection pooling β Read replicas β Partitioning β Sharding (last resort)
Cache layers: L1: In-memory (process) L2: Redis (shared) L3: CDN (edge)
```
## Scale-to-Architecture Matrix
```
MVP SaaS Enterprise
Scale: <1K 1Kβ100K 100K+
Team: Solo 2β10 10+
Architecture: Simple Mono Modular Mono Distributed
Framework: Next.js API NestJS Microservices
```
Attribution
Comments
Loading commentsβ¦