← ClaudeAtlas

laravel-cloud-readylisted

Prepare a Laravel app for Laravel Cloud — SQS FIFO message groups, edge-cacheable public pages, Horizon removal. Use on `/laravel-cloud-ready`, or when a deploy hits MissingParameter MessageGroupId.
bravros/bravros · ★ 2 · AI & Automation · score 75
Install: claude install-skill bravros/bravros
# laravel-cloud-ready INTENT: close the three gaps that break a Laravel app the first time it runs on Laravel Cloud — FIFO queues, edge caching, and Horizon — before the deploy finds them. Verified against **Laravel 13.25.0**. The mailable/notification asymmetry in § FIFO is framework-internal; re-read the vendor source before trusting it on a newer major. ## 1. SQS FIFO — three paths, three different hooks Laravel Cloud's managed queue is a `.fifo` queue. Every queued object must carry a message group or the push dies with: ``` MissingParameter (Sender): The request must contain the parameter MessageGroupId ``` `SqsQueue::getQueueableOptions()` inspects **the object actually pushed to the queue** — reading `$job->messageGroup` (property) first, then `$job->messageGroup()` (method). Which object that is differs per path, and that is the whole trap: | Path | Object SQS inspects | Hook | `messageGroup()` on the class? | |---|---|---|---| | Job | the job itself | `messageGroup()` | ✅ read directly | | **Mailable** | `SendQueuedMailable` wrapper | override `newQueuedJob()` → `->onGroup()` | ❌ **silently ignored** | | Notification | `SendQueuedNotifications` wrapper | `messageGroup()` | ✅ `NotificationSender` forwards it | **Jobs** — plain method: ```php public function messageGroup(): string { return 'ebook-'.$this->ebookId; } ``` **Mailables** — a `messageGroup()` on the mailable is never read. `SendQueuedMailable`'s constructor copies `connection`, `queue`, `tries