hoa/cli
Hoa\Cli is a PHP library for building command-line interfaces, offering abstractions for commands, arguments, options, input/output, and terminal interaction. It fits the modular Hoa ecosystem for structured CLI application development.
Verdict: reject as a production dependency; retain only as reference reading. hoa/cli is a single module from the archived Hoa project — a research-grade, academically structured PHP library collection that was split into dozens of micro-packages. It is 8+ years past its last release, has 12 stars and zero dependents, and the upstream organisation is archived (read-only). There is no scenario in a Laravel codebase where adopting it produces more value than the ~30 lines of Symfony Console / laravel/prompts code it would replace.
Architecture fit
hoa/consistency and hoa/stream, which register a custom hoa:// protocol/stream-wrapper layer via a bootstrap side effect. This is an ambient runtime dependency, not an explicit one — the opposite of Laravel's service-provider/explicit-facade model.AppServiceProvider, and the package will still register global state on boot.laravel/prompts (Laravel 10+) for interactive input, validation and styled output. The package does not fill a gap; it duplicates the platform.Integration feasibility
composer require to fail on platform constraints, or to succeed only with --ignore-platform-reqs — a red flag for a TPM to escalate, not work around.src/ before any spike; the package's own documentation is thin and the project site/DNS is unreliable post-archive.Technical risk
STDIN will hang pipelines unless every call site is guarded — and Laravel's --no-interaction flag will not automatically propagate into a third-party library that never heard of it.Key questions
laravel/prompts + symfony/console? Name the user story.E_ALL and deprecations as errors?--no-interaction, respect STDOUT/STDERR separation, and detect TTY correctly under our CI runner?Stack fit
hoa/cli sits beside it, not on top of it, so we would end up maintaining two output/input abstractions in one process.laravel/prompts for interactive input, symfony/console helpers (Table, ProgressBar, QuestionHelper) for structure, and nunomaduro/termwind for styled output.Migration path
App\Support\Console\InputAdapter), and require a documented diff of what Symfony Console could not do. Delete the spike regardless of outcome.Compatibility
--ignore-platform-reqs as an automatic fail.composer install of the real app, not a scratch project.artisan bootstrap, under --quiet, --no-interaction, and with STDERR redirected.Sequencing
laravel/prompts docs before any install.composer require hoa/cli into a production service.Maintenance
hoa/consistency, possibly hoa/stream) that appears in composer outdated reports and security scans with no remediation available, generating recurring triage noise that a TPM will have to repeatedly waive.Support
Xcallable, hoa://, protocol registration) are unfamiliar to typical Laravel engineers and exist nowhere else in our stack.Scaling
STDIN is absent. Each call site needs defensive guards that a first-party implementation would not.Failure modes
STDIN in CI or a queue worker — jobs time out rather than error.Ramp-up
laravel/prompts and Symfony Console helpers, which have current docs, active maintainers, and existing team familiarity.How can I help you explore Laravel packages today?