Skillshub laravel-architecture
Core architectural standards for scalable Laravel applications. Use when structuring service layers, repositories, or scalable architecture in Laravel. (triggers: app/Http/Controllers/**/*.php, routes/*.php, controller, service, action, request, container)
install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/HoangNguyen0403/agent-skills-standard/laravel-architecture" ~/.claude/skills/comeonoliver-skillshub-laravel-architecture && rm -rf "$T"
manifest:
skills/HoangNguyen0403/agent-skills-standard/laravel-architecture/SKILL.mdsource content
Laravel Architecture
Priority: P0 (CRITICAL)
Structure
app/ ├── Http/ │ ├── Controllers/ # Slim (Request/Response only) │ └── Requests/ # Validation logic ├── Services/ # Business logic (Optional) └── Actions/ # Single-purpose classes (Preferred)
Implementation Guidelines
Controller Responsibilities
- Skinny Controllers: Controller delegates to Action or Service classes; keep controllers focused on mapping requests/responses.
- Dependency Injection: Use constructor DI to inject services or actions. Laravel resolves these via the Service Container.
- No Logic in Routes: Always delegate route closures to controllers; don't use raw Closures for logic.
Business Logic Placement
- Actions: Create app/Actions/CreatePost.php (or similar) — one action per use case — with a single
method. This keeps controllers slim and Create Action class logic focused.handle() - Service Classes: Create app/Services/PaymentService.php for multi-step logic across domains. type-hint interface in controller constructor for clean DI.
- Binding: Bind interfaces in
usingAppServiceProvider
.$this->app->bind(Interface::class, Implementation::class) - Service Isolation: No Eloquent queries directly in controllers; handle database access within services or actions.
Validation & Requests
- Form Requests: Use
for Form Requests for validation.php artisan make:request StoreUserRequest - Usage: call $request->validated() in the controller or action for mass assignment.
- Validation Methods: Implement
andauthorize()
; never userules()
inline.$request->validate()
Anti-Patterns
- No logic in Controllers: Move to Services or Action classes.
- No manual instantiation: Use Service Container via DI.
- No inline
: Favor Form Request classes.$request->validate() - No excessive global helpers: Use class-based logic instead.