Composer JSON Validator
/install composer-json-validator
Composer JSON Validator
Validate and lint PHP Composer composer.json files for structure, dependencies, autoload configuration, and best practices.
Commands
lint — Run all lint checks
python3 scripts/composer_json_validator.py lint composer.json
python3 scripts/composer_json_validator.py lint composer.json --strict
python3 scripts/composer_json_validator.py lint composer.json --format json
python3 scripts/composer_json_validator.py lint composer.json --format markdown
dependencies — Inspect require/require-dev
python3 scripts/composer_json_validator.py dependencies composer.json
python3 scripts/composer_json_validator.py dependencies composer.json --format json
scripts — Inspect scripts section
python3 scripts/composer_json_validator.py scripts composer.json
python3 scripts/composer_json_validator.py scripts composer.json --format markdown
validate — Full validation (structure + lint + summary)
python3 scripts/composer_json_validator.py validate composer.json
python3 scripts/composer_json_validator.py validate composer.json --strict --format json
Flags
| Flag | Description |
|---|---|
--strict |
Exit code 1 on warnings (CI-friendly) |
--format text |
Human-readable output (default) |
--format json |
Machine-readable JSON |
--format markdown |
Markdown report |
Lint Rules (22 checks)
Structure (5)
- Valid JSON syntax
- Required fields:
name,description,type - Valid package name format (
vendor/package) - Valid
typevalue (library,project,metapackage,composer-plugin) licensefield present and valid SPDX identifier
Dependencies (6)
- No duplicate packages across
requireandrequire-dev - Version constraints use valid operators (
^,~,>=, etc.) - No dev-only packages in
require(phpunit, mockery, etc.) - No wildcard
*versions - PHP version constraint present in
require ext-*dependencies are explicit (not*)
Autoload (4)
- PSR-4 autoload defined
- Namespace ends with
\\(PSR-4 convention) - No duplicate namespaces across autoload entries
autoload-devseparate fromautoload
Best Practices (7)
scriptssection present- No
post-install-cmd/post-update-cmdexecuting arbitrary URLs config.sort-packagesenabledminimum-stabilityexplicit when notstableprefer-stableset whenminimum-stabilityis notstable- No hardcoded absolute paths in autoload
- All repository URLs use HTTPS
Exit Codes
| Code | Meaning |
|---|---|
| 0 | No errors (warnings allowed unless --strict) |
| 1 | Errors found (or warnings in --strict mode) |
| 2 | Invalid arguments / file not found |
Example Output
composer.json lint results
==========================
[ERROR] name: Package name must match vendor/package format
[WARN] dependencies: phpunit/phpunit found in require (should be in require-dev)
[WARN] autoload: config.sort-packages not enabled
[INFO] scripts: scripts section present
Summary: 1 error(s), 2 warning(s), 1 info
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install composer-json-validator - After installation, invoke the skill by name or use
/composer-json-validator - Provide required inputs per the skill's parameter spec and get structured output
What is Composer JSON Validator?
Validate and lint PHP Composer composer.json files for structure, dependencies, autoload, and best practices. Use when asked to lint, validate, check, or aud... It is an AI Agent Skill for Claude Code / OpenClaw, with 82 downloads so far.
How do I install Composer JSON Validator?
Run "/install composer-json-validator" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Composer JSON Validator free?
Yes, Composer JSON Validator is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Composer JSON Validator support?
Composer JSON Validator is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Composer JSON Validator?
It is built and maintained by charlie-morrison (@charlie-morrison); the current version is v1.0.0.