.cursor/skills/configuring-horizon/SKILL.md
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:install
Define 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.