hmazter/laravel-schedule-list
A lightweight Laravel package that displays all your scheduled tasks in one place, adding a web page and artisan command that list each scheduled command with its cron expression and next run time, so you can verify your schedule without digging through the console kernel.
Architecture fit. A single-purpose console package: it registers one service provider (via Laravel package auto-discovery) and contributes a schedule:list artisan command that introspects the scheduler's registered events and renders them as a table. There is no persistence, no configuration surface, no HTTP layer, and no coupling to application domain code. Architecturally it is about as low-risk as a dependency can be — it is a read-only diagnostic tool that answers "what is actually registered with the scheduler right now," a question most teams currently answer by grepping app/Console/Kernel.php and hoping nothing is registered conditionally. That is a genuine observability gap for on-call engineers.
Integration feasibility. composer require hmazter/laravel-schedule-list followed by auto-discovery; no config publishing, no migrations, no env changes. A spike is under an hour on a known-good version pair. The binding constraint is version compatibility, not integration effort: the package's last release is December 2020, which predates Laravel 9/10/11, PHP 8.1+, and Symfony Console 6. Treat it as a candidate for legacy applications only until proven otherwise.
Technical risk. The security surface is effectively nil (local CLI, no external input, no network, no filesystem writes). The risks that matter are:
schedule:list command in 8.37+. On modern applications this package is either redundant or a command-name collision, which is a confusing failure for the exact audience that runs it during incidents.Schedule::call closures, custom events, sub-minute tasks) or mis-renders cron/timezone/constraint metadata is worse than no tool, because engineers will trust it. This is the highest-severity failure mode and the hardest to detect.composer.lock becomes an audit finding and can block a framework upgrade if its illuminate/* / symfony/console constraints conflict.Key questions.
schedule:list already give us, and what gap (next-run times, human-readable cron, mutex/overlap state, output capture) remains after that?require vs require-dev.Stack fit. Composer + Laravel + PHP is our baseline, so there is no stack impedance. The decision is packaging policy: prefer require-dev so the deploy artifact and production dependency graph stay clean, unless we explicitly want the command available during production incidents — in which case accept the extra production dependency and document it.
Migration path. For Laravel ≥ 8.37 the correct move is to adopt the framework's native schedule:list and not add this package at all. This package's value is confined to applications pinned below that line, or to cases where its output format is materially richer than native — verify that claim side-by-side before assuming it. If richer output is still required, the highest-leverage path is a ~50–150 line internal command or a small fork under our org, pinned to a commit and carried with a patch set; the logic is thin enough that forking is cheaper than dependency risk management.
Compatibility. Validate per application with composer why-not hmazter/laravel-schedule-list against the pinned PHP and Laravel versions, and specifically probe the Illuminate scheduling API surface it touches (Schedule event collection, event display/summary methods, symfony/console table APIs). Note that Laravel 11 relocated schedule definition out of app/Console/Kernel.php (into routes/console.php / bootstrap/app.php); the package operates on whatever is registered into the Schedule instance, so it should still function, but the surrounding assumptions in its README and any kernel-path assumptions deserve a direct test rather than an inference.
Sequencing.
Maintenance. Near-zero runtime maintenance; the entire cost is dependency hygiene. A 2020-vintage package sitting in composer.lock with no path to updates generates recurring security-audit and upgrade-planning noise disproportionate to its value. If adopted broadly, budget a one-time fork and ownership assignment (~1–2 engineer-days) rather than carrying the upstream package indefinitely.
Support. Single-maintainer OSS, 94 stars, issue-tracker support only, no SLA, no release in over four years. That is acceptable for a developer convenience command and unacceptable for anything on the incident-response critical path unless we own the fallback. Set that expectation explicitly before someone puts it in a runbook.
Scaling. Non-issue. CLI-only, single-process, no queries, no memory growth, no runtime overhead on requests or queue workers. Cost scales linearly and trivially with the number of scheduled commands. It cannot affect application throughput.
Failure modes.
schedule:list, producing duplicate or shadowed behavior.Ramp-up. Minutes for any Laravel developer to install and read. The real ramp is organizational: teaching the team when the output is authoritative versus approximate, and pairing it with run history. Budget a short note in the runbook rather than formal training.
Bottom line. Low architectural risk, low integration cost, low operational burden — but the package's core value has been absorbed upstream and its maintenance is effectively ended. Default to the framework's native schedule:list; consider this package only as a time-boxed stopgap for pre-8.37 applications, and prefer a small internal fork over a long-lived dependency on an unmaintained package.
How can I help you explore Laravel packages today?