glhd/laralint
Laralint is a Laravel-aware linting package that scans your codebase for common mistakes, anti-patterns, and convention violations. It helps catch issues early with configurable rules and simple commands that fit into your existing development workflow.
What this release is. glhd/laralint 0.2.0 is a single-change minor release adding Laravel 13 support. That is a compatibility-only signal: no new rules, no API surface change, no deprecations, no breaking changes called out. The material takeaway for a TPM is not the feature but the cadence — the maintainer is tracking an unreleased/upcoming Laravel major ahead of, or alongside, the framework's own release, which is the behavior you want from a dev-tooling dependency.
Architecture fit. Laralint is a development-time linting ruleset for Laravel codebases, not a runtime library. It sits in the require-dev layer alongside Pint/PHP-CS-Fixer/PHPStan and touches two surfaces: developer machines (pre-commit/editor) and CI (a lint job). It has no production runtime footprint, no database surface, no queue/worker interaction, and no request-path latency. Architectural risk is therefore confined to the delivery pipeline, not the application.
Integration feasibility. Low. Adoption is a composer require --dev plus a config file and a CI step. There is no service to provision, no credential, no data migration, and no consumer-facing change. The realistic effort is measured in hours for a first repo and a day or two to standardize across a fleet, dominated by triaging the initial violation backlog rather than by wiring.
Technical risk. Four things matter:
composer.lock.Key questions to resolve before committing:
Stack fit. Fits any Composer-managed Laravel application on PHP 8.x with an existing CI pipeline (GitHub Actions, GitLab CI, Bitbucket). It is complementary to — not a replacement for — Pint and static analysis: Pint normalizes style, static analysis catches type errors, laralint enforces Laravel-idiomatic patterns. Overlap must be confirmed (question 1 above); if it duplicates Pint fixers, adopt one or the other rather than both, to avoid two tools disagreeing on the same file.
Migration path. Purely additive and fully reversible. require-dev only, no production migration, no rollback plan needed beyond removing the CI step. The correct first step is a report-only run against the existing codebase to size the violation count — that number drives every subsequent decision about enforcement scope and timeline.
Compatibility. Verify the constraint set explicitly rather than inferring it from "adds Laravel 13 support." Two checks: (a) does 0.2.0 still satisfy your current Laravel major, and (b) does it require a PHP minor you are not yet on. Pin to an exact version ("glhd/laralint": "0.2.0") and upgrade deliberately with composer update glhd/laralint -W, reviewing the diff between rule output before and after.
Sequencing.
Maintenance. A dev-only dependency with an upgrade obligation that tracks Laravel majors plus occasional rule releases. Roughly one to two hours per upgrade cycle, concentrated on reviewing rule-output diffs. Pin the version; never float ^0.2. Assign a named owner — realistically the platform/developer-experience team, not individual product teams.
Support. Community OSS with no SLA. Escalation path is upstream issues/PRs; the same maintainer organization authored the package and the Laravel 13 support PR, which is encouraging but still a small team. Assume no guaranteed response time and plan accordingly: anything made blocking in CI must have an internal escape hatch (a documented "skip lint" label or a temporary exclusion) so a stale package can never trap a release.
Scaling. Cost scales with lines of code and repo count. On a monorepo, full-repo scans will dominate the lint job's wall time — mitigate with diff-only scanning, caching, or splitting the job per package. CI minutes are the primary consumable; estimate from the spike's runtime × pipeline frequency before a fleet-wide rollout.
Failure modes to design against.
require-dev, removal is a one-line change — keep adoption shallow and avoid investing in a bespoke custom ruleset on top of it.Ramp-up. Low. Developers already run Pint-style tooling, so the mental model is familiar; the incremental learning is the specific Laravel-idiom rules and the local fix command. Budget a brief internal note (how to run locally, how to read output, how to request an exclusion) plus one team briefing. No training course, no certification, no operational runbook beyond the CI job definition.
Assessment of this specific release. 0.2.0 warrants an initial baseline assessment rather than an update to a prior one, since none existed. The change itself is low-risk and additive; the meaningful signal is that the maintainer is proactively tracking Laravel 13. Recommended position: adopt in report-only mode on one repository this quarter, with enforcement contingent on the spike showing a low false-positive rate and a manageable baseline. Do not make it a blocking gate until the pre-1.0 versioning concern is retired by a 1.0 release or by six months of uneventful upgrades.
How can I help you explore Laravel packages today?