name: software-architect
description: Use this skill when user needs system architecture design, technology stack selection, or architecture review. Trigger keywords: system design, architecture proposal, tech stack, microservices, distributed systems, high availability, scalability, CAP theorem, architecture tradeoffs, refactoring plan. Applicable to high-level design decisions, not specific code implementation.
Software Architecture Design
Description
Provide system architecture design proposals, technology stack recommendations, and architecture tradeoff analysis to ensure solutions meet business requirements and non-functional requirements.
When to Use
- User requests "design architecture for XX system" or "help me choose tech stack"
- User asks about system scalability, high availability, or performance optimization strategies
- User needs microservices decomposition, module partitioning, or service boundary design
- User requests architecture review or refactoring proposal
- User asks how to apply architectural theories (CAP theorem, consistency models, distributed transactions) to specific scenarios
- User compares different architecture patterns or technology stacks
When NOT to Use
- User only needs specific code implementation or programming tips without architectural decisions
- User's problem is a pure algorithm or data structure implementation
- User needs UI/UX design rather than system architecture
- User only asks how to use a framework or library without system-level design
- User's project is extremely small (e.g., personal script, single-file tool) and doesn't require architecture
Input
{
requirements: {
businessScenario: string
userScale?: string
qps?: string
dataVolume?: string
latencyRequirement?: string
readWriteRatio?: string
consistencyRequirement?: string
}
constraints: {
budget?: string
teamSize?: string
timeline?: string
existingTechStack?: string[]
complianceRequirements?: string
}
goals: {
priority: string
tradeoffs?: string
}
existingArchitecture?: string
}
Output
{
architectureProposal: {
style: string
topology: string
diagram?: string
componentBreakdown: {
name: string
responsibility: string
technology: string
}[]
}
techStackRecommendation: {
category: string
options: {
name: string
pros: string[]
cons: string[]
justification: string
}[]
recommendation: string
risks: string[]
mitigationPlan: string
}[]
tradeoffAnalysis: {
dimension: string
options: {
choice: string
pros: string[]
cons: string[]
applicableScenarios: string[]
}[]
recommendation: string
}[]
nonFunctionalRequirements: {
highAvailability?: string
scalability?: string
observability?: string
security?: string
}
evolutionPath?: string
}
Execution Workflow
Copy the following checklist before starting, and explicitly mark status after completing each step.
Step 1: Requirement Clarification and Constraint Identification
- Confirm business scenario and core use cases
- Quantify key metrics (user scale, QPS, latency, data volume)
- Identify read/write patterns and consistency requirements
- Clarify resource constraints (budget, team, timeline, existing tech stack)
- Determine priority objectives (performance/cost/time-to-market)
Feedback Loop: If critical constraint information is missing (e.g., QPS or data volume), MUST ask user to provide details. Avoid designing based on assumptions.
Step 2: Architecture Style Selection
- List candidate architecture styles (monolithic/layered/microservices/event-driven/CQRS/serverless)
- Compare applicability of each style in current scenario
- Explain recommended approach and rationale
Feedback Loop: If business scenario allows multiple reasonable architectures, provide 2-3 options for user to weigh, rather than a single answer.
Step 3: Component Design and Technology Selection
- Define core system components and their responsibility boundaries
- Describe data flow and call relationships between components
- For each technology category (database/cache/message queue, etc.), provide candidate comparisons
- Explain recommended tech stack and selection rationale (performance/maturity/ecosystem/team familiarity)
Feedback Loop: If recommended tech stack conflicts with existing stack, MUST explain migration cost and evolution path, or provide compatible alternatives.
Step 4: Tradeoff Analysis
- Identify key tradeoff dimensions (performance vs cost, consistency vs availability, complexity vs flexibility)
- Provide pros/cons analysis for different choices in each dimension
- Give recommended decision based on business objectives
Example Tradeoff Dimensions:
- Performance vs Cost: Vertical scaling vs Horizontal scaling
- Consistency vs Availability: CAP theorem application (CP vs AP)
- Complexity vs Flexibility: Monolith vs Microservices
- Real-time vs Resource consumption: Push vs Pull model
Step 5: Non-Functional Requirements Design
- High Availability: Failover, service degradation, circuit breaking, rate limiting
- Scalability: Stateless design, sharding strategy, caching layers
- Observability: Log aggregation, metrics monitoring, distributed tracing, alerting rules
- Security: Authentication/authorization, data encryption, audit logs
Feedback Loop: If user hasn't clarified non-functional requirement priorities, provide default reasonable solutions and mark optional enhancements.
Step 6: Risk Identification and Mitigation
- List potential risks of architecture proposal (technical, operational, cost risks)
- Provide mitigation measures for each risk
- Explain architecture evolution path (e.g., monolith to microservices migration strategy)
Feedback Loop: If solution has significant unmitigable risks, MUST explicitly inform user rather than hide or downplay.
Failure Handling
Unclear Requirements
- Symptom: User only provides vague description (e.g., "design a high-concurrency system")
- Action: Return requirement clarification checklist, ask user to provide key constraints (user scale, QPS, latency, data volume)
Conflicting Constraints
- Symptom: User demands extremely high performance with extremely low budget
- Action: Clearly point out constraint conflicts, provide multiple solutions with cost/performance tradeoffs, let user decide
Tech Stack Limitations
- Symptom: User requires using unsuitable tech stack (e.g., relational database for time-series data)
- Action: Explain tech stack limitations, provide alternatives or compromises (e.g., TimescaleDB)
Architecture Review Failure
- Symptom: Existing architecture has serious design flaws
- Action: Clearly point out issues, impact scope, and severity. Provide incremental refactoring path rather than complete rewrite.