Laravel clean architecture
Skill ComeOnOliver/skillshub/skills/HoangNguyen0403/agent-skills-standard/laravel-clean-architecture
π§ The right skill, one API call. AI agent skills registry with token-efficient skill resolution. 5,000+ skills from 500+ top repos.
npx -y skills add ComeOnOliver/skillshub --skill laravel-clean-architectureAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Expert patterns for DDD, DTOs, and Ports & Adapters in Laravel. Use when applying Domain-Driven Design, DTOs, or ports-and-adapters patterns in Laravel. (triggers: app/Domains/**/*.php, app/Providers/*.php, domain, dto, repository, contract, adapter)
SKILL.md
2.5 KB, 517 tokens by cl100k_base, as published. Nobody here has run it
Laravel Clean Architecture
Priority: P1 (HIGH)
Structure
app/
βββ Domains/ # Logic grouped by business domain
β βββ {Domain}/
β βββ Actions/ # Single use-case logic
β βββ DTOs/ # Immutable data structures
β βββ Contracts/ # Interfaces for decoupling
βββ Providers/ # Dependency bindings
Implementation Guidelines
Domain-Driven Design (DDD)
- Grouping: Organize code in
app/Domains/Order/{Actions,DTOs,Contracts}/. Group by business domain (User, Order, Payment) β not by type (Controllers, Models). - Core Models: Keep standard Eloquent models in
app/Models/. - Separation: Never put Eloquent queries in controllers; delegate to Action classes for use-case logic.
Data Transfer Objects (DTOs)
- Immutability: Create typed readonly DTOs:
Immutable by default in PHP 8.1+. DTOs cross boundaries β pass between layers instead of raw arrays or Eloquent models. No raw arrays between layers.readonly class OrderData { public function __construct( public readonly string $title, public readonly int $amount ) {} } readonly class CreateOrderData { public function __construct( public readonly string $customerId, public readonly int $amount ) {} }
Repository Pattern & Decoupling
- Interfaces: Create
Contracts/OrderRepository interfaceand implementEloquentOrderRepository. - Binding: Bind interfaces to implementations in
AppServiceProvidervia$this->app->bind(OrderRepository::class, EloquentOrderRepository::class). - Usage: Inject interfaces into your actions/services.
- Layer Flow: Controller β Action β Repository Interface β Eloquent. DTOs cross boundaries at every layer transition.
Anti-Patterns
- No Eloquent in Controllers: Bridge layers with DTOs and Actions.
- No raw arrays across layers: Use typed
readonlyDTOs. - No God Services: Break into single-responsibility Actions.
- No concrete dependencies: Depend on Interfaces, not implementations.
References
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.