Source profileQuality 92/100

event4u-app/agent-config/src/skills/laravel-middleware/SKILL.md

laravel-middleware

Use when creating or modifying Laravel middleware — request/response filtering, groups, priority, terminable middleware, or route-level assignment.

Source repository stars
7
Declared platforms
0
Static risk flags
0
Last source update
2026-07-28
Source checked
2026-07-28

Decision brief

What it does—and where it fits

Use when creating or modifying Laravel middleware — request/response filtering, groups, priority, terminable middleware, or route-level assignment.

Best for

  • Creating custom middleware for authentication, logging, headers, etc.
  • Configuring middleware groups and priority
  • Terminable middleware (post-response processing)

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/laravel-middleware"
Safe inspection promptEditorial

Inspect the Agent Skill "laravel-middleware" from https://github.com/event4u-app/agent-config/blob/0adf49a8ae84b0ff6e2de8759eea43257e020eff/src/skills/laravel-middleware/SKILL.md at commit 0adf49a8ae84b0ff6e2de8759eea43257e020eff. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Procedure: Create middleware

    1. Inspect existing middleware — Read app/Http/Middleware/ and bootstrap/app.php (or app/Http/Kernel.php) to identify naming conventions, aliases, and current group/global registration. 2. Generate class — php artisan make:middleware EnsureCustomerIsActive. 3. Implement logic —…

    Inspect existing middleware — Read app/Http/Middleware/ and bootstrap/app.php (or app/Http/Kernel.php) to identify naming conventions, aliases, and current group/global registration.Generate class — php artisan make:middleware EnsureCustomerIsActive.Implement logic — Handle request in handle(), return response or pass to next.
  2. 02

    When to use

    Use this skill when working with HTTP middleware: - Creating custom middleware for authentication, logging, headers, etc. - Configuring middleware groups and priority - Terminable middleware (post-response processing) - Route-level and global middleware assignment

    Creating custom middleware for authentication, logging, headers, etc.Configuring middleware groups and priorityTerminable middleware (post-response processing)
  3. 03

    Example

    Review the “Example” section in the pinned source before continuing.

    Review and apply the “Example” source section.
  4. 04

    Before vs. After middleware

    Review the “Before vs. After middleware” section in the pinned source before continuing.

    Review and apply the “Before vs. After middleware” source section.
  5. 05

    Terminable middleware

    Runs after the response has been sent to the browser:

    Runs after the response has been sent to the browser:

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score92/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars7SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
event4u-app/agent-config
Skill path
src/skills/laravel-middleware/SKILL.md
Commit
0adf49a8ae84b0ff6e2de8759eea43257e020eff
License
MIT
Collected
2026-07-28
Default branch
main
View the original SKILL.md

laravel-middleware

When to use

Use this skill when working with HTTP middleware:

  • Creating custom middleware for authentication, logging, headers, etc.
  • Configuring middleware groups and priority
  • Terminable middleware (post-response processing)
  • Route-level and global middleware assignment

Procedure: Create middleware

  1. Inspect existing middleware — Read app/Http/Middleware/ and bootstrap/app.php (or app/Http/Kernel.php) to identify naming conventions, aliases, and current group/global registration.
  2. Generate classphp artisan make:middleware EnsureCustomerIsActive.
  3. Implement logic — Handle request in handle(), return response or pass to next.
  4. Register — Add to route group or global middleware stack.
  5. Verify — Run tests covering both allowed and blocked request scenarios.

Example

php artisan make:middleware EnsureCustomerIsActive
declare(strict_types=1);

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class EnsureCustomerIsActive
{
    public function handle(Request $request, Closure $next): Response
    {
        if (!$request->user()?->getCustomer()?->isActive()) {
            abort(403, 'Customer account is inactive.');
        }

        return $next($request);
    }
}

Before vs. After middleware

// Before middleware — runs BEFORE the request hits the controller
public function handle(Request $request, Closure $next): Response
{
    // Check something before the request
    return $next($request);
}

// After middleware — runs AFTER the controller returns a response
public function handle(Request $request, Closure $next): Response
{
    $response = $next($request);

    // Modify the response
    $response->headers->set('X-Custom-Header', 'value');

    return $response;
}

Terminable middleware

Runs after the response has been sent to the browser:

class LogRequestDuration
{
    private float $startTime;

    public function handle(Request $request, Closure $next): Response
    {
        $this->startTime = microtime(true);

        return $next($request);
    }

    public function terminate(Request $request, Response $response): void
    {
        $duration = microtime(true) - $this->startTime;
        Log::info('Request duration', [
            'url' => $request->fullUrl(),
            'duration_ms' => round($duration * 1000, 2),
        ]);
    }
}

Middleware with parameters

class CheckRole
{
    public function handle(Request $request, Closure $next, string $role): Response
    {
        if (!$request->user()?->hasRole($role)) {
            abort(403);
        }

        return $next($request);
    }
}

// Usage in routes
Route::get('/admin', AdminController::class)->middleware('role:admin');

Assigning middleware

// Route-level
Route::get('/dashboard', DashboardController::class)
    ->middleware([EnsureCustomerIsActive::class]);

// Group-level
Route::middleware(['auth', EnsureCustomerIsActive::class])->group(function () {
    // ...
});

// Global middleware (bootstrap/app.php)
->withMiddleware(function (Middleware $middleware) {
    $middleware->append(LogRequestDuration::class);
    $middleware->prepend(SetLocale::class);
})

Middleware priority

// bootstrap/app.php — control execution order
->withMiddleware(function (Middleware $middleware) {
    $middleware->priority([
        AuthenticateMiddleware::class,
        EnsureCustomerIsActive::class,
        CheckRole::class,
    ]);
})

Core rules

  • Single responsibility — one middleware, one concern.
  • Early return — abort or redirect as early as possible.
  • Use terminable for logging/metrics — don't block the response.
  • Type-hint dependencies — use constructor injection.
  • Keep middleware thin — delegate complex logic to services.

Output format

  1. Middleware class with handle method and typed request/response
  2. Registration in bootstrap or route group

Auto-trigger keywords

  • middleware
  • request filter
  • before middleware
  • after middleware
  • terminable
  • middleware group

Gotcha

  • Middleware execution order matters — registered order in the kernel defines the pipeline sequence.
  • Don't modify the response in handle() if the next middleware might also modify it — use terminate() for cleanup.
  • The model tends to forget that middleware runs on EVERY request in its group — keep it lightweight.

Do NOT

  • Do NOT put business logic in middleware — delegate to services.
  • Do NOT create catch-all middleware that does too many things.
  • Do NOT forget to register middleware — it won't run if not assigned.
  • Do NOT modify the request in after-middleware — use before-middleware for that.