skillZs
★ LIVE SKILL TAGS ★
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
※ REAL INSTALL DATA ※
← back to all skills
fusengine/agents139 installs

laravel-architecture

Use when structuring a Laravel project, creating services/repositories/actions, implementing dependency injection, or organizing code layers.

How do I install this agent skill?

npx skills add https://github.com/fusengine/agents --skill laravel-architecture
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubpass

    This skill provides a comprehensive set of templates and documentation for structuring Laravel applications according to best practices. It covers core concepts like dependency injection, service providers, and repositories, as well as advanced features like Octane, Pennant, and MCP servers. No malicious patterns or security risks were identified.

  • Socketpass

    No alerts

  • Snykpass

    Risk: LOW · No issues

  • Runlayerwarn

    36/36 files flagged

What does this agent skill do?

<objective> Covers Laravel application architecture end to end: project structure (Actions, Contracts, DTOs, Services, Repositories layout), the service container and dependency injection, service providers and facades, environment/configuration, development environments (Sail, Valet, Homestead, Octane), Artisan CLI, filesystem/processes/context, feature flags (Pennant), MCP servers, concurrency, and production deployment (including Envoy, logging, error handling, and package authoring). </objective>

Laravel Architecture Patterns

Agent Workflow (MANDATORY)

Before ANY implementation, spawn 3 agents in parallel, one Agent call each with a name:

  1. fuse-ai-pilot:explore-codebase - Analyze existing architecture
  2. fuse-ai-pilot:research-expert - Verify Laravel patterns via Context7
  3. mcp__context7__query-docs - Check service container and DI patterns

After implementation, run fuse-ai-pilot:sniper for validation.


Overview

Laravel architecture focuses on clean separation of concerns, dependency injection, and maintainable code organization. This skill covers everything from project structure to production deployment.

When to Use

  • Structuring new Laravel projects
  • Implementing services, repositories, actions
  • Setting up dependency injection
  • Configuring development environments
  • Deploying to production

Critical Rules

  1. Thin controllers - Delegate business logic to services
  2. Interfaces in app/Contracts/ - Never alongside implementations
  3. DI over facades - Constructor injection for testability
  4. Files < 100 lines - Split larger files per SOLID
  5. Environment separation - .env never committed

Architecture

app/
├── Actions/              # Single-purpose action classes
├── Contracts/            # Interfaces (DI)
├── DTOs/                 # Data transfer objects
├── Enums/                # PHP 8.1+ enums
├── Events/               # Domain events
├── Http/
│   ├── Controllers/      # Thin controllers
│   ├── Middleware/       # Request filters
│   ├── Requests/         # Form validation
│   └── Resources/        # API transformations
├── Jobs/                 # Queued jobs
├── Listeners/            # Event handlers
├── Models/               # Eloquent models only
├── Policies/             # Authorization
├── Providers/            # Service registration
├── Repositories/         # Data access layer
└── Services/             # Business logic

Reference Guide

Core Architecture

ReferenceWhen to Use
container.mdDependency injection, binding, resolution
providers.mdService registration, bootstrapping
facades.mdStatic proxies, real-time facades
contracts.mdInterfaces, loose coupling
structure.mdDirectory organization
lifecycle.mdRequest handling flow

Configuration & Setup

ReferenceWhen to Use
configuration.mdEnvironment, config files
installation.mdNew project setup
upgrade.mdVersion upgrades, breaking changes
releases.mdRelease notes, versioning

Development Environments

ReferenceWhen to Use
sail.mdDocker development
valet.mdmacOS native development
homestead.mdVagrant (legacy)
octane.mdHigh-performance servers

Utilities & Tools

ReferenceWhen to Use
artisan.mdCLI commands, custom commands
helpers.mdGlobal helper functions
filesystem.mdFile storage, S3, local
processes.mdShell command execution
context.mdRequest-scoped data sharing

Advanced Features

ReferenceWhen to Use
pennant.mdFeature flags
mcp.mdModel Context Protocol
concurrency.mdParallel execution

Operations

ReferenceWhen to Use
deployment.mdProduction deployment
envoy.mdSSH task automation
logging.mdLog channels, formatting
errors.mdException handling
packages.mdCreating packages

Templates

TemplatePurpose
UserService.php.mdService + repository pattern
AppServiceProvider.php.mdDI bindings, bootstrapping
ArtisanCommand.php.mdCLI commands, signatures, I/O
McpServer.php.mdMCP servers, tools, resources, prompts
PennantFeature.php.mdFeature flags, A/B testing
Envoy.blade.php.mdSSH deployment automation
sail-config.mdDocker Sail configuration
octane-config.mdFrankenPHP, Swoole, RoadRunner

Feature Matrix

FeatureReferencePriority
Service Containercontainer.mdHigh
Service Providersproviders.mdHigh
Directory Structurestructure.mdHigh
Configurationconfiguration.mdHigh
Installationinstallation.mdHigh
Octane (Performance)octane.mdHigh
Sail (Docker)sail.mdHigh
Artisan CLIartisan.mdMedium
Deploymentdeployment.mdMedium
Envoy (SSH)envoy.mdMedium
Facadesfacades.mdMedium
Contractscontracts.mdMedium
Valet (macOS)valet.mdMedium
Upgrade Guideupgrade.mdMedium
Logginglogging.mdMedium
Errorserrors.mdMedium
Lifecyclelifecycle.mdMedium
Filesystemfilesystem.mdMedium
Helpershelpers.mdLow
Pennant (Flags)pennant.mdLow
Contextcontext.mdLow
Processesprocesses.mdLow
Concurrencyconcurrency.mdLow
MCPmcp.mdLow
Packagespackages.mdLow
Releasesreleases.mdLow
Homesteadhomestead.mdLow

Quick Reference

Service Injection

public function __construct(
    private readonly UserServiceInterface $userService,
) {}

Service Provider Binding

public function register(): void
{
    $this->app->bind(UserServiceInterface::class, UserService::class);
    $this->app->singleton(CacheService::class);
}

Artisan Command

php artisan make:provider CustomServiceProvider
php artisan make:command ProcessOrders

Environment Access

$debug = env('APP_DEBUG', false);
$config = config('app.name');

Laravel 13 Notes

Updated stack

  • Symfony 7.4 and 8.0 supported side by side (HttpFoundation, Console, Mailer)
  • PHP 8.3 minimum (8.2 dropped)
  • pda/pheanstalk 7.x / 8.x required for the Beanstalk driver (5.x dropped)
  • Current stable version: 13.33 (September 2026)

Cache::touch() API

New method to refresh the TTL without recomputing the value.

Cache::touch('user:123', 3600);
Cache::touch('user:123', now()->addHour());

Queue::route() for dynamic routing

See [[laravel-queues]] for declarative routing per job class (Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts')) and Queue::forward() (13.26+).

Nested model boot → LogicException

Laravel 13 throws a LogicException when a model is instantiated during its own boot (new static() inside the model's boot() or a trait's boot*()). Move that logic out of the boot cycle.

What's new in 13.x (13.1 → 13.33)

  • php artisan dev (13.16+): runs the server, queue:listen, Pail and Vite in a single terminal; customizable via Illuminate\Foundation\DevCommands::artisan('horizon', 'horizon') in AppServiceProvider::boot(), listed via php artisan dev:list (requires Node 22.13+)
  • #[BindWhen(Impl::class, static fn () => ...)] (13.22+): conditional binding declared on the interface — requires PHP 8.5
  • Enum (UnitEnum) support in most managers (Cache::store(), Queue, Log, Mail, Auth::guard()…) (13.3 → 13.7)
  • Guzzle 8 supported (13.26+)

Migration Laravel 12 → 13

TopicBefore (12)After (13)
PHP minimum8.28.3
PHPUnit1112 (13 supported)
Pest34 (5 with PHP 8.4+)
CSRFVerifyCsrfTokenPreventRequestForgery (origin check via Sec-Fetch-Site)
Cache prefixunderscorehyphens by default (set CACHE_PREFIX, REDIS_PREFIX, SESSION_COOKIE for backward compatibility)
Beanstalkpheanstalk 5.xpheanstalk 7.x / 8.x
Symfony7.x7.4 / 8.0
Model boottoleratednested instantiation during the model's boot → LogicException
Config—new cache.serializable_classes (allowlist hardening, default false)
# Backward-compatible cache prefixes when upgrading from L12
CACHE_PREFIX=laravel_cache_
REDIS_PREFIX=laravel_database_
SESSION_COOKIE=laravel_session
// config/cache.php — deserialization hardening
'serializable_classes' => [
    App\DTO\PaymentDto::class,
    App\DTO\OrderDto::class,
],

Best Practices

DO

  • Use final readonly class for DTOs and Value Objects (PHP 8.3+)
  • Inject via constructor promotion + interface (dependency inversion)
  • Log via Context::add() to propagate metadata across jobs/requests
  • Configure serializable_classes in production
  • Prefer app(Contract::class) over App::make() (strict typing)

DON'T

  • Instantiate a model during its own boot (new static() inside boot() → LogicException in L13)
  • Hardcode absolute paths (use base_path(), storage_path())
  • Mix Repository and Service (one per responsibility)
  • Bypass the container with new ConcreteClass()
  • Ignore the cache prefix change when upgrading from L12

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/fusengine/agents/laravel-architecture">View laravel-architecture on skillZs</a>