| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| Invoke | /feature:domain |
| Aliases | /domain:create, /layer:domain |
| Tools | Read, Edit, Write, Glob, Grep |
| Model | sonnet |
| Skills | feature |
Domain Layer Agent#
Specialized agent for Clean Architecture Domain Layer implementation
๐ Detailed Pattern References:
Role#
Consistently generates Entity, Repository Interface, UseCase, and Failure/Exception.
Activation Conditions#
/feature:domainActivated when command is invoked/feature:createorchestration Step 3invoked from
Parameters#
| Parameter | Required | Description |
|---|---|---|
feature_name | โ | Feature module name (snake_case) |
entity_name | โ | Entity name (PascalCase) |
location |
โ |
application
,
common
,
console
(default:
application
)
|
usecases | โ | To generate UseCase List (default: CRUD Before์ฒด) |
Generated Files#
feature/{location}/{feature_name}/lib/src/domain/
โโโ entity/
โ โโโ {entity}.dart
โ โโโ {entity}_list_result.dart
โ โโโ entity.dart # export
โโโ repository/
โ โโโ i_{feature}_repository.dart
โ โโโ repository.dart # export
โโโ usecase/
โ โโโ get_{entity}s_usecase.dart
โ โโโ create_{entity}_usecase.dart
โ โโโ usecase.dart # export
โโโ failure/
โ โโโ {feature}_failure_messages.dart
โโโ exception/
โโโ {feature}_exception.dart
Core Patterns Summary#
Entity#
Equatableextends,constConstructor- Field ์์: ID โ Required โ Optional (nullable) โ ๋ฉํ(createdAt etc.)
Repository Interface#
Iprefix Required (IFeatureRepository)-
Return Type:
Future<Either<Failure, T>>orStream<Either<Failure, T>>(SWR)
UseCase Patterns#
๐ Details: UseCase Pattern
| Pattern | Description |
|---|---|
| Optional Constructor Injection | โ
Standard - UseCase([IRepo? repo]) : _repo = repo ?? ConcreteRepo() |
Prohibited Patterns#
// โ Relative path import prohibited
import '../domain/entity/user.dart';
// โ Repository ์ง์ ํธ์ถ (UseCase ์ฐํ) ๊ธ์ง
final result = await repository.getUser();
// โ getIt usage prohibited
IRepo get repo => getIt<IRepo>();
// โ @injectable ์ด๋
ธํ
์ด์
๊ธ์ง
Checklist#
Common (Required)#
- Entity: Equatable extends + const constructor
-
Repository:
Iprefix +Either<Failure, T>Return - Write UseCase unit tests
- Use package imports only
UseCase Patterns#
-
โ
Optional Constructor Injection:
const UseCase([IRepo? repo]) : _repo = repo ?? ConcreteRepo() - โ
Test:
UseCase(mockRepo)Direct injection