php-modernization

Use when modernizing PHP code: PHP 8.1-8.5 features, PSR/PHP-FIG/PER-CS compliance, PHPStan/Rector/PHP-CS-Fixer/PHPat tooling, DTOs/enums/readonly/property hooks, type safety. Triggers: PHP modernization, type safety, PHPStan, Rector, PHP-CS-Fixer, enum, DTO, readonly, strict_types, property hooks,

By netresearch · 362 installs

npx skills add netresearch/php-modernization-skill --skill php-modernization

Source repository · Upstream listing

PHP Modernization Agent contract 1. Discover : uv run ${CLAUDE SKILL DIR}/scripts/introspect.py (cheap), or verify php project.py summary (full, with agent actions[] ). 2. Drill : ... check PM XX per finding. Full output when triaging 3. 3. Apply : uv run ${CLAUDE SKILL DIR}/scripts/modernize loop.py mode dry run . Review transcript before applying. 4. References : load on demand; do not pre load. Reference routing Need Read PHP 8.0 8.3 baseline references/php8 features.md PHP 8.4 references/php 8.4.md PHP 8.5 references/php 8.5.md PSR / PER CS references/psr per compliance.md PHPStan config references/phpstan compliance.md Static analysis references/static analysis tools.md PHP CS Fixer deprecations references/php cs fixer deprecations.md DTOs / VOs / inputs references/type safety.md , references/request dtos.md Adapter / registry references/adapter registry pattern.md Multi version compat references/multi version adapters.md , references/composer package metadata.md Symfony patterns references/symfony patterns.md PSR 15 middleware references/psr15 middleware architecture.md Doctrine edges references/doctrine modernization edges.md API Platform references/api platform edges.md Immutability references/immutability boundaries.md Contracts & invariants references/contracts and invariants.md Mutation testing references/mutation testing.md Migration planning references/migration strategies.md Public API inventory vs consumers references/public api inventory.md PHPUnit 12→13, mock vs stub references/phpunit modernization.md Multi agent dispatch hazards references/multi agent pitfalls.md Reading a PHP config file without running it references/reading php config safely.md Hard guardrails Never apply readonly to Doctrine entities or mapped superclasses (embeddables: see references/doctrine modernization edges.md ). Never run Rector without dry run . Invoke vendor/bin/rector directly — composer script aliases can drop forwarded flags depending on configuration. Never raise PHPStan level without regenerating + committing the baseline. Shrink, never delete. Never apply blanket final to mock targets or extension points without confirmation. Never edit @generated files or files under var/cache/ , vendor/ , node modules/ , .Build/ . Never git checkout files outside your scope in shared trees — use git stash / git diff . Never trust a warm PHPStan cache after vendor change: rm rf /tmp/phpstan var/cache/phpstan first. Never mass substitute createMock → createStub — promote to expects(...) method(...) with(...) . Migration checklist [ ] declare(strict types=1) everywhere [ ] @PER CS , no deprecated aliases [ ] PHPStan ≥9 ( treatPhpDocTypesAsCertain: false ); 10 for new [ ] PHPat for layer boundaries [ ] Return + parameter types on all methods [ ] DTOs over arrays; backed enums over constants [ ] PSR interfaces in type hints [ ] [Override] (8.3+), [SensitiveParameter] (8.2+), typed constants (8.3+) [ ] readonly on DTOs/VOs/events only [ ] Property hooks (8.4); array find/any/all (8.4); pipe (8.5) [ ] PHPUnit 12+: stubs use createStub , mocks createMock + expects (no self::any() in 13) [ ] Rector withComposerBased(symfony: true) (per version SymfonySetList::SYMFONY are @deprecated )