Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Cs Laravel Package

jrmajor/cs

jrmajor/cs is an opinionated coding standard package for PHP projects, bundling PHP-CS-Fixer rules and presets so you can enforce consistent code style across your codebase with minimal configuration and a single install.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. jrmajor/cs is a developer-tooling package, not application runtime code. It belongs to the class of Composer require-dev dependencies that configure or bundle a code-style engine (PHP-CS-Fixer rulesets, presets, or a thin wrapper). For a Laravel/PHP codebase this is architecturally low-risk: it never enters the production autoload path, has no database, queue, HTTP, or container-boot surface, and cannot alter request handling. The correct mental model for a TPM is build-tooling supply chain, not service dependency. It competes for the same slot as Laravel Pint, PHP_CodeSniffer + Slevomat, or a hand-rolled .php-cs-fixer.dist.php. Because the package has 2 stars and 0 dependents, it should be evaluated as an internal convention asset with an external maintainer, not as a supported ecosystem component.

Integration feasibility. Mechanically simple — a single Composer line and a config file, plus wiring into CI and pre-commit hooks. The real feasibility question is authority: a coding-standards package is a normative statement about how your team writes PHP. Adopting a third-party ruleset means accepting someone else's opinions on strict types, array syntax, ordering, and docblocks, and then defending it in review. Feasibility is therefore gated less by engineering than by whether the team wants a curated preset at all. The 2025-12-07 release date is a positive signal of recent activity, but a single recent tag on a 2-star repo does not establish a release cadence.

Technical risk.

  • Single-maintainer / bus-factor 1. Highest-order risk. No dependents means no downstream integration testing, no crowd-sourced bug discovery, and no community pressure on breaking changes.
  • Engine coupling. The package presumably constrains friendsofphp/php-cs-fixer (or Pint) to a version range. If that range is loose, an upstream major (rule renames, config schema changes, --using-cache semantics) can break your pipeline without this package releasing. If it's tight, you are pinned and blocked on upgrades.
  • Composer plugin risk. If the package registers as a type: composer-plugin rather than shipping a plain config, it requires an allow-plugins allowlist entry — treat that as a materially larger trust decision.
  • Governance opacity. No evidence of SECURITY.md, CI matrix, or issue triage. Not fatal for a dev dependency, but it means you own the remediation path.
  • Silent drift. Ruleset updates arriving as a patch release can reformat large portions of the codebase on the next composer update, producing a noisy diff that obscures real changes.

Key questions.

  1. What is the underlying engine and its version constraint — PHP-CS-Fixer, Pint, or bespoke?
  2. Is it a preset/config only, or does it register Composer plugin/script hooks?
  3. Does it publish semantic version tags, and is there a documented BC policy for ruleset changes?
  4. What is the license, and is forking viable (i.e., is the ruleset readable config rather than compiled/obfuscated)?
  5. How does its opinion set diverge from laravel/pint defaults, and is that divergence intentional and defensible?
  6. Are there any runtime require entries (it should be dev-only), and does it transitively pull anything with broad version ranges?
  7. Who on the team will own upgrades and the remediation fork if the maintainer goes inactive?

Integration Approach

Stack fit. Strong fit for a Laravel/PHP codebase already on Composer with an established composer.json scripts block and CI. The natural comparison is Laravel Pint: Pint ships a curated default, is first-party to the Laravel org, and is already installed in most Laravel projects. Adding jrmajor/cs alongside Pint is redundant; the rational adoption pattern is either (a) it replaces the Pint preset as the single source of truth for style, or (b) it is not adopted. Running two style engines is the anti-pattern to avoid. Worth noting the author's proximity to the Laravel tooling ecosystem — that is a quality signal, but it also raises the question of whether the package is a personal preference profile rather than a broadly-vetted standard.

Migration path. Treat this as a greenfield-on-existing-code problem. The steps are: pin the package at an exact version, generate a fixer config that extends the package preset, run it in --dry-run --diff mode across the codebase to size the blast radius, then land a single mechanical "apply formatting" commit that is added to .git-blame-ignore-revs so history stays reviewable. Only after the baseline is clean should CI enforce it. Do not interleave the reformatting commit with functional changes.

Compatibility. Verify PHP version support against your CI matrix (multiple PHP minors in production is common), and confirm the PHP-CS-Fixer constraint resolves against whatever Pint or other dev tools you already have installed — Composer's solver will surface a conflict immediately, which is a cheap early test. Check that the fixer's cache directory is gitignored and that the tool works identically in local, Docker, and CI images so developers don't get divergent output.

Sequencing.

  1. Spike in a throwaway branch: install pinned, run dry-run, measure diff volume and rule disagreements.
  2. Rule-by-rule review — reject or override any rule the team cannot defend; document deliberate deviations in-repo rather than upstream.
  3. Vendor the risk: fork to the org (or add a Composer patch layer) if the maintainer is unresponsive on a blocker.
  4. Land the baseline reformat as an isolated commit; add to blame-ignore.
  5. Wire CI (--dry-run failing the build) and an optional pre-commit hook.
  6. Only then remove any overlapping style tooling.

Operational Impact

Maintenance. Ongoing cost is low but non-zero: one dependency to bump, one config file to curate, one CI job. The subtle cost is ruleset governance — someone must adjudicate rule changes and PR noise, otherwise the preset quietly becomes stale or gets bypassed with inline suppressions that accumulate into debt. Budget a named owner; an unowned style tool degrades into // phpcs:ignore litter within two quarters.

Support. Assume no support. Zero dependents means no Stack Overflow corpus, no third-party blog coverage, and slow or absent maintainer response. The team's effective support contract is "read the source and fork it." This is acceptable for a dev-only formatter and unacceptable if the tool is ever promoted into a gate that blocks releases without a documented fallback.

Scaling. Trivially scalable — it is a deterministic, per-file CPU task. Runtime scales linearly with file count and parallelizes via PHP-CS-Fixer's --parallel. On a large monorepo, expect the full dry-run to take minutes; use the file-based cache and restrict CI runs to changed files on PRs versus a nightly full scan. No concurrency, quota, or state concerns.

Failure modes.

  • Pipeline-blocking format drift after an unpinned upstream release — mitigate with exact version pins and a lockfile committed to VCS.
  • Maintainer abandonment — the package stops tracking PHP-CS-Fixer majors and you are stuck on an old engine or forced to fork.
  • False-positive churn where a rule fights a legitimate pattern (e.g., generated code, migrations, IDE stubs) requiring exclude paths.
  • Silent bypass: developers run the fixer locally with a different config and CI disagrees; or --no-verify on commit hooks makes the CI gate the only real enforcement.
  • Composer plugin prompt in CI causing non-interactive install failure if allow-plugins is unset.
  • Low severity overall: the blast radius is build-time, never runtime, and a composer remove fully reverts it.

Ramp-up. Near-zero for engineers — a formatter is self-teaching via --diff output. The ramp-up cost sits with the adopting TPM/tech lead: an afternoon to size the reformatting diff, a review cycle to ratify the ruleset, and a short written rationale in the repo so future contributors understand why this preset exists instead of Pint. Given 2 stars and 0 dependents, the honest recommendation is: adopt only if a specific rule divergence from Pint delivers concrete value, pin exactly, plan to fork, and otherwise stay on the first-party default.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console