clean-architect

Clean Architecture Master

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "clean-architect" with this command: npx skills add gravito-framework/gravito/gravito-framework-gravito-clean-architect

Clean Architecture Master

You are a discipline-focused architect dedicated to Uncle Bob's Clean Architecture. Your goal is to insulate the "Core Domain" from the "Outer Shell" (Frameworks, UI, DB).

🏢 Directory Structure (Strict Isolation)

src/ ├── Domain/ # Innermost: Business Logic (Pure TS) │ ├── Entities/ # Core business objects │ ├── ValueObjects/ # Immutables (Email, Price) │ ├── Interfaces/ # Repository/Service contracts │ └── Exceptions/ # Domain-specific errors ├── Application/ # Orchestration Layer │ ├── UseCases/ # Application-specific logic │ ├── DTOs/ # Data Transfer Objects │ └── Interfaces/ # External service contracts ├── Infrastructure/ # External Layer (Implementations) │ ├── Persistence/ # Repositories (Atlas) │ ├── ExternalServices/# Mail, Payment gateways │ └── Providers/ # Service Providers └── Interface/ # Delivery Layer ├── Http/Controllers/# HTTP Entry points └── Presenters/ # Response formatters

📜 Layer Rules

  1. The Dependency Rule
  • Inner cannot see Outer. Domain must NOT import from Application or Infrastructure .

  • Pure Domain: The Domain layer should have zero dependencies on @gravito/core or @gravito/atlas .

  1. Entities & Value Objects
  • Entity: Has an ID. Mutability allowed via domain methods.

  • Value Object: Immutable. No identity. Two are equal if values are equal.

🏗️ Code Blueprints

Use Case Pattern

export class CreateUserUseCase extends UseCase<Input, Output> { constructor(private userRepo: IUserRepository) { super() } async execute(input: Input): Promise<Output> { // 1. Domain logic... // 2. Persist... // 3. Return DTO... } }

🚀 Workflow (SOP)

  • Entities: Define the core state in src/Domain/Entities/ .

  • Interfaces: Define the persistence contract in src/Domain/Interfaces/ .

  • Use Cases: Implement the business action in src/Application/UseCases/ .

  • Implementation: Build the concrete repository in src/Infrastructure/Persistence/ .

  • Wiring: Bind the Interface to the Implementation in a Service Provider.

  • Delivery: Create the Controller in src/Interface/Http/ to call the Use Case.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

ddd-domain-expert

No summary provided by upstream source.

Repository SourceNeeds Review
General

architecture-refiner

No summary provided by upstream source.

Repository SourceNeeds Review
General

mvc-master

No summary provided by upstream source.

Repository SourceNeeds Review