home / skills / hoangnguyen0403 / agent-skills-standard / background-processing
This skill helps you implement scalable Laravel background processing using queues, jobs, and events with best-practice guidelines.
npx playbooks add skill hoangnguyen0403/agent-skills-standard --skill background-processingReview the files below or copy the command above to add this skill to your agents.
---
name: Laravel Background Processing
description: Scalable asynchronous workflows using Queues, Jobs, and Events.
metadata:
labels: [laravel, queue, job, events, horizon]
triggers:
files:
['app/Jobs/**/*.php', 'app/Events/**/*.php', 'app/Listeners/**/*.php']
keywords: [ShouldQueue, dispatch, batch, chain, listener]
---
# Laravel Background Processing
## **Priority: P1 (HIGH)**
## Structure
```text
app/
├── Jobs/ # Asynchronous tasks
├── Events/ # Communication flags
└── Listeners/ # Task reactions
```
## Implementation Guidelines
- **Offload Heavy Tasks**: Move any logic taking >100ms to a Queued Job.
- **ShouldQueue Interface**: Add to Listeners for transparent async execution.
- **Redis Driver**: Use Redis for reliable and high-throughput queuing.
- **Job Chaining**: Use `Bus::chain()` for dependent sequential jobs.
- **Job Batching**: Use `Bus::batch()` for parallel task monitoring.
- **Failures**: Define `failed()` method in jobs to handle permanent errors.
- **Monitoring**: Use **Laravel Horizon** for real-time queue observability.
## Anti-Patterns
- **Blocking UX**: **No heavy logic in Request path**: Always defer to Queues.
- **Raw Models**: **No large job payloads**: Pass model IDs, not full objects.
- **Implicit Flow**: **No deep event-loop logic**: Keep listener chains shallow.
- **Silent Failures**: **No unmonitored queues**: Ensure retries and alerts.
## References
- [Job Chaining & Event Patterns](references/implementation.md)
This skill provides a concise, opinionated approach to implementing scalable background processing in Laravel using Queues, Jobs, Events, and Listeners. It focuses on reliable async execution, observability, and patterns that prevent common pitfalls. The guidance emphasizes Redis-backed queues, job chaining and batching, and clear failure handling for production-grade workflows.
The skill organizes async logic into app/Jobs, app/Events, and app/Listeners so responsibilities are explicit and testable. Long-running or CPU-bound logic is moved into queued Jobs, listeners implement ShouldQueue for transparent background execution, and Job chaining/batching coordinates sequential or parallel flows. Monitoring and failure handling rely on Laravel Horizon and job failed() hooks to surface issues and trigger remediation.
When should I use chaining vs batching?
Use chaining for dependent sequential steps that must run in order. Use batching for running many independent jobs in parallel while tracking overall progress and completion.
How do I avoid large job payloads?
Serialize only IDs or minimal DTOs and rehydrate models inside the job. This keeps the queue payload small and avoids stale data and serialization issues.