owlcorp/cli-json-lint
A command-line JSON linter for PHP and Laravel projects that validates JSON files, catches syntax errors, and reports clear, actionable output. Add it to Composer scripts, local workflows, or CI pipelines to keep configuration files reliable and consistently checked.
json_decode / jq step to CI? Both options cost an afternoon at most, so the "buy" side of the line here is about convenience and consistency, not about avoiding weeks of engineering.composer.json, malformed API fixtures, corrupt i18n bundles, or invalid OpenAPI/JSON Schema documents can break a deploy or a client integration. If we decide that class of failure is worth blocking on, this package is one of several ways to enforce it; if we decide it isn't, no linter choice matters.require-dev), no runtime footprint in production, no transitive service dependencies. The blast radius of this package failing or being abandoned is approximately zero, which is its strongest argument.Adopt when most of the following hold:
composer require --dev than hand-roll a shell loop. The CLI-first design, batch checking, and non-zero exit codes map directly onto pre-commit hooks and CI jobs.composer remove.composer.json scripts or your CI config, not an architectural commitment.Look elsewhere when:
jq, editor tooling, or a php -r 'json_decode(...)' guard in CI already covers this. Adding a dependency for a duplicate check is negative value.jsonlint for normalization and re-serialization.To executives: This is a minor developer-tooling evaluation with no customer impact and no procurement implication. The package is an MIT-licensed JSON syntax checker used only in build pipelines; it never ships to production and can be removed in minutes. The only business-relevant question is whether we want malformed JSON — broken manifests, corrupt config snapshots, invalid integration fixtures — to fail the build instead of failing in front of a customer. If yes, this is a cheap way to do it; if no, the decision lapses harmlessly. Do not spend leadership time on this beyond a nod.
To engineering leadership: Frame it as a reversible, dev-only dependency with essentially no architectural surface: no service provider, no runtime code path, no transitive SaaS. The real judgment call is maturity — zero adoption signals and an unclear release cadence mean we should treat it as a convenience script we happen to install rather than a maintained platform component, and we should be comfortable with the possibility of vendoring or replacing it. Recommendation: allow it as an optional per-repo tool, explicitly not as an org standard, and don't put it on a dependency-review track heavier than the quarterly inventory pass.
To the delivery teams: If you already gate on JSON validity, this removes a hand-rolled shell step from your CI config and gives you batch checking and clear error output for free. Install as a dev dependency, wire it into pre-commit and CI, confirm it resolves against your PHP version, and note that it checks syntax only — schema or contract validation is a separate tool. If you're not a PHP repo, or your pipeline already runs Prettier/jq, skip it; duplicating a check with a zero-star dependency is the wrong trade.
Ask: Approval for a timeboxed, single-repo trial as a require-dev tool — no org-wide mandate, no production surface — with a note in the dependency inventory that the maintainer profile is thin and a fork-or-replace fallback is acceptable. Revisit only if the tool proves useful across three or more repos.
How can I help you explore Laravel packages today?