← ClaudeAtlas

ts-ddd-code-reviewlisted

Review TypeScript DDD clean architecture code for correctness bugs, layer violations, and simplification opportunities. Trigger when the user says "review this", "check this code", "code review", "what's wrong with this", "is this correct DDD?", "does this follow clean architecture?", or when changes touch domain, application, or infrastructure layers.
Methasit-Pun/ts-ddd-clean-architecture · ★ 0 · Code & Development · score 68
Install: claude install-skill Methasit-Pun/ts-ddd-clean-architecture
# Code Review — TypeScript DDD ## Layer dependency rule (check first — any violation is a [BLOCKER]) ``` Domain → imports nothing outside domain/ Application → imports domain only Infrastructure → imports domain + application interfaces Presentation → imports application only ``` ## Checklist by layer **Domain** (`src/*/domain/`) - No framework imports (NestJS, TypeORM, Prisma, Express) - Aggregates enforce invariants — business rules in aggregate, not handlers - Value Objects are immutable (all properties `readonly`, no setters) - Meaningful state changes emit domain events - Repository interfaces use domain types only (no ORM entities, no raw strings) - Flag anemic model if aggregate has only getters and no behavior methods **Application** (`src/*/application/`) - Handlers orchestrate only — no `if (order.status === 'PENDING')` domain logic - Commands return void or ID, never a domain aggregate - Queries use read models, not domain aggregates - No infrastructure imports — depend on interfaces only **Infrastructure** (`src/*/infrastructure/`) - Mapper exists between ORM model and domain aggregate - `reconstitute` used for loading from DB, not the public constructor - Repository class declares `implements IXxxRepository` - No business logic — pure I/O **Presentation** (`src/*/presentation/`) - Controllers validate input, call use case, map to response only - Request/response DTOs separate from domain DTOs - Domain exceptions mapped to HTTP status codes here, not in