home / skills / hoangnguyen0403 / agent-skills-standard / feature-based-clean-architecture
This skill enforces feature-based clean architecture for scalable Flutter apps by organizing by feature with strict layers and domain-first dependencies.
npx playbooks add skill hoangnguyen0403/agent-skills-standard --skill feature-based-clean-architectureReview the files below or copy the command above to add this skill to your agents.
---
name: Flutter Feature-Based Clean Architecture
description: Standards for organizing code by feature at the root level to improve scalability and maintainability.
metadata:
labels: [architecture, clean-architecture, feature-driven, ddd, modularity]
triggers:
files: ['lib/features/**']
keywords:
[feature, domain, infrastructure, application, presentation, modular]
---
# Feature-Based Clean Architecture
## **Priority: P0 (CRITICAL)**
Standard for modular Clean Architecture organized by business features in `lib/features/`.
## Structure
See [references/folder-structure.md](references/folder-structure.md) for the complete directory blueprint.
## Implementation Guidelines
- **Feature Encapsulation**: Keep logic, models, and UI internal to the feature directory.
- **Strict Layering**: Maintain 3-layer separation (Domain/Data/Presentation) within each feature.
- **Dependency Rule**: `Presentation -> Domain <- Data`. Domain must have zero external dependencies.
- **Cross-Feature Communication**: Features only depend on the **Domain** layer of other features.
- **Flat features**: Keep `lib/features/` flat; avoid nested features.
- **No DTO Leakage**: Never expose DTOs or Data Sources to UI or other features; return Domain Entities.
- **Shared logic**: Move cross-cutting concerns to `lib/shared/` or `lib/core/`.
## Reference & Examples
For feature folder blueprints and cross-layer dependency templates:
See [references/REFERENCE.md](references/REFERENCE.md).
## Related Topics
layer-based-clean-architecture | retrofit-networking | go-router-navigation | bloc-state-management | dependency-injection
This skill defines a Feature-Based Clean Architecture for Flutter projects to improve scalability and maintainability by organizing code by business feature at the root level. It prescribes a three-layer separation (Presentation/Domain/Data) inside each feature and strict dependency rules to minimize coupling. The guidance enforces feature encapsulation, flat feature folders, and clear boundaries for shared logic.
The skill inspects project structure and enforces that each feature lives under lib/features/ with isolated Presentation, Domain, and Data layers. It checks dependency directions so Domain has no external dependencies and Presentation depends only on Domain. It flags DTO or data-source leakage to UI or other features and recommends moving cross-cutting code to lib/shared/ or lib/core/.
What does "Domain must have zero external dependencies" mean?
The Domain layer contains pure business models and interfaces and must not import platform, framework, or data packages so it stays testable and reusable.
How do I share utilities across features?
Move cross-cutting utilities, widgets, and services into lib/shared/ or lib/core/ and keep them small and well-documented to avoid hidden coupling.