dirnbauer/webconsulting-skills · Archived

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.

First seen Jan 24, 2026

Installation

$ npx skills add dirnbauer/webconsulting-skills --skill php-modernization

Summary

  • 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, PHP 8.4, PHP 8.5.

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from dirnbauer/webconsulting-skills · top by installs.

npx skills add dirnbauer/webconsulting-skills

Browse all from dirnbauer/webconsulting-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Also listed on

Alternate registries and mirrors of this skill.

Repository health

Stars 33
License LICENSE
Default branch main
Open issues 0
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,287 B
  • docs SUMMARY.md 342 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 96 installs

SKILL.md

PHP Modernization

Agent contract

  1. Discover: uv run ${CLAUDESKILLDIR}/scripts/introspect.py (cheap), or verifyphpproject.py --summary (full, with agent_actions[]).
  2. Drill: ... --check PM-XX per finding. Full output when triaging >3.
  3. Apply: uv run ${CLAUDESKILLDIR}/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
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
PHPUnit 12→13, mock vs stub references/phpunit-modernization.md
Multi-agent dispatch hazards references/multi-agent-pitfalls.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 createMockcreateStub — 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)

Credits & Attribution

This skill is based on the excellent work by Netresearch DTT GmbH.

Original repository: https://github.com/netresearch/php-modernization-skill

Copyright (c) Netresearch DTT GmbH — Methodology and best practices (MIT / CC-BY-SA-4.0)

Special thanks to Netresearch DTT GmbH for their generous open-source contributions to the TYPO3 community, which helped shape this skill collection. Adapted by webconsulting.at for this skill collection