tightenco/tlint
Tlint is Tighten's opinionated command-line linter for Laravel projects. It checks PHP code against Laravel conventions and best practices, helping teams enforce consistent style, catch common issues early, and keep codebases clean and maintainable.
dd/dump/ray left in code, request validation in controllers, Blade spacing, anonymous migrations, route path conventions) as lint rules plus autofixers. That turns "we agreed on this in a PR comment" into a CI gate and a one-command remediation, which is a durable decision rather than a style-guide doc nobody reads.Tighten, Laravel) let new hires and contractors inherit conventions passively instead of through review cycles — relevant when deciding how much onboarding documentation to write versus how much to enforce mechanically.--only targeting, tlint.json config, and checkstyle output (v9.1.0) mean you can ship it in warn-only mode, ratchet it to blocking on changed files, or wire it into existing code-scanning dashboards. The decision is the enforcement posture, not the tool.Consider adopting when:
env() in app code, request()->all(), stray dd()/ray() in commits). These are exactly its target rules.tlint.json instead of per-repo bespoke checks.Look elsewhere or deprioritize when:
tformat.json config. Pin versions and budget for upgrade passes.One data caveat for the decision record: the "dependents: 0" signal is misleading for a CLI tool — it isn't consumed as a library dependency, so Composer dependent counts understate real usage. Weight release cadence and changelog quality over that metric.
For executives (one paragraph): TLint is a free, MIT-licensed command-line tool from Tighten that checks and automatically fixes Laravel-specific code conventions. It's a low-cost, low-risk addition to our existing quality pipeline: no licensing spend, no vendor lock-in, reversible in an afternoon, and it is actively maintained with releases tracking current Laravel, Symfony, and PHP versions. The business value is reduced review friction and faster onboarding — conventions get enforced by tooling instead of consuming senior engineer time in code review, and legacy cleanup work becomes largely mechanical rather than manual.
For engineering leadership: This is an additive layer, not a replacement. It sits alongside Pint (formatting) and PHPStan/Larastan (correctness) and covers the Laravel-idiom rules neither addresses. Adopt in report-only mode first to measure violation volume and CI cost, then ratchet to blocking on changed files. Expect a modest one-time cleanup pass on legacy code using the autofixers, and pin the major version — the project has made breaking rule-set changes in 7.0 and 9.0.
For the engineering team: Install as a dev dependency, commit a tlint.json at repo root, run the Laravel or Tighten preset, and wire the checkstyle reporter into CI. Start with --only on the handful of rules that match our actual recurring review comments rather than enabling everything at once; expand once the baseline is clean. Treat it as a convention enforcer, not a correctness checker — it will not catch type errors or logic bugs, and we should not expect it to.
How can I help you explore Laravel packages today?