soyhuce/dev-tools
Soyhuce Dev Tools bundles opinionated development tooling for Laravel and PHP projects, standardizing code quality, static analysis, formatting, and testing through shared configurations and sensible defaults. It simplifies maintaining a consistent developer workflow across apps and packages.
composer require --dev soyhuce/dev-tools. This package is tooling for your local/CI workflow — it should never end up in a production composer install --no-dev build.composer.json (require/extra.laravel.providers to confirm auto-discovery), the package README for the exact command names it exposes, and vendor/soyhuce/dev-tools/src/ to see the service provider and any console commands it registers.php artisan vendor:publish --tag=dev-tools-config, then commit config/dev-tools.php so the whole team shares the same settings.php artisan list and look for the command namespace the package registers, then run its main entry point once against your app to confirm the wiring works before adding it to scripts.composer update soyhuce/dev-tools from 4.0.0 should be a no-op for your code."lint", "check", "fix") rather than letting each developer memorize raw invocations. New team members then only need to know composer check.composer check in both). This is where a dev-tools package pays for itself — one definition of "green" instead of two drifting ones.^4.1 in every repository so a Laravel 12 app and a Laravel 11 app still get the same toolchain behaviour. Since 4.1.0 is additive, the constraint bump is safe to roll out in bulk.app/ or from runtime service providers. If you need shared behaviour (e.g. a base test case or a custom rule), extend it in your own tests/ or app/Support/, not by reaching into vendor/.sail composer check alias so containerized and host-based developers behave identically.composer show --direct --no-dev or by building a --no-dev image; a stray require instead of require-dev will pull the whole toolchain into production.composer why-not soyhuce/dev-tools 4.1.0 to identify the real constraint before resorting to --ignore-platform-reqs.php artisan package:discover (or a plain composer dump-autoload) will pick up provider changes; a stale bootstrap/cache/packages.php is the classic "command not found" cause.bootstrap/cache/config.php from a config:cache run will hide your edits to the published config. php artisan config:clear is the first debugging step, always.0 while doing nothing (e.g. no files matched, paths misconfigured). When results look suspiciously clean, run the underlying tool directly with verbose output to confirm it actually scanned your source.How can I help you explore Laravel packages today?