Clean Architecture and SOLID principles guide. Use this when designing systems, reviewing architecture, or making structural decisions.
Scanned 9/3/2026
Install to Claude Code
npx -y skills add aiskillstore/marketplace --skill software-architecture --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Software Architecture?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/aiskillstore-software-architecture-marketplace)More formats (shields.io, HTML) on the badges page.
---
name: software-architecture
description: Clean Architecture and SOLID principles guide. Use this when designing systems, reviewing architecture, or making structural decisions.
allowed-tools: Read, Glob, Grep, Edit, Write
license: MIT
metadata:
author: NeoLabHQ
version: "1.0"
---
# Software Architecture
Clean Architecture와 DDD 원칙 기반 소프트웨어 설계 가이드입니다.
## Core Principles
### SOLID
| 원칙 | 설명 | 예시 |
|------|------|------|
| **S**ingle Responsibility | 하나의 클래스는 하나의 책임 | `UserRepository` vs `UserService` |
| **O**pen/Closed | 확장에 열림, 수정에 닫힘 | 인터페이스 사용 |
| **L**iskov Substitution | 하위 타입은 상위 타입 대체 가능 | 상속 계약 준수 |
| **I**nterface Segregation | 클라이언트별 인터페이스 분리 | `IReader` vs `IWriter` |
| **D**ependency Inversion | 추상화에 의존 | DI 컨테이너 사용 |
### Clean Architecture Layers
```
┌─────────────────────────────────────────┐
│ Frameworks & Drivers │ ← DB, Web, UI
├─────────────────────────────────────────┤
│ Interface Adapters │ ← Controllers, Gateways
├─────────────────────────────────────────┤
│ Application Business Rules │ ← Use Cases
├─────────────────────────────────────────┤
│ Enterprise Business Rules │ ← Entities
└─────────────────────────────────────────┘
```
**의존성 규칙**: 바깥 → 안쪽 방향으로만 의존
## Code Style Rules
### Early Return Pattern
```typescript
// ❌ 중첩된 조건문
function process(user) {
if (user) {
if (user.isActive) {
if (user.hasPermission) {
// do something
}
}
}
}
// ✅ Early Return
function process(user) {
if (!user) return;
if (!user.isActive) return;
if (!user.hasPermission) return;
// do something
}
```
### Function/File Size Limits
| 대상 | 권장 | 최대 | 조치 |
|------|------|------|------|
| 함수 | 30줄 | 50줄 | 분리 |
| 컴포넌트 | 80줄 | 150줄 | 분리 |
| 파일 | 200줄 | 300줄 | 모듈화 |
### Domain-Specific Naming
```typescript
// ❌ 제네릭 네이밍
utils/helpers.ts
common/index.ts
// ✅ 도메인 네이밍
services/OrderCalculator.ts
auth/UserAuthenticator.ts
```
## Library-First Approach
> "모든 커스텀 코드는 유지보수, 테스트, 문서화가 필요한 부채다"
**코드 작성 전 확인:**
1. npm/yarn 패키지 검색
2. 기존 서비스/API 확인
3. 오픈소스 솔루션 검토
## Anti-Patterns to Avoid
| Anti-Pattern | 문제점 | 해결책 |
|--------------|--------|--------|
| NIH Syndrome | 바퀴 재발명 | 라이브러리 우선 |
| God Class | 너무 많은 책임 | SRP 적용 |
| Spaghetti Code | 얽힌 의존성 | 레이어 분리 |
| Magic Numbers | 의미 불명확 | 상수 추출 |
| Deep Nesting | 가독성 저하 | Early Return |
## Separation of Concerns
```
✅ 올바른 분리
├── domain/ # 비즈니스 로직
├── application/ # Use Cases
├── infrastructure/ # DB, API
└── presentation/ # UI, Controllers
❌ 잘못된 분리
├── components/
│ └── UserCard.tsx # UI + API 호출 + 비즈니스 로직 혼합
```
## Decision Checklist
새로운 코드 작성 시:
- [ ] 기존 라이브러리/서비스로 해결 가능?
- [ ] 단일 책임 원칙 준수?
- [ ] 의존성 방향 올바름?
- [ ] 테스트 가능한 구조?
- [ ] 도메인 네이밍 사용?

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!