Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Auto Shell Laravel Package

pmjones/auto-shell

AutoShell maps CLI command names to PHP command classes in a chosen namespace, reflecting on each class's main method to build argument and option values. Dependency-free and low-maintenance, it acts as the router for your console commands, returning an Exec object to invoke.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

AutoShell is a zero-dependency CLI router: $argv is passed to a Shell, which maps the command name to a PHP class by PSR-4 convention, reflects on that class's main method to bind arguments and options, and returns an Exec describing the invocation. The README's Front Controller/Router/Route/Action analogy is accurate. Its PDS Skeleton and Composer Script Names alignment signals intentional compatibility with the broader Paul M. Jones ecosystem (Aura/Solar lineage), not with Symfony Console or Artisan.

Architecture fit. Laravel already ships a mature console layer built on Symfony Console (artisan). Introducing AutoShell inside a Laravel application would create a parallel command surface, duplicate dispatcher responsibilities, and break conventional php artisan discoverability. The realistic fit is standalone PHP CLIs, worker scripts, and ops tooling in the same repo or monorepo — not Laravel application commands.

Integration feasibility. Straightforward as a library. Composer install, one bin/console.php bootstrap, PSR-4 namespace and directory mapping, and optionally a PSR-11-backed factory for dependency injection. Options and help are declared via PHP 8 attributes (#[Option], #[Help]), so there is no config file, no service provider, and no publishing step.

Technical risk. Moderate-low. Strengths: no runtime dependencies, MIT license, tiny surface area, a maintainer with a long track record in PHP CLI tooling, and a codebase small enough to vendor or fork. Risks: zero registered dependents (unproven in production), a single maintainer, a hard PHP 8.1+ floor for attributes and readonly, reflection-based dispatch that trades startup cost for zero boilerplate, and no built-in verbosity, progress, interactive prompts, or signal handling.

Key questions. Does the team actually need a second CLI framework alongside Artisan? Which scripts in the estate live outside Laravel? Is PHP 8.1+ acceptable across build and runtime images? Could convention-based class mapping collide with existing directory layouts? Who owns a fork if upstream stalls?

Integration Approach

Stack fit. Poor for Laravel application commands; good for standalone bin/ scripts, cron/queue workers, and operational tooling where Artisan is overkill. Not a replacement for Laravel Zero or Symfony Console where those ecosystems are needed.

Migration path. Start with one or two non-critical scripts — a data-migration runner or a health-check probe — move them off ad-hoc argv parsing, and evaluate in place. Keep Artisan untouched. Do not attempt to bridge the two dispatchers.

Compatibility. PHP 8.1+, PSR-4 autoloading for command classes, optional PSR-11 for the command factory. Output is plain text via injectable stdout/stderr callables — fine for CI and pipe-friendly tools, not for rich terminal UX.

Sequencing. (1) Confirm PHP version and PSR-4 layout. (2) Wrap one non-critical command behind bin/console.php. (3) Route output through the provided callables so logging can be captured downstream. (4) Wire a container-backed factory for DI. (5) Decide on wider rollout. Budget a spike, not a program.

Operational Impact

Maintenance. Low by design: zero dependencies, no transitive supply-chain surface, a README that doubles as a user manual, and a tagged changelog. The trade-off is bus factor of one; plan for vendoring or forking if upstream slows. MIT permits both.

Support. No commercial backing and a very small user base (51 stars, zero declared dependents). Expect self-serve triage and to lean on the source. This is offset by code size — a competent PHP engineer can read the whole project in an afternoon.

Scaling. Comfortable across tens of commands: namespaced classes, composed Options classes, per-command help, and extended help text. It does not attempt subcommand trees, plugins, event wiring, or interactive workflows; growth beyond simple dispatch is a signal to move to Symfony Console or Artisan.

Failure modes. Reflection misconfiguration (wrong main method name, non-nullable option property), option-name collisions across composed Options classes (OptionAlreadyDefined), broken PSR-4 mapping so commands appear to vanish, and uncaught exceptions leaking stack traces if the command factory does not translate them to non-zero exit codes. None are exotic; all are detectable in integration tests.

Ramp-up. Very low. A developer comfortable with PHP attributes and PSR-4 can ship a first command in under an hour. The real learning curve is organizational — agreeing which scripts belong to which CLI framework — not technical.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log
hsluv/hsluv
seampact/codegen
seampact/hooks
seampact/ir
mehedimi/laravel-amp-mail
happones/laravel-vue-i18n-generator
jwerd/inertia-table