← ClaudeAtlas

labrodev-naminglisted

Use when naming anything in a Labrodev Laravel project — domains, classes (Actions, Services, Controllers, Data, Queries, Policies, Enums, ...), methods, variables — and whenever invoking an Action/Service or declaring typed parameters. Governs the class-suffix pattern table, the named-arguments callable invocation contract, and the typed-parameter mirror rule (BookingData $bookingData, never $data).
labrodev/laravel-playbook · ★ 0 · Data & Documents · score 73
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