laravel/pint
Laravel Pint is an opinionated PHP code style fixer for minimalists. Built on PHP-CS-Fixer, it makes it simple to ensure your code style stays clean and consistent, with zero configuration required and an easy-to-use CLI that works in any Laravel or PHP project.
agent output format auto-selected under Claude Code/OpenCode, stdin support with explicit opt-in, and a Pint/phpdoc_type_annotations_only rule. That is the maintainers responding to agent-generated code entering repositories. If your roadmap includes AI code generation or agentic PRs, automated formatting moves from "nice hygiene" to "required guardrail" — machine-written code drifts in style far faster than human-written code, and reviewers cannot absorb that cost.--parallel, --dirty, --diff, --bail, --test, --with-exit-status, base-config inheritance, and summary-to-file output are the primitives needed to enforce one standard across many packages and services with different baselines. This directly supports a "one engineering standard" platform decision rather than per-team style fiefdoms.--dirty and --diff let you format only changed files, which means you can ship the CI gate before reformatting the legacy codebase — avoiding the "one giant whitespace commit" that destroys git blame and stalls the roadmap for a sprint.http) and routed errors to stderr. Small, but it is the kind of signal a PM cites when asked "is this safe to put in CI?" For a dev-only dependency the blast radius is contained, which keeps the risk conversation short.Adopt when most of these hold:
--test non-zero exit), not a background daemon../vendor/bin/pint, done. A pint.json exists for exceptions, not for authoring a style guide.Look elsewhere — or scope the adoption down — when:
--dirty in CI. Adopting Pint and then never enforcing it is the worst outcome: noise in the config, no benefit.composer update can surface new violations in untouched files. Pin the version if a surprise CI break is unacceptable.Reasonable objections to plan for: the "opinionated" default will overwrite some existing conventions in the first run, and that diff will look enormous. Mitigate with --dirty, one package at a time, and a pre-commit hook so nobody merges unformatted code again.
For executives (one paragraph): Laravel Pint is a free, MIT-licensed, actively maintained code formatter from the Laravel core team — the de facto standard in the PHP/Laravel ecosystem (3,000+ GitHub stars, releases through 2026, built on the mature PHP-CS-Fixer). It is a developer-only dependency, adds no runtime surface to our product, and takes roughly an hour to adopt. The return is reduced review noise, faster PR turnaround, and faster onboarding, because style stops being a discussion. It is not a differentiator and no competitor will notice we use it — it removes friction rather than adding capability. The only real cost is a one-time reformat of existing files, which we can stage incrementally. Recommendation: adopt as a CI gate, scoped to changed files first, with the version pinned.
For engineering leadership / the team:
composer require laravel/pint --dev, one binary, formats PHP to the Laravel preset. Configuration lives in an optional pint.json; presets include laravel, per, psr12, and empty.pint --dirty so only staged/changed files are touched; CI runs pint --test as a blocking gate. --parallel keeps CI time flat as the repo grows; --bail and --with-exit-status make failures readable; a base config lets every package inherit one standard.composer remove and one CI line.agent output format and stdin support, i.e. the maintainers are explicitly handling AI-generated contributions. If we expand AI-assisted coding, this is the cheapest guardrail we can have in place before the volume arrives.How can I help you explore Laravel packages today?