laravel/pao
Laravel PAO detects when PHP tools like PHPUnit, Pest, PHPStan, Rector, and Artisan run inside AI agents such as Claude Code or Cursor, swapping verbose output for compact structured JSON. Zero config, works with any PHP project, PHP 8.3+.
phpunit:^13.3.013.2.xrector supportphpstan fixing instructionspest and pest --parallel not displaying fatal errorspest and pest --parallel not working well on errors on beforeEach and afterEachlaravel organizationchore: bumps dependencies
fix: removes style tags from artisan tool
fix: usage with non-supported versions of pest
fix: adds missing tool to make clear to LLMs what tool the output came from
fix: pao's output style being registered during testing
chore: stable version
pest --parallel output being leakparatest / pest --parallelTestResult instead of XML, so we have access to deprecations, warnings, etc: {
"result": "passed",
"tests": 8,
"passed": 7,
"assertions": 5,
"duration_ms": 9,
"skipped": 1,
"incomplete": 1,
"deprecations": 1,
"deprecation_details": [
{"file": "/app/tests/Unit/ExampleTest.php", "line": 14, "message": "This function is deprecated, use newFunction() instead"}
],
"warnings": 1,
"warning_details": [
{"file": "/app/tests/Unit/ExampleTest.php", "line": 23, "message": "Configuration value is suboptimal"}
],
"notices": 1,
"notice_details": [
{"file": "/app/tests/Unit/ExampleTest.php", "line": 32, "message": "Cache miss on key user.42"}
]
}
phpunitdev keyword to composer.jsonartisan support:| Command | Without PAO | With PAO ⚡️ | Reduction |
|---|---|---|---|
about |
528 tokens | 134 tokens | 🔥 74% |
db:show |
390 tokens | 102 tokens | 🔥 73% |
| all other commands supported too... | — | — | — |
fix: --profile option on pest by @RanaMoizHaider in https://github.com/nunomaduro/pao/pull/8
How can I help you explore Laravel packages today?