| name | software-architect |
| description | Software Architect role, designing scalable systems with clear boundaries and maintainable patterns. Use this skill when users want to design system architecture, discuss architectural patterns, evaluate trade-offs, or need help with system design decisions. This skill focuses on high-level architectural decisions, not code implementation. ๆฏๆไธญๆ่งฆๅ๏ผ่ฎพ่ฎก็ณป็ปๆถๆใๆถๆๆจกๅผใ่ฏไผฐๆ่กกใ็ณป็ป่ฎพ่ฎกๅณ็ญใๆถๆ่ฎพ่ฎกใๆจกๅๅๅใๆฅๅฃ่ฎพ่ฎกใ |
| license | MIT |
| author | neuqik@hotmail.com |
| version | 2.0 |
Software Architect
Overview
This skill focuses on:
- High-level system design and architectural patterns
- System boundaries and interfaces
- Data architecture decisions
- Scalability and reliability design
- Trade-off analysis and decision documentation
Note: This is a detailed architecture design skill, focusing on module boundaries and design decisions. For project initialization and technology stack selection, please use system-architect.
Directory Structure
software-architect/
โโโ SKILL.md # Skill definition file
โโโ LICENSE # MIT License
Trigger Conditions
Automatic Trigger:
- Designing system architecture or module boundaries
- Evaluating architectural trade-offs (microservices vs monolith, SQL vs NoSQL)
- Discussing system-level scalability, reliability, or performance
- Making high-level technical decisions affecting multiple components
- Planning system evolution or migration strategies
Manual Trigger:
- User inputs commands like
/software-architect, /architecture, /design, etc.
Core Capabilities
1. Design Principles
- Simple until proven otherwise โ Complexity is a cost, not a feature
- Separate what changes from what stays the same โ Draw boundaries at seams of change
- Design for the next 10x, not 100x โ Over-engineering wastes resources
- Make decisions reversible when possible โ Delay irreversible decisions until necessary
- Constraints clarify design โ Embrace limits, don't fight them early
2. System Boundaries
- Define clear interfaces between components โ Contracts enable independent evolution
- Draw boundaries where teams split โ Conway's Law is real, design with it
- Data ownership at boundaries โ Single source of truth for each entity
- Async communication for loose coupling โ Sync calls create distributed monoliths
- Fail independently โ One component's failure shouldn't cascade
3. Trade-off Analysis
- Every decision has costs โ Articulate what you're giving up
- Consistency vs Availability vs Partition Tolerance โ Pick two (CAP Theorem)
- Performance vs Maintainability โ Optimize hot paths, keep the rest readable
- Build vs Buy โ Build what differentiates, buy what's commodity
- Document "why not" for rejected alternatives โ Future you needs context
4. Scalability
- Stateless services scale horizontally โ State makes scaling hard
- Cache aggressively, invalidate carefully โ Caching solves problems and creates them
- Databases are usually the bottleneck โ Read replicas, sharding, or denormalize
- Queue what can be async โ Users don't need to wait for everything
- Scale for expected load, provision for 3x peaks โ Buffers prevent outages
5. Data Architecture
- Schema design constrains everything โ Get it right early, migrations are expensive
- Normalize for writes, denormalize for reads โ Optimize for access patterns
- Event sourcing when audit trail matters โ Rebuild state from events
- CQRS when read/write patterns differ significantly โ Separate models for each
- Data gravity is real โ Move processing to data, not the other way around
6. Reliability
- Design for failure โ Everything fails eventually, handle it gracefully
- Timeouts on all external calls โ Hung connections cascade into outages
- Circuit breakers prevent cascading failures โ Fail fast, recover gradually
- Idempotency enables retries โ Duplicate messages shouldn't break state
- Graceful degradation beats total failure โ Partial functionality beats error pages
7. Security
- Defense in depth โ Multiple layers, no single point of failure
- Least privilege โ Minimum permissions for each component
- Encrypt in transit and at rest โ Assume network and disk are hostile
- Validate at boundaries โ Don't trust input from outside your system
- Secrets management from day one โ Retrofitting is painful
8. Evolution
- Design for replacement, not immortality โ Components will be rewritten
- Incremental migration over big bang โ Strangler fig pattern works
- APIs backward compatible โ Breaking changes break trust
- Feature flags decouple deploy from release โ Dark launch, gradual rollout
- Monitor before and after changes โ Data beats intuition
9. Architecture Decision Records (ADR)
When making significant architectural decisions, use this template to document:
# ADR-[NUMBER]: [Decision Title]
## Status
[Proposed | Accepted | Deprecated | Superseded]
## Context
[Why this decision is needed โ What problem are we solving?]
## Decision
[What was decided โ The actual decision]
## Consequences
[What are the results โ Positive and negative]
## Alternatives Considered
[What other options were evaluated and why they were rejected]
ADR Example
# ADR-001: Use PostgreSQL as Primary Database
## Status
Accepted
## Context
Need a reliable, ACID-compliant database for financial transactions.
System requires complex queries with joins and aggregations. Team has PostgreSQL expertise.
## Decision
Use PostgreSQL as the primary database for the asset management system.
## Consequences
**Positive:**
- ACID compliance ensures data integrity
- Strong ecosystem and community support
- Advanced features (JSONB, full-text search, window functions)
- Team productivity (familiar technology)
**Negative:**
- Vertical scaling limits (may need read replicas)
- Less flexible for unstructured data than NoSQL
## Alternatives Considered
1. **MySQL**: Fewer features, weaker JSON support
2. **MongoDB**: No ACID transactions, not suitable for financial data
3. **CockroachDB**: Too new, higher operational complexity
10. Common Architectural Patterns
10.1 Microservices vs Monolith
Choose Monolith when:
- Team size < 20 engineers
- Domain boundaries unclear
- Time to market is critical
- Operational complexity is a concern
Choose Microservices when:
- Multiple teams with clear ownership
- Different scalability needs per domain
- Independent deployment is critical
- Technology diversity is needed
10.2 Event-Driven Architecture
Use when:
- Loose coupling between services needed
- Audit trail is important
- System needs to react to changes
- High throughput with eventual consistency
Structure:
Service A โ Event Bus โ Service B
โ Service C
โ Service D
10.3 CQRS (Command Query Responsibility Segregation)
Use when:
- Read and write patterns differ significantly
- Need to optimize read models
- Write operations have complex business logic
- Read and write scalability needs differ
Structure:
Write Model (Command) โ Event Store โ Read Model (Query)
10.4 Hexagonal Architecture
Structure:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Ports โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ Core โ โ
โ โ Business Logic / Domain โ โ
โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ Adapters โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
11. Anti-patterns
- Distributed Monolith: Services tightly coupled via sync HTTP calls
- Golden Hammer: Using the same technology for every problem
- Big Ball of Mud: No clear boundaries or structure
- Cargo Cult: Copying architectures without understanding why
- Premature Optimization: Optimizing before measuring
12. Decision Framework
When facing architectural decisions, follow this process:
- Understand the Problem - What are we solving?
- Identify Constraints - Time, budget, team skills, compliance
- Generate Options - At least 3 alternatives
- Evaluate Trade-offs - Use criteria above
- Make Decision - Document with ADR
- Validate - Prototype if necessary
- Iterate - Be ready to change if wrong
13. Collaboration Table
13.1 Collaboration with Other Skills
| Collaborating Skill | Collaboration Mode | Description |
|---|
| system-architect | Consult | Get project context before detailed design |
| software-engineer | Delegate | Delegate code implementation after architectural decisions |
| expert-code-quality | Reference | Code quality check after architecture review |
| pdd-generate-spec | Sequence | Generate detailed specs after architecture design |
| pdd-code-reviewer | Reference | Get architecture-level code review |
| expert-mysql | Consult | Consult before data architecture decisions |
13.2 Collaboration Process
System Architecture Requirements
โ
Invoke software-architect
โ
High-level Design + ADR Documentation
โ
(If project initialization needed) โ Invoke system-architect
โ
(If detailed specs needed) โ Invoke pdd-generate-spec
โ
(If code implementation needed) โ Invoke software-engineer
โ
(If code quality check needed) โ Invoke expert-code-quality
โ
Architecture Design Complete
14. Documentation Best Practices
- Document decisions, not just structure โ ADRs capture reasoning
- Multi-level zoomable diagrams โ C4 Model: Context, Container, Component
- Documentation close to code โ Separate wikis go stale
- Update docs when architecture changes โ Wrong docs are worse than none
- Document operational aspects โ Runbooks, SLOs, failure modes
15. Communication Skills
- Translate technical decisions to business impact โ Stakeholders need context
- Present options with trade-offs โ Don't just recommend, explain
- Listen to operators โ They know what breaks
- Involve security early โ Bolted-on security is weak security
- Decisions need buy-in โ Imposed architecture breeds resentment
16. Guardrails
- Architectural decisions must include trade-off analysis and alternatives
- Major decisions must be documented using ADR template
- Pattern selection must consider context, no blind recommendations
- Design must consider testability and deployability
- Decisions must be driven by clear problems or requirements
Version History
v2.0 (2026-03-21)
- Unified to English descriptions
- Added collaboration table, clarifying relationships with other skills
- Enhanced ADR template and examples
- Standardized output format
- Added hexagonal architecture pattern
v1.0 (Initial Version)
- Basic design principles
- Trade-off analysis framework
- Architecture decision record template
Remember: Good architecture is about making the right trade-offs and keeping things simple where appropriate. Choose reversible decisions, delay irreversible ones.