labrodev-naminglisted
Install: claude install-skill labrodev/laravel-playbook
# Labrodev Naming & Named Arguments
Part of the Labrodev playbook. **The law for this skill lives in the always-on `labrodev-naming` guideline** (musts, must-nots, the naming pattern table, the invocation contract) — this skill holds the craft: worked invocation examples, the mirror rule applied to real code, and edge cases.
## The invocation contract (worked examples)
Actions and Services are injected as `__invoke()` parameters and invoked as **callables with named arguments**. The typed Data parameter mirrors the class short name in camelCase.
Call-site pattern in a controller (`{Model}{Action}Controller`; here Model = `Booking`, Action = `Store`):
```php
public function __invoke(
BookingData $bookingData, // mirrors class short name — never $data
BookingCreate $bookingCreate, // mirrors class short name — never $action
): RedirectResponse {
// Action invoked as a CALLABLE with a NAMED argument — never ->execute()/->handle()
$bookingCreate(
bookingData: $bookingData,
);
// ...
}
```
Multi-argument invocation (update Action — arguments named, consistent order):
```php
$bookingUpdate(
booking: $booking,
bookingData: $bookingData,
);
```
Single-argument calls may stay positional:
```php
$bookingDelete($booking);
```
Declaration side — the Action exposes exactly one public entry point, `__invoke()`, with mirror-named typed parameters:
```php
<?php
declare(strict_types=1);
namespace Core\Domain\Booking\Actions;
use Co