smithery/ngxtm

Flutter Layer-based Clean Architecture + DDD

Standards for separation of concerns, layer dependency rules, and DDD in Flutter.

Installation

$ npx skills add smithery/ngxtm --skill flutter-layer-based-clean-architecture-ddd

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery/ngxtm · top by installs.

npx skills add smithery/ngxtm

Browse all from smithery/ngxtm

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Skill metadata

Parsed from SKILL.md frontmatter.

More metadata
labels
["architecture","clean-architecture","layers","ddd"]
triggers
{"files":["lib\/domain\/**","lib\/infrastructure\/**","lib\/application\/**"],"keywords":["domain","infrastructure","application","presentation","layers","dto","mapper"]}

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 2,099 B
  • docs SUMMARY.md 131 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

Layer-Based Clean Architecture

Priority: P0 (CRITICAL)

Standardized separation of concerns and dependency flow using DDD principles.

Structure

lib/
├── domain/ # Pure Dart: entities (@freezed), failures, repository interfaces
├── infrastructure/ # Implementation: DTOs, data sources, mappers, repo impls
├── application/ # Orchestration: BLoCs / Cubits
└── presentation/ # UI: Screens, reusable components

Implementation Guidelines

  • Dependency Flow: Presentation -> Application -> Domain <- Infrastructure. Dependencies point inward.
  • Pure Domain: No Flutter (Material/Store) or Infrastructure (Dio/Hive) dependencies in Domain.
  • Functional Error Handling: Repositories must return Either<Failure, Success>.
  • Always Map: Infrastructure must map DTOs to Domain Entities; do not leak DTOs to UI.
  • Immutability: Use @freezed for all entities and failures.
  • Logic Placement: No business logic in UI; widgets only display state and emit events.
  • Inversion of Control: Use get_it to inject repository implementations into BLoCs.

Anti-Patterns

  • No DTOs in UI: Never import a .g.dart or Data class directly in a Widget.
  • No Material in Domain: Do not import package:flutter/material.dart in the domain layer.
  • No Shared Prefs in Repo: Do not use shared_preferences directly in a Repository; use a Data Source.

Reference & Examples

For full implementation templates and DTO-to-Domain mapping examples: See [references/REFERENCE.md](references/REFERENCE.md).

Related Topics

feature-based-clean-architecture | bloc-state-management | dependency-injection | error-handling