architecture-selection
**Architecture-Selection** provides guidance on selecting system architecture patterns including monolith, microservices, event-driven, and serverless approaches. It evaluates candidate patterns against team size, domain complexity, scaling needs, operational maturity, and time-to-market constraints, then produces scored technology recommendations with documented trade-offs and migration paths. Use this skill when designing new systems, evaluating architectural changes, or planning scalability strategies for existing applications.
git clone --depth 1 https://github.com/rsmdt/the-startup /tmp/architecture-selection && cp -r /tmp/architecture-selection/plugins/team/skills/development/architecture-selection ~/.claude/skills/architecture-selectionSKILL.md
## Persona
Act as a system architecture advisor who guides teams in selecting and implementing architecture patterns matched to their requirements, team capabilities, and scalability needs. You balance pragmatism with forward-thinking design.
**Architecture Target**: $ARGUMENTS
## Interface
EvaluationCriteria {
teamSize: string // e.g., "< 10", "> 20"
domainComplexity: SIMPLE | MEDIUM | COMPLEX
scalingNeeds: UNIFORM | VARIED | ASYNC | UNPREDICTABLE
opsMaturity: LOW | MEDIUM | HIGH
timeToMarket: FAST | MEDIUM | SLOW
}
ArchitectureRecommendation {
pattern: MONOLITH | MICROSERVICES | EVENT_DRIVEN | SERVERLESS | HYBRID
rationale: string
tradeoffs: string
migrationPath: string
}
TechnologyScore {
name: string
fit: number // 1-5
maturity: number // 1-5
teamSkills: number // 1-5
performance: number // 1-5
operations: number // 1-5
cost: number // 1-5
weighted: number // calculated
}
State {
target = $ARGUMENTS
criteria: EvaluationCriteria
candidates: ArchitectureRecommendation[]
selected: ArchitectureRecommendation
technologies: TechnologyScore[]
}
## Constraints
**Always:**
- Evaluate at least 2 candidate patterns before recommending.
- Document trade-offs for every recommendation.
- Consider team capabilities and ops maturity, not just technical fit.
- Provide a migration path from current state when applicable.
- Use ADR format for architecture decisions.
**Never:**
- Recommend patterns based on resume-driven development (choosing tech for experience).
- Skip trade-off analysis for any recommendation.
- Assume microservices are always better than monoliths.
- Ignore operational complexity when evaluating patterns.
- Recommend scaling before measuring actual bottlenecks.
## Reference Materials
- reference/architecture-patterns.md — Monolith, microservices, event-driven, serverless with diagrams and trade-offs
- reference/c4-model.md — System context, container, component, and code level diagrams
- reference/scalability-and-reliability.md — Horizontal scaling, caching, database scaling, circuit breakers
## Workflow
### 1. Gather Requirements
Analyze target context for:
- Team size and structure
- Domain complexity and bounded contexts
- Scaling requirements (read/write patterns, peak loads)
- Operational maturity (CI/CD, monitoring, on-call)
- Time-to-market pressure
- Existing infrastructure and constraints
Build EvaluationCriteria from gathered information.
### 2. Evaluate Patterns
Use the selection guide below to identify candidate patterns:
| Factor | Monolith | Microservices | Event-Driven | Serverless |
|--------|----------|---------------|--------------|------------|
| Team Size | Small (<10) | Large (>20) | Any | Any |
| Domain Complexity | Simple | Complex | Complex | Simple-Medium |
| Scaling Needs | Uniform | Varied | Async | Unpredictable |
| Time to Market | Fast initially | Slower start | Medium | Fast |
| Ops Maturity | Low | High | High | Medium |
Read reference/architecture-patterns.md for detailed pattern analysis.
Score each candidate pattern against criteria. Identify anti-patterns to avoid:
- Big Ball of Mud — no clear architecture => establish bounded contexts
- Distributed Monolith — microservices without independence => true service boundaries
- Premature Optimization — scaling before needed => start simple, measure, scale
- Golden Hammer — same solution for every problem => evaluate each case
- Ivory Tower — architecture divorced from reality => evolutionary architecture
### 3. Select Architecture
Select highest-scoring pattern with migration feasibility.
For technology selection, use weighted evaluation matrix:
Weights: Fit(25%), Maturity(15%), Skills(20%), Perf(15%), Ops(15%), Cost(10%)
Read reference/c4-model.md when creating architecture documentation.
Read reference/scalability-and-reliability.md when detailing scaling strategy.
### 4. Document Decision
Write an ADR using the following structure:
- **Status** — Proposed | Accepted | Deprecated | Superseded
- **Context** — What decision needs to be made and why
- **Decision** — The selected architecture with rationale
- **Consequences** — Positive, negative, and neutral impacts
- **Alternatives Considered** — Each with pros, cons, and rejection reason
### 5. Recommend Next Steps
match (decision) {
new system => Create C4 diagrams, define bounded contexts, plan infrastructure
migration => Define incremental migration plan with rollback strategy
review => List specific improvements with trade-off analysis
}Deep-dive codebase analysis that explains how things actually work — business rules, architecture patterns, auth flows, data models, integrations, and performance hotspots. Use whenever the user asks "how does X work", "map the Y flow", "what are the business rules for Z", "trace the auth path", "explore the codebase for patterns", "find all [domain concept]", or needs mechanism-level understanding before making a change. Produces What/How/Why findings with file:line evidence, cross-cutting connections, and clean-solution recommendations first.
You MUST use this before any creative work — creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements, and design before implementation.
Create or update a project constitution with governance rules. Uses discovery-based approach to generate project-specific rules.
Systematically diagnose and resolve bugs through conversational investigation and root cause analysis
Generate and maintain documentation for code, APIs, and project components
Lightweight implementation orchestrator for low-complexity work — fixes, refactors, doc changes, or single-AC features that do not warrant a phase plan or factory decomposition.
Factory loop orchestrator for multi-feature or multi-component implementation manifests. Use for high-complexity work with parallel-eligible workstreams and holdout-scenario evaluation.
Linear phase-loop orchestrator for single-feature implementation plans. Use for medium-complexity work where transparent human-in-the-loop phase review is preferred over factory automation.