Use this skill whenever the user mentions Horizon by name in a Laravel context. Covers the full Horizon lifecycle: installing Horizon (horizon:install, Sail setup), configuring config/horizon.php (supervisor blocks, queue assignments, balancing strategies, minProcesses/maxProcesses), fixing the dashboard (authorization via Gate::define viewHorizon, blank metrics, horizon:snapshot scheduling), and troubleshooting production issues (worker crashes, timeout chain ordering, LongWaitDetected notifications, waits config). Also covers job tagging and silencing. Do not use for generic Laravel queues without Horizon, SQS or database drivers, standalone Redis setup, Linux supervisord, Telescope, or job batching.
69
85%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Use search-docs for detailed Horizon patterns and documentation covering configuration, supervisors, balancing, dashboard authorization, tags, notifications, metrics, and deployment.
For deeper guidance on specific topics, read the relevant reference file before implementing:
references/supervisors.md covers supervisor blocks, balancing strategies, multi-queue setups, and auto-scalingreferences/notifications.md covers LongWaitDetected alerts, notification routing, and the waits configreferences/tags.md covers job tagging, dashboard filtering, and silencing noisy jobsreferences/metrics.md covers the blank metrics dashboard, snapshot scheduling, and retention configphp artisan horizon:installDefine supervisors in config/horizon.php. The environments array merges into defaults and does not replace the whole supervisor block:
'defaults' => [
'supervisor-1' => [
'connection' => 'redis',
'queue' => ['default'],
'balance' => 'auto',
'minProcesses' => 1,
'maxProcesses' => 10,
'tries' => 3,
],
],
'environments' => [
'production' => [
'supervisor-1' => ['maxProcesses' => 20, 'balanceCooldown' => 3],
],
'local' => [
'supervisor-1' => ['maxProcesses' => 2],
],
],Restrict access in App\Providers\HorizonServiceProvider:
protected function gate(): void
{
Gate::define('viewHorizon', function (User $user) {
return $user->is_admin;
});
}php artisan horizon and visit /horizonhorizon:snapshotconfig/horizon.php before making changes to understand the current supervisor and environment configuration.environments array overrides only the keys you specify. It merges into defaults and does not replace it.timeout less than supervisor timeout less than retry_after. The wrong order can cause jobs to be retried before Horizon finishes timing them out.horizon:snapshot is scheduled. Running php artisan horizon alone does not populate metrics.search-docs for the latest Horizon documentation rather than relying on this skill alone.9d70db0
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.