pierre-arthur/sf-doctor
Symfony Doctor is a diagnostic CLI for Symfony applications. It scans configuration, dependencies, and environment settings to flag common issues, misconfigurations, and health risks, helping developers troubleshoot faster and keep projects running smoothly.
Architecture fit — low for direct adoption on a Laravel stack. The critical finding is a scope mismatch: pierre-arthur/sf-doctor is described as an automated audit tool for Symfony projects. It is a Symfony-ecosystem diagnostic CLI, not a Laravel package. Laravel does sit on Symfony components, but a Symfony-oriented auditor will typically assume Symfony bundles, DI container conventions, and framework config layout that a Laravel application does not have. Direct composer require into a Laravel app is unlikely to yield useful output without adaptation.
Where the fit is real:
Integration feasibility. Presumed shape is a Composer package exposing a console command — a low-ceremony integration (install, invoke, read report). Feasibility is high if the target project is Symfony and the package's PHP/Symfony constraints match. Actual constraints, command name, and output format are unverified and must be confirmed before committing.
Technical risk — moderate-to-high, driven by adoption signals rather than code quality:
Key questions to resolve before any pilot:
dev/alpha/stable)?Stack fit. Not a Laravel package; treat it as a Symfony-only tool with secondary value as a design template. Do not plan a Laravel adoption around it as a dependency.
Decision framing — three viable paths, in order of preference:
php artisan doctor command. This is the highest-leverage outcome for a Laravel-centric org: we get the ideas without the single-maintainer dependency.Migration path. There is no migration — this is greenfield adoption or nothing. Avoid framing it as replacing existing linting/static-analysis (PHPStan, Psalm, Rector); it is complementary if it fills a hygiene-audit gap, redundant if it overlaps them.
Compatibility. Build a small version matrix before piloting: our PHP versions × our Symfony versions × the package's declared constraints. If it supports only the newest Symfony major, our legacy services are out of scope immediately.
Sequencing (suggested):
Maintenance. Expect to own it. With a single maintainer and zero dependents, upstream fixes for our specific issues are unlikely on our timeline. Budget for forking or vendoring the package if it becomes load-bearing, and treat that fork as a maintained internal asset from day one.
Support. GitHub issues only — no SLA, no commercial backing, no security advisory process evident. For a read-only audit tool the security surface is small (it is not a runtime dependency and ships nothing to production), which materially lowers this concern. Confirm it is dev-only and never installed in production images.
Scaling. Negligible concern. It is a per-project CLI run in CI, not a runtime service. Cost scales with pipeline minutes, not traffic. No concurrency, state, or data-store implications.
Failure modes to plan for:
Ramp-up. Low to run (install, invoke, read). Moderate to trust (rule validation takes real projects and a few cycles). Moderate-to-high to extend or fork (unfamiliar single-author codebase, likely thin test coverage). Near-zero transfer cost if we instead take the requirements-only path and build internally.
Bottom line for a TPM. The composite score (10.8, opportunity 11.75) is not corroborated by adoption evidence — 11 stars and 0 dependents is a thin signal, and the score should be weighted accordingly. The package is a low-risk evaluation and a high-risk dependency, and it is aimed at a framework we are not primarily on. Recommend a 1–2 day spike only if we have an active Symfony codebase; otherwise harvest it as a design input for a first-party Laravel audit command and do not add it to the dependency graph.
How can I help you explore Laravel packages today?