Agent-skills-standard flutter-feature-based-clean-architecture
Organize Flutter apps with modular feature-based clean architecture. Use when creating or modifying any file under lib/features/ including domain entities, repositories, data sources, or screens. (triggers: lib/features/**, feature, domain, infrastructure, application, presentation)
install
source · Clone the upstream repo
git clone https://github.com/HoangNguyen0403/agent-skills-standard
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/HoangNguyen0403/agent-skills-standard "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/flutter/flutter-feature-based-clean-architecture" ~/.claude/skills/hoangnguyen0403-agent-skills-standard-flutter-feature-based-clean-architecture && rm -rf "$T"
manifest:
skills/flutter/flutter-feature-based-clean-architecture/SKILL.mdsource content
Feature-Based Clean Architecture
Priority: P0 (CRITICAL)
Structure
Every feature lives in
lib/features/ with 3-layer separation (domain/data/presentation):
— Entities, failures, and Repository interfaces.domain/
— DTOs, DataSource, and Repository implementations.data/
— BLoC/Cubit, pages, and widgets.presentation/
See references/folder-structure.md for complete directory blueprint.
Implementation Workflow
- Create feature directory — Add new folder under
(e.g.,lib/features/
).lib/features/promotions/ - Define domain layer — Add entities, failures, and repository interfaces with zero external dependencies.
- Implement data layer — Add DTOs, data sources, and repository implementations that depend only on Domain.
- Build presentation layer — Add BLoC/Cubit, pages, and widgets that depend only on Domain.
- Enforce dependency rule —
. Domain must zero external dependencies.Presentation -> Domain <- Data - Share cross-cutting logic — Move reusable utilities to
orlib/shared/
.lib/core/
Feature Directory Example
See implementation examples for full directory tree and cross-feature import patterns.
Reference & Examples
For feature folder blueprints and cross-layer dependency templates: See references/REFERENCE.md.
Anti-Patterns
- No Cross-Feature Data Imports: Only import Domain types across features
- No UI/Data in Domain Layer: Never put UI or Data classes inside
domain/ - No Nested Features: Keep
flat with no sub-feature directorieslib/features/ - No Direct Repository Calls: Use specific BLoCs or use-cases instead of calling other features' repositories directly from UI
Related Topics
layer-based-clean-architecture | retrofit-networking | go-router-navigation | bloc-state-management | dependency-injection