- How do I install bamarni/symfony-console-autocomplete for a Laravel artisan project?
- Install it as a dev dependency with composer require --dev bamarni/symfony-console-autocomplete, then generate and source the completion script from your .bashrc or .zshrc. There is no service provider, no config file to publish, and no application bootstrapping required for the common path. Because artisan is a Symfony Console application, the package works by introspecting the console binary rather than by touching your Laravel code.
- Does Laravel artisan already have native shell completion, making this package redundant?
- Recent Symfony Console versions ship a first-party completion command (completion bash, zsh, or fish), and recent Laravel artisan releases inherit that capability. Before adopting this package, check whether your pinned Laravel version already exposes native completion. If it does, standardize on the built-in path and treat this package as unnecessary.
- Which shells does this package support, and does it work on Windows PowerShell?
- It targets Unix-like shells: bash, zsh, and historically fish. There is no PowerShell story, so Windows developers on a heterogeneous team would be left out. If your engineering org is mixed-platform, plan for that gap before rolling it out broadly.
- Is bamarni/symfony-console-autocomplete still maintained and safe to use?
- The last release was 2022-12-21, which means roughly three years of silence spanning multiple Symfony Console major versions. Laravel's artisan surface has also moved on, so undeclared incompatibilities are likely rather than hypothetical. Treat it as dormant: pin it, test it against your exact stack, and plan to retire it.
- What license does this package use, and can I use it in a commercial codebase?
- Package metadata reports the license as NOASSERTION, which is a legal-review blocker rather than a footnote. Inspect the repository's LICENSE file and get sign-off before including it anywhere in a commercial codebase, even as a require-dev entry. Do not assume a permissive license from the repository name or ecosystem.
- How does the autocompletion actually work — does it run PHP on every Tab press?
- Yes. Completion is dynamic: pressing Tab executes the PHP binary and boots the console application so it can introspect available commands, arguments, and options. That means a small latency cost per completion and any bootstrapping side effects run each time. It is a real, if minor, supply-chain and performance consideration worth noting in review.
- How do I remove or uninstall the completion script later?
- Removal is trivial: delete the sourcing line from your dotfile and drop the dev dependency with composer remove. Nothing in your application code or domain layer depends on it, so there is no refactor involved. That low exit cost is a good reason to run a short trial rather than a formal adoption process.
- Should it be a require-dev dependency or a production requirement?
- Install it in require-dev at the monorepo root if you have one, or inside a shared internal tooling package. It should never ship in production images or in CI runners that do not need shell completion. It is developer-experience tooling that sits outside the Laravel request lifecycle entirely.
- Does it work with Laravel 10, Laravel 11, and PHP 8.x with modern Symfony Console?
- That is exactly what you need to verify rather than assume, given the three-year release gap. Test against your specific PHP minor versions, Symfony Console version, Laravel version, and the shells your developers actually use — bash 3.2 on macOS diverges noticeably from bash 5 on Linux. Confirm completion behaves correctly or silently degrades.
- What are the alternatives to bamarni/symfony-console-autocomplete for artisan completion?
- The strongest alternative is the native completion command already shipped in modern Symfony Console and inherited by recent Laravel artisan versions. That path is first-party, maintained, and free. If you are on an older Laravel release, this package can serve as a documented stopgap with an explicit plan to migrate to native completion after upgrading.