Knowledge and patterns for designing software architectures and system design.
View on GitHubdrewdresser/ai-dev-settings
ai-dev
skills/designing-architecture/SKILL.md
January 22, 2026
Select agents to install to:
npx add-skill https://github.com/drewdresser/ai-dev-settings/blob/main/skills/designing-architecture/SKILL.md -a claude-code --skill designing-architectureInstallation paths:
.claude/skills/designing-architecture/# Designing Architecture Skill
This skill provides patterns and techniques for designing robust software architectures.
## Architecture Patterns
### Layered Architecture
```
┌─────────────────────────────────┐
│ Presentation Layer │
├─────────────────────────────────┤
│ Application Layer │
├─────────────────────────────────┤
│ Domain Layer │
├─────────────────────────────────┤
│ Infrastructure Layer │
└─────────────────────────────────┘
```
### Hexagonal Architecture (Ports & Adapters)
```
┌─────────────────┐
│ REST API │
└────────┬────────┘
│
┌──────────┐ ┌──────▼──────┐ ┌──────────┐
│ Database │◀──│ Domain │──▶│ External │
│ Adapter │ │ Core │ │ API │
└──────────┘ └─────────────┘ └──────────┘
```
### Microservices
```
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Service │ │ Service │ │ Service │
│ A │ │ B │ │ C │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
└────────────┼────────────┘
│
┌──────▼──────┐
│ Message Bus │
└─────────────┘
```
### Event-Driven Architecture
```
┌─────────┐ ┌───────────┐ ┌─────────┐
│ Producer│────▶│Event Store│────▶│Consumer │
└─────────┘ └───────────┘ └─────────┘
```
## Design Principles
### SOLID
- **S**ingle Responsibility - One reason to change
- **O**pen/Closed - Open for extension, closed for modification
- **L**iskov Substitution - Subtypes must be substitutable
- **I**nterface Segregation - Many specific interfaces
- **D**ependency Inversion - Depend on abstractions
### Other Principles
- **DRY** - Don't Repeat Yourself
- **KISS** - Keep It Simple, Stupid
- **YAGNI** - You Aren't Gonna Need It
- **Separation of Concerns**
- **Fail Fast**
## Common Patterns
### Repository Pattern
```python
class UserRepository:
def get_by_id(self, user_id: str) ->